Ir ao conteúdo
  • Cadastre-se

Projeto final do modulo, alguns erros no codigo


Posts recomendados

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.

Link para o comentário
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

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!