Ir ao conteúdo
  • Cadastre-se
Johnatan Farias

Pascal Não consigo encontrar o erro

Recommended Posts

Eae galera, eu fiz esse algoritmo mas nao acho o erro q esta dando no programa e também nao sei como resolve-lo.Precimo q me expliquem o erro e me ajudem a resolve-lo, por favor obrigado.

Programa:

procedure Exer20;
            type
              Nomes = array[1..10] of string[10];
              Idades = array[1..10] of integer;
            var sexo,nome:Nomes;
                idade:Idades;
                N,i,idademaiordezoito,Homem25anos,Mulher35anos,Somatotalidade:integer;
                continuar:char;
            begin
              N:=0;
              for i:= 1 to 10 do
                  begin
                    writeln('Qual seu nome?'[N]);
                    readln(nome[N]);
                    writeln('Qual sua idade?'[N]);
                    readln(idade[N]);
                    writeln('Qual seu sexo? M ou F.'[N]);
                    readln(sexo[N]);
                  end;
              for i:= 1 to 10 do
                  begin
                    Somatotalidade:=idade+idade[N];                         ((((ta dando erro aqui)))
                    if (idade[N]>18) then
                         idademaiordezoito:=idade+idade[N]
                    else if (sexo[N]='M')and(idade[N]>25) then
                         Homem25anos:=idade+idade[N]
                    else if (sexo[N]='F')and(idade[N]>35) then
                         Mulher35anos:=idade+idade[N];
                  end;
              writeln('As pessoas soma das idades das pessoas maiores de idade sao,',Idademaiordezoito,'.');
              writeln('A soma da idade dos homens acima 25 anos e',Homem25anos,'.');
              writeln('A soma de todas as idades e,',Somatotalidade,'.');
              writeln('A soma da idade das mulheres acima dos 35 anos e,',Mulher35anos,'.');
              writeln('Deseja pesquisar os dados? S ou N');
              readln(continuar);
              continuar:='S';
              while continuar='S' do
                    begin
                       writeln('escreva o numero de 0 a 9 para verificar os dados.');
                       readln(N);
                       writeln( 'Nome:',nome[N],', Idade:',idade[N],' e sexo:',sexo[N],'.');
                       writeln('deseja continuar a pesquisar os dados? S ou N');
                       readln(continuar);
                     end;
              readln;
            end;

image.png.78545178cfbbdf615a3162f43a8ab182.png

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Johnatan Farias.

 

16 minutos atrás, Johnatan Farias disse:

Somatotalidade:=idade+idade[N];  

 

Se você que "somar as idades, talvez deveria ficar assim:
 

somaTotalIdade:=SomaTotalIdade+idade[N];

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 minutos atrás, Johnatan Farias disse:

Aaaah, então eu teria q fazer isso todas as outras vezes? Com a variável 'homem25anos' e as outra? @Simon Viegas

 

Sua pergunta foi retórica! :)

adicionado 1 minuto depois

Por favor, após corrigir, poste o enunciado e o código completo para analisarmos... caso tenhas dúvidas sobre alguma parte, é só informar tb

 

No aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou tendo problemas novamente, quando executo o algoritmo o programa me manda uma nota musical e um asterisco.

Algoritmo:

procedure Exer20;
            type
              Nomes = array[1..10] of string[10];
              Idades = array[1..10] of integer;
            var sexo,nome:Nomes;
                idade:Idades;
                N,i,idademaiordezoito,Homem25anos,Mulher35anos,Somatotalidade:integer;
                continuar:char;
            begin
              Homem25anos:=0;
              Mulher35anos:=0;
              Somatotalidade:=0;
              idademaiordezoito:=0;
              N:=0;
              for i:= 1 to 10 do
                  begin
                    writeln('Qual seu nome?'[N]);
                    readln(nome[N]);
                    writeln('Qual sua idade?'[N]);
                    readln(idade[N]);
                    writeln('Qual seu sexo? M ou F.'[N]);
                    readln(sexo[N]);
                  end;
              for i:= 1 to 10 do
                  begin
                    Somatotalidade:=Somatotalidade+idade[N];
                    if (idade[N]>18) then
                         idademaiordezoito:=idademaiordezoito+idade[N]
                    else if (sexo[N]='M')and(idade[N]>25) then
                         Homem25anos:=Homem25anos+idade[N]
                    else if (sexo[N]='F')and(idade[N]>35) then
                         Mulher35anos:=Mulher35anos+idade[N];
                  end;
              writeln('As pessoas soma das idades das pessoas maiores de idade sao,',Idademaiordezoito,'.');
              writeln('A soma da idade dos homens acima 25 anos e',Homem25anos,'.');
              writeln('A soma de todas as idades e,',Somatotalidade,'.');
              writeln('A soma da idade das mulheres acima dos 35 anos e,',Mulher35anos,'.');
              writeln('Deseja pesquisar os dados? S ou N');
              readln(continuar);
              continuar:='S';
              while continuar='S' do
                    begin
                       writeln('escreva o numero de 0 a 9 para verificar os dados.');
                       readln(N);
                       writeln( 'Nome:',nome[N],', Idade:',idade[N],' e sexo:',sexo[N],'.');
                       writeln('deseja continuar a pesquisar os dados? S ou N');
                       readln(continuar);
                     end;
              readln;
            end;

