Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Não consigo encontrar o erro


Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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

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

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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.

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

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!