Ir ao conteúdo
  • Cadastre-se
Victor Hugo B.S

Projeto final do modulo, alguns erros no codigo

Recommended Posts

Olá pessoal do Clube do Hardware, sou novo aqui e precisava de uma ajudinha de vocês, estou no meu exercício final do modulo de lógica de programação e não consigo de jeito nenhum fazer. Poderiam me ajudar ?

O exercício diz o seguinte: 

Uma empresa decidiu fazer um levantamento com relação aos candidatos que se apresentaram para o preenchimento de vagas no seu quadro de funcionários. Supondo que você seja o programador dessa empresa, desenvolva um algoritmo que receba os seguintes dados: Nome, Idade, Sexo (M ou F), experiência do serviço (S ou N) e ainda, se o candidato possuir experiência, informá-la em número de anos.

Calcule e mostre:

1. O número de candidatos do sexo feminino;

2. O número de candidatos do sexo masculino;

3. O número de homens que já possui experiência no serviço;

4; O número de homens que não possuem experiência no serviço;

5. O número de mulheres que já possuem experiência no serviço;

6. O número de mulheres que não possuem experiência no serviço;

7. O nome do candidato com maior tempo de experiência no serviço;

8. A soma de todas as idades;

9. A média de todas as idades;

10. A média de todas as idades do sexo feminino;

11. A média de todas as idades do sexo masculino;

 

Eu fiz todo o código porém está com alguns erros que não consigo resolver, segue abaixo o código:

 

program Programa_Final;

{$APPTYPE CONSOLE}

uses
  SysUtils;

VAR Nome: Array [1..99999] of String;
  VAR Idade, TExp: Array [1..99999] of Integer;
  VAR Sexo, Exp: Array [1..999999] of Char;
  Var I: Integer;
  Quant, Numero_Feminino, Numero_Masculino, NMasEXP, NFemEXPm, NMasEXPN, NFemEXPN: Integer;
  NumeroMaior, NumeroMenor, Soma: Integer;
  Media, MediaF, MediaM: Real;


begin

Writeln('Digite quantos candidatos se apresentaram');
Readln(Quant);

For I:= 1 to Quant DO
Begin
Writeln('Digite o nome');
Readln(Nome[I]);

Writeln('Digite a idade');
Readln(Idade[I]);

Writeln('Digite o sexo. M ou F');
Readln(Sexo[I]);

Writeln('Possui experiencia ? S/N');
Readln(Exp[I]);

IF Exp[I] = 'S' THEN
Begin
Writeln('Quantos anos de experiencia voce tem');
Readln(TExp[I]);
End;

End; //CASO DE ERRO COLOCA O END NO FIM!!!! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX



IF Sexo[I] = 'F' THEN   //1
Begin
Numero_Feminino:= Numero_Feminino+1;
End;

IF Sexo[I] = 'M' THEN  //2
Begin
Numero_Masculino:= Numero_Masculino+1;
End;

IF Sexo[I] = 'M' THEN   //3
Begin
IF Exp[I] = 'S' THEN
Begin
NMasEXP:= NMasEXP+1;
End;
End;

IF Sexo[I] = 'M' THEN   //4
Begin
IF Exp[I] = 'N' THEN
Begin
NMasEXPN:= NMasEXPN-1;
End;
End;

IF Sexo[I] = 'F' THEN  //5
Begin
IF Exp[I] = 'S' THEN
Begin
NMasEXP:= NFemEXP+1;
End;
End;

IF Sexo[I] = 'F' THEN  //6
Begin
IF Exp[I] = 'N' THEN
Begin
NMasEXPN:= NMasEXPN-1;
End;
End;

IF I = 1 Then     //7                  //AQUI ESTÁ ERRADO, NÃO TENHO IDEIA DE COMO FAZER
          Begin
            NumeroMaior := Exp[I];
          End

          Else
            Begin
              IF Exp[I] > NumeroMaior Then
            Begin
              NumeroMaior:= Exp[I]
            End;
            End;

            IF I = 1 Then
              Begin
                NumeroMenor:= Exp[I];
              End

              Else
                Begin
                  IF Exp[I] < NumeroMenor Then
                Begin
                  NumeroMenor:= Exp[I]
                End;
                End;

Soma:= Idade[I] + Soma; //8

Media:= Idade[I]/Quant; //9

IF Sexo[I] = 'F' THEN   //10
Begin
MediaF:= Idade[I]/Quant;
End;