Executando:

image.thumb.png.20e860b87e02b864c112b1eff145d9a1.png

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O sei código está compilando?

 

Eu desconheço essa sintaxe:

33 minutos atrás, Johnatan Farias disse:

writeln('Qual seu nome?'[N]);

 

Esses [N] ai não tem nada a ver...

 

Tente usar algo assim:

writeln('Qual seu nome?');

 

Simplesmente remova-os...

 

Obs.: qual o compilador que está usando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas rapaz, o erro era só essa chave, credo. Obrigado pela ajuda

Eu uso o Lazarus

adicionado 7 minutos depois

Você consegue ver outro erro na soma? porque ta somando tudo errado e eu n to consigo descobrir o erro

Compartilhar este post


Link para o post
Compartilhar em outros sites
31 minutos atrás, Johnatan Farias disse:

Você consegue ver outro erro na soma? porque ta somando tudo errado e eu n to consigo descobrir o erro

 

Por favor, poste seu código completo para analisarmos.

adicionado 2 minutos depois

Obs.: não fiz testes, mas possivelmente seja necessário INICIALIZAR AS VARIÁVEIS que acumulam os valores, ou seja, como está dentro de uma procedure, é provável que as variáveis não sejam zeradas automaticamente...

 

Ex.:

Somatotalidade:=0;

Isso para cada uma delas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa. O que significa:

1 hora atrás, Johnatan Farias disse:

maiores de

Inclui os número ou não?... por exemplo, quem tem 18 é maior de idade ou não? Tem que ter cuidado com isso.

adicionado 2 minutos depois
4 minutos atrás, Johnatan Farias disse:

Eu fiz isso, tá no começo do algoritmo, aquele q eu mandei no primeiro post

Precisamos do código atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites
23 minutos atrás, Simon Viegas disse:

Outra coisa. O que significa:

Inclui os número ou não?... por exemplo, quem tem 18 é maior de idade ou não? Tem que ter cuidado com isso.

adicionado 2 minutos depois

Precisamos do código atual.

Codigo atual:

procedure Exer20;
            type
              Nomes = array[1..10] of string[10];
              Idades = array[1..10] of integer;
            var sexo,nome:Nomes;
                idade:Idades;
                N,i,idademaiordezoito,Homem25anos,Mulher35anos,Somatotalidade:integer;
                continuar:char;
            begin
              Homem25anos:=0;
              Mulher35anos:=0;
              Somatotalidade:=0;
              idademaiordezoito:=0;
              N:=1;
              for i:= 1 to 10 do
                  begin
                    writeln('Qual seu nome? ');
                    readln(nome[N]);
                    writeln('Qual sua idade? ');
                    readln(idade[N]);
                    writeln('Qual seu sexo? M ou F. ');
                    readln(sexo[N]);
                  end;
              for i:= 1 to 10 do
                  begin
                    Somatotalidade:=Somatotalidade+idade[N];
                    if (idade[N]>18) then
                         idademaiordezoito:=idademaiordezoito+idade[N]
                    else if (sexo[N]='M')and(idade[N]>25) then
                         Homem25anos:=Homem25anos+idade[N]
                    else if (sexo[N]='F')and(idade[N]>35) then
                         Mulher35anos:=Mulher35anos+idade[N];
                  end;
              writeln('As pessoas soma das idades das pessoas maiores de idade sao, ',Idademaiordezoito,'.');
              writeln('A soma da idade dos homens acima 25 anos e ',Homem25anos,'.');
              writeln('A soma de todas as idades e, ',Somatotalidade,'.');
              writeln('A soma da idade das mulheres acima dos 35 anos e, ',Mulher35anos,'.');
              writeln('Deseja pesquisar os dados? S ou N');
              readln(continuar);
              continuar:='S';
              while continuar='S' do
                    begin
                       writeln('escreva o numero de 0 a 9 para verificar os dados.');
                       readln(N);
                       writeln( 'Nome:',nome[N],', Idade:',idade[N],' e sexo:',sexo[N],'.');
                       writeln('deseja continuar a pesquisar os dados? S ou N');
                       readln(continuar);
                     end;
              readln;
            end;

 

Enunciado da questão na apostila:

"Faça um algoritmo utilizando vetores e o type, para receber os dados de 10 pessoas. Os dado a serem recebidos são: Nome, tem quer ser apenas 10 carateres, idade e sexo. Os resultados a serem mostrados são?

A -) A soma das pessoas maiores de idade:

B -) A soma das pessoas com sexo masculino e idade maior de 25 anos;

c -)A soma de todas as idade;

d -)A soma das pessoas com sexo feminino e idade maior que 35 anos;

e -) Após os resultados o usuario poderá verificar os dados quantas vezes desejar. "

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

1#

Você me citou:

17 minutos atrás, Johnatan Farias disse:
37 minutos atrás, Simon Viegas disse:

Outra coisa. O que significa:

Inclui os número ou não?... por exemplo, quem tem 18 é maior de idade ou não? Tem que ter cuidado com isso.

adicionado 2 minutos depois

Precisamos do código atual.

Mas não me respondeu...

 

 

 

2#

Se está usando i nos for, teria que usar o i nos vetores. Você está usando N. (use a ferramenta para substituir "[N]" por [i ]")

 

 

***

 

No aguardo.

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

×