Ir ao conteúdo

Posts recomendados

Postado

Estou com uma duvida no pascalzim, estou aprendendo o comando array, so que exitem exercicos que pedem para eu listar os nomes dos produtos ou nome dos aluno como no seguinte exercios

 

1.      Faça um programa que receba o nome e a nota de oito alunos e mostre o relatório a seguir:

 

Digite o nome do 1º aluno: Carlos

Digite a nota do Carlos: 8

Digite o nome do 2º aluno: Pedro

Digite a nota do Pedro: 5

 

Relatórios de Notas

Aluno             Nota

Carlos            8.0

Pedro             5.0

 

Meu problema é  que quando ponho no Writeln ();  uma variavel por exemplo Nome

 ou  Nome[1] so parece uma letra da variavel que eu coloquei e não a todos os char que eu ditei no Readln

 

gostaria de saber como resolver isso

 

Em anexo um exemplo

 

Program Lista4Exercicio9 ;
Var
nome: array[1..5] of Char ;
i:integer;
Soma:real;
Begin
  Writeln('--------------------------------Lista 4 Exercicio 9------------------------------');
  for i := 1 to 5 do
  begin
    Write('Digite o ',i,' nome:');
    Readln(Nome[i]);
  end;
  Writeln('');
  Writeln('os nomes digitados foram ');
  Writeln('');
 
  Writeln('',Nome[1],' + ',Nome[2],' + ',Nome[3],' + ',Nome[4],' + ',Nome[5],');
End.

 

  • Membro VIP
Postado

Olá @Augusto G rocha.

 

O tipo char só aceita um caractere. Para o seu contexto, você poderia usar o string, que aceita de 0 a 255 caracteres.

 

PS: na último Writeln() você deve remover aquela "vírgula" e "aspas simples" do final... pois está dando erro de sintaxe...
PS2: no caso seriam duas "aspas simples", assim como você colocou na última linha, mas de qualquer forma não tem necessidade.

PS3: resumindo: remova as aspas simples do início e sua vírgula, assim como a vírgula a aspas simples do final. (não precisa começar com textos, nem muito menos terminar com texto... pode usar variável de boa)

 

No aguardo.

Postado

Obrigado, resolvi o problema da questão que eu postei mas tenho outra duvida

 

Program Pzim ;
Var
Nome: Array [1..10] of String;
Nota:Array [1..10] of integer;

M,O:integer;

Begin



for M := 1 to 10 do
begin
Writeln('Digite o nome do ',M,' Aluno');
  Readln(Nome[M]);
end;


																						 
for O := 1 to 10 do 
begin
  Writeln('Digite a nota final do aluno',Nome[M]);
  Readln(Nota[O]);
end;


Writeln('');
Writeln('RELATORIO FINAL DE NOTAS');
WriteLn('Aluno   Nota');

for M := 1 to 10 do
begin
  Writeln(Nome[M]);
end;



for O := 1 to 10 do
begin
  Writeln(Nota[O]);
end;
  
End.

 

Na linha onde esta escrito

 

for O := 1 to 10 do 
begin
  Writeln('Digite a nota final do aluno',Nome[M]);
  Readln(Nota[O]);
end;

O programa le sem problemas o read mas só  aparece o primeiro nome da variável  Nome[m]

 

Tentei fazer desta forma

 

																						 
for O := 1 to 10 do for M := 1 to 10 do
begin
  Writeln('Digite a nota final do aluno',Nome[M]);
  Readln(Nota[O]);
end;

Dai o programa roda mas ele faz a pergunta 100 vezes não sei como proceder nesse cado para corta esse loop porque o pascal não aceita and para isso.

 

gostaria que ele colocasse o nome do aluno baseado la primeira array de variaves Nome

  • Membro VIP
Postado

Vamos lá:
 

2 horas atrás, Augusto G rocha disse:

Var
  Nome:Array [1..10] of String;
  Nota:Array [1..10] of integer;

 

Você tem 2 vetores. Um para cada atributo (nome e nota) do aluno. Então, o mais sensato é correlacionar as posições, ou seja, para um mesmo valor de posição, teremos um dados para um mesmo aluno.

 

Resumindo: a nota final do aluno que o nome está em nome na posição i, vai ter sua nota nesta mesma posição i lá em Nota.

 

Logo poderia ser algo do tipo:

for O:=1 to 10 do
  begin
  Writeln('Digite a nota final do aluno',Nome[O]);
  Readln(Nota[O]);
  end;


Obs.: Como padronização, utilize apenas a variável i como controle. A variável pode ser reutilizada sem problemas, pois ela não serve para armazenar dados, mas sim de "auxiliar para percorrer o vetor".

 

PS: Veja, no seu contexto, os array servem para facilitar a leitura de vários dados de alunos diferentes. Já para "um aluno mesmo ter mais de uma dado", ai você pode entrar no conceito de "registros", que no Pascal fica como "record". Por enquanto faça assim com 2 vetores, depois, se quiser, explicamos como fazer com um record (combinado com um vetor).

 

No aguardo

  • Membro VIP
Postado

Por favor, poste aqui seu código para darmos uma analisada e também poder servi de base para outros visitantes.

 

Obs.: chegou a fazer com record? caso não, e queira implementar, é só avisar!

 

No aguardo.

 

Postado

Por enquanto não tive essa aula kkk, o que eu não sabia era o uso do String e do i como variável unica

de qualquer forma segue o código pronto 

 

Program Lista4Exercicio10 ;
Var
Nome: Array [1..10] of String;
Nota:Array [1..10] of integer;

i:integer;

Begin
Writeln('--------------------------------Lista 4 Exercicio 10------------------------------');


for i := 1 to 10 do
begin
Writeln('Digite o nome do ',i,' Aluno');
  Readln(Nome[i]);
end;


																						 
for i := 1 to 10 do 
begin
  Writeln('Digite a nota final do aluno: ',Nome[i]);
  Readln(Nota[i]);
  
end;


Writeln('');
Writeln('RELATORIO FINAL DE NOTAS');
WriteLn('Aluno >>>  Nota');

for i := 1 to 10 do
begin
  Writeln(Nome[i],' >>> ',(Nota[i]));
end;


End.

 

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!