Ir ao conteúdo
  • Cadastre-se

Ajuda em algoritmo com vetores


Visitante: Tousen

Posts recomendados

Visitante: Tousen
 

Tenho q fazer o algoritmo abaixo mas não estou conseguindo; está dando um erro q não estou conseguindo encontrar. (não reparem em erros gritantes sou iniciante em pascal). Segue abaixo a atividade e o algoritmo.

(Utilizar vetor)

Criar algoritmo q leia

sexo, idade e nome de 15 pessoas

sendo mulheres, imprimir a soma das idades

sendo homens, imprimir a quantidade dos mesmos

e no final imprimir todos os nomes

--------------------------------------------------------------------------

--------------------------------------------------------------------------

program ahva;

var

idade: array[1..15] of integer;

sexo[1] : array[1..15] of char;

nome: array[1..15] of char;

countm,cnt,somaf : integer;

somaf := 0

countm := 0

begin

for cnt := 1 to 15 do

begin

writeln ('Digite um nome:');

readln ( nome[cnt] );

writeln ('Digite o sexo correspondente: (escreva "f" para feminino e "m" para masculino');

readln (sexo[cnt]);

writeln ('Digite a idade correspondente:'>;

readln (idade[cnt]);

end;

for cnt := 1 to 15 do

begin

if sexo[cnt] = 'f' then begin

somaf := somaf + idade[cnt];

end

else if sexo[cnt] := 'm' then begin

countm := countm + 1;

end

else begin

writeln ('sexo inv*lido, deveria ser digitado "f" ou "m"');

end;

end;

writeln ('A soma das idades femininas equivalem a:', somaf);

writeln ('Houve a entrada de', countm, 'pessoas do sexo masculino');

writeln ('Os nomes inseridos foram os seguintes:');

for cnt := 1 to 10 do begin

writeln ( nome[cnt] );

end;

end.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Tenho q fazer o algoritmo abaixo mas não estou conseguindo; está dando um erro q não estou conseguindo encontrar. (não reparem em erros gritantes sou iniciante em pascal). Segue abaixo a atividade e o algoritmo.

(Utilizar vetor)

Criar algoritmo q leia

sexo, idade e nome de 15 pessoas

sendo mulheres, imprimir a soma das idades

sendo homens, imprimir a quantidade dos mesmos

e no final imprimir todos os nomes

--------------------------------------------------------------------------

--------------------------------------------------------------------------

program ahva;

var

idade: array[1..15] of integer;

sexo[1] : array[1..15] of char;

nome: array[1..15] of char;

countm,cnt,somaf : integer;

somaf := 0

countm := 0

begin

for cnt := 1 to 15 do

begin

writeln ('Digite um nome:');

readln ( nome[cnt] );

writeln ('Digite o sexo correspondente: (escreva "f" para feminino e "m" para masculino');

readln (sexo[cnt]);

writeln ('Digite a idade correspondente:'>;

readln (idade[cnt]);

end;

for cnt := 1 to 15 do

begin

if sexo[cnt] = 'f' then begin

somaf := somaf + idade[cnt];

end

else if sexo[cnt] := 'm' then begin

countm := countm + 1;

end

else begin

writeln ('sexo inv*lido, deveria ser digitado "f" ou "m"');

end;

end;

writeln ('A soma das idades femininas equivalem a:', somaf);

writeln ('Houve a entrada de', countm, 'pessoas do sexo masculino');

writeln ('Os nomes inseridos foram os seguintes:');

for cnt := 1 to 10 do begin

writeln ( nome[cnt] );

end;

end.

Olá,

A lógica do seu código está quase toda certinha.

Existe alguns erros na sintaxe.. abaixo fiz algumas alterações.

program ahva;
var
idade :array[1..15] of integer;
(*
sexo[1] :array[1..15] of char;
//essa sintaxe do nome da variável está incorreta
*)
sexo :array[1..15] of char;
(*
nome :array[1..15] of char;
//para o nome seria melhor usar string em detrimento do char
*)
countm,
cnt,
somaf :integer;
(*
somaf := 0
countm := 0
//a inicialização das variáveis devem ficar dentro do programa principal

OBS.: De qualquer forma, após as intrunções devem se colocar ";".
*)

BEGIN
somaf:= 0;
countm:= 0;
for cnt:= 1 to 15 do
begin
writeln('Digite um nome:');
readln(nome[cnt]);
writeln('Digite o sexo correspondente: (escreva "f" para feminino e "m" para masculino');
readln(sexo[cnt]);
writeln('Digite a idade correspondente:');
readln(idade[cnt]);
end;

for cnt := 1 to 15 do
begin
if sexo[cnt] = 'f' then
begin
somaf := somaf + idade[cnt];
end
else
if sexo[cnt] = 'm' then
begin
countm := countm + 1;
end
else
begin
writeln ('sexo inv*lido, deveria ser digitado "f" ou "m"');
end;
end;

writeln ('A soma das idades femininas equivalem a:', somaf);
writeln ('Houve a entrada de', countm, 'pessoas do sexo masculino');
writeln ('Os nomes inseridos foram os seguintes:');

for cnt := 1 to 10 do
begin
writeln(nome[cnt]);
end;
end.

***

Algumas dicas

1) Uso de constantes

Você pode usar uma constante para controlar o total de cadastro possíveis. Assim, onde tem "15" você usaria uma contante com esse valor, daí se quiser alterar ele, por exemplo para fazer testes, bastaria alterar somente o valor da constante e não e mudando cada parte onde usa esse valor

2) Processamento direto na leitura

Uma opção de solução seria ao passo que ir lendo os dados, já fazendo a apuração, assim teria um único laço de repetição. Mas do jeito que está, no caso lendo os valores e depois, separadamente, processa um por um, também está legal.

3) Uso de registros

Não sei se você já viu "record" (registro) e nem se pode usar, mas o Pascal tem esse recuros que "agrupa" os dados numa única estrutura.

ex.:

var
pessoas : array[1..15] of record
idade :integer;
sexo :char;
nome :string;
end;

para acessa um campo, basta usar ".".

ex.:

writeln('IDADE : ',pessoas[2].idade);

Por ai vai.

No aguardo.

Abraços

Simon Viegas

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

 

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!