IF Sexo[I] = 'M' THEN     //11
Begin
MediaM:= Idade[I]/Quant;
End;

Writeln('O número de candidatos do sexo feminino e ',Numero_Feminino);
Writeln('O número de candidatos do sexo masculino e ',Numero_Masculino);
Writeln('O número de homens que já possui experiência no serviço ',NMasEXP);
Writeln('O número de homens que não possuem experiência no serviço ', NMasEXPN);
Writeln('O número de mulheres que já possuem experiência no serviço ',NFemEXP);
Writeln('O número de mulheres que não possuem experiência no serviço ',NFemEXPN);
Writeln('O nome do candidato com maior tempo de experiência no serviço ',NumeroMaior);
Writeln('A soma de todas as idades ',Soma);
Writeln(' A média de todas as idades ',Media);
Writeln('A média de todas as idades do sexo feminino ',MediaF);
Writeln('A média de todas as idades do sexo masculino ',MediaM);
Readln;


end.
 

Espero que possam me ajudar, valeu pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, tomei a liberdade de editar um pouco o código

 


program Programa_Final;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Type
  TPeople = record
    Nome  : ShortString;
    Idade : byte;
    Xp     : char;
    XpValue : byte;
    Sexo   : char;
end;


VAR
 Pessoa : Array of TPeople;
 Numero_Feminino, Numero_Masculino, NMasEXP, NFemEXP : Integer;
 SomaIdade : integer;
 SIdadeM, SidadeF : integer;
 Quant, i : integer;

 CandidatoXp : integer;


begin

// inicializar variaveis
Numero_Feminino := 0;
Numero_Masculino := 0;
NMasEXP := 0;
NFemEXP := 0;
SomaIdade := 0;
SIdadeM := 0;
SidadeF := 0;
CandidatoXp := 0;

Writeln('Digite quantos candidatos se apresentaram');
Readln(Quant);

// Cria o array do tamanho solicitado
SetLength(Pessoa,Quant);

For I:= low(pessoa) to high(pessoa) DO
Begin
Writeln('Digite o nome');
Readln(pessoa[i].Nome);

Writeln('Digite a idade');
Readln(pessoa[i].Idade);
SomaIdade := SomaIdade + pessoa[i].Idade;

Writeln('Digite o sexo. M ou F');
Readln(pessoa[i].Sexo);


if Pessoa[i].Sexo = 'F' then
begin
  inc(Numero_Feminino);
  SidadeF := SidadeF + pessoa[i].Idade;
end
else
begin
  inc(Numero_Masculino);
  SidadeM := SidadeM + pessoa[i].Idade;
end;

Writeln('Possui experiencia ? S/N');

Readln(pessoa[i].xp);

if  Pessoa[i].Xp = 'S' then
begin
  if Pessoa[i].Sexo = 'F' then
  inc(NFemEXP)
  else
  inc(NMasEXP);

  Writeln('Quantos anos de experiencia voce tem');
  Readln(pessoa[i].xpvalue);

  //verificar se este candidato tem mais experiencia

  if (CandidatoXp = -1) or (Pessoa[i].XpValue > pessoa[CandidatoXp].XpValue) then
  CandidatoXp := i;

end;


End; //CASO DE ERRO COLOCA O END NO FIM!!!! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


Writeln('O número de candidatos do sexo feminino e ',Numero_Feminino);
Writeln('O número de candidatos do sexo masculino e ',Numero_Masculino);
Writeln('O número de homens que já possui experiência no serviço ',NMasEXP);
Writeln('O número de homens que não possuem experiência no serviço ',numero_masculino - NMasEXP);
Writeln('O número de mulheres que já possuem experiência no serviço ',NFemEXP);
Writeln('O número de mulheres que não possuem experiência no serviço ', numero_feminino - NFemEXP);
if CandidatoXp <> -1 then
Writeln('O nome do candidato com maior tempo de experiência no serviço ',pessoa[candidatoXp].NOME);

Writeln('A soma de todas as idades ',Somaidade);
Writeln('A média de todas as idades ',Formatfloat('0.00',SomaIdade / length(Pessoa) ));

if Numero_Feminino > 0 then  // impossível dividir por ZERO
Writeln('A média de todas as idades do sexo feminino ',Formatfloat('0.00',SidadeF / Numero_Feminino));
if Numero_Masculino > 0 then
Writeln('A média de todas as idades do sexo masculino ',Formatfloat('0.00',SidadeF / Numero_Masculino));

Readln;
 

 

Se tiver alguma dúvida só perguntar

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×