Ir ao conteúdo

Posts recomendados

Postado

Fiz um algoritmo que pega um determinado valor de alunos, soma 3 notas e faz a media e ao final de cada aluno aparece a média {sem o comando Clrscr;} mas quando coloco o comando clrscr n aparece a média de cada aluno, somente do ultimo. 

Preciso entender um jeito para limpar o aluno anterior após aparecer a média, se alguém puder me instruir fico grato fico grato :D

Segue o código:

Program Exercicio_9 ;
Var aluno: string;
    nota1, nota2, nota3, Valor, cont: integer;
    Media, Soma: Real;
 Begin
   Clrscr;
     Writeln(upcase('----------Programa média de alunos----------'));
       Writeln('digite o numero de alunos que deseja calcular a media');
       Read(Valor);
     Soma:=0;
     nota1:=0;
     nota2:=0;
     nota3:=0;
   While cont < valor do
     Begin
       clrscr;      
         inc(cont);
           Writeln('---------- Média de Alunos----------');
	      Writeln('Digite o nome do aluno ', cont, ': ');
	      Read(aluno);
	      Writeln('Digite a primeira nota: ');
	      Read(nota1);
	      Writeln('Digite a segunda nota: ');
	      Read(nota2);
	      Writeln('Digite a terceira nota: ');
	      Read(nota3);
	        Soma:= nota1+nota2+nota3;
	          Media:=soma/3;   
	      Writeln('A média do aluno', cont, ' é: ', Media :2:2);
		  	     
	end;
	 Repeat
    Until
  Keypressed;    	     
 End.

   

  • Curtir 1
Postado

@AnonymousLPH     você esqueceu de colocar um readln no final do loop while e é melhor usar o readln ao invés de apenas read ,  então seu código poderia ser assim  :

Program Exercicio_9 ;
Var 
  aluno: string;
  nota1, nota2, nota3, Valor, cont: integer;
  Media, Soma: Real;
Begin
  Clrscr;
  Writeln(upcase('----------Programa média de alunos----------'));
  writeln;
  Write('digite o numero de alunos que deseja calcular a media ');
  Readln(Valor);
  Soma:=0;
  nota1:=0;
  nota2:=0;
  nota3:=0;
  While cont < valor do
  Begin
    clrscr;      
    inc(cont);
    Writeln('---------- Média de Alunos----------');
    writeln;
    textcolor(yellow);
    Write('Digite o nome do aluno ', cont, ' -: ');
    textcolor(lightcyan);
    Readln(aluno);
    textcolor(yellow);
    Write('Digite a primeira nota ---: ');
    textcolor(lightcyan);
    Readln(nota1);
    textcolor(yellow);
    Write('Digite a segunda nota ----: ');
    textcolor(lightcyan);
    Readln(nota2);
    textcolor(yellow);
    Write('Digite a terceira nota ---: ');
    textcolor(lightcyan);
    Readln(nota3);
    Soma:= nota1+nota2+nota3;
    Media:=soma/3;   
    writeln;
    textcolor(white);
    Write('A média do aluno ',cont);
    textcolor(lightgreen);
    write(' >> ');
    textcolor(lightred);
    textbackground(white);
    write(' ',aluno,' ');
    textbackground(black);		
    textcolor(lightgreen);
    write(' <<');
    textcolor(white);
    write('  é -> ');
    textcolor(lightred);
    textbackground(white);
    writeln(' ',Media:2:2,' ');
    textbackground(black);		
    writeln;
    textcolor(white);
    writeln('Tecles !');
    readln;
  end;   
  writeln;
  writeln;
  textcolor(lightgreen);
  writeln('===   Saindo Do Programa . . . !    ===');
  writeln;
  writeln('                 Tecles !');
  readln;
End.

 

  • Curtir 1
  • Obrigado 1
  • Membro VIP
Postado

@AnonymousLPH, segue outro código seguindo a sua base:

 

program Exercicio_9;
uses
   CRT;
var
  nome :string;
  nota1, nota2, nota3 :real;
  qtd, cont: integer;
  somaNotas,
  mediaNotas :real;

begin
somaNotas := 0;
cont := 0;
ClrScr;
writeln(UpCase('----------Programa média de alunos----------'));
write  ('Quantidade de alunos: '); readln(qtd);
while cont < qtd do
  begin
  ClrScr;
  Inc(cont);
  writeln('---------- Média de Alunos----------');
  write  ('Aluno ', cont, ': '); readln(nome);
  write  ('Nota 1: '); readln(nota1);
  write  ('Nota 2: '); readln(nota2);
  write  ('Nota 3: '); readln(nota3);
  somaNotas := nota1+nota2+nota3;
  mediaNotas := somaNotas/3;
  writeln('A média do aluno ', cont, ' é: ', mediaNotas :2:2);
  ReadKey(); //faltou só um "pause" antes de finalizar o loop.
  end;
end.

 

  • Curtir 1
  • Obrigado 1
Postado
4 horas atrás, devair1010 disse:

@AnonymousLPH     você esqueceu de colocar um readln no final do loop while e é melhor usar o readln ao invés de apenas read ,  então seu código poderia ser assim  :


Program Exercicio_9 ;
Var 
  aluno: string;
  nota1, nota2, nota3, Valor, cont: integer;
  Media, Soma: Real;
Begin
  Clrscr;
  Writeln(upcase('----------Programa média de alunos----------'));
  writeln;
  Write('digite o numero de alunos que deseja calcular a media ');
  Readln(Valor);
  Soma:=0;
  nota1:=0;
  nota2:=0;
  nota3:=0;
  While cont < valor do
  Begin
    clrscr;      
    inc(cont);
    Writeln('---------- Média de Alunos----------');
    writeln;
    textcolor(yellow);
    Write('Digite o nome do aluno ', cont, ' -: ');
    textcolor(lightcyan);
    Readln(aluno);
    textcolor(yellow);
    Write('Digite a primeira nota ---: ');
    textcolor(lightcyan);
    Readln(nota1);
    textcolor(yellow);
    Write('Digite a segunda nota ----: ');
    textcolor(lightcyan);
    Readln(nota2);
    textcolor(yellow);
    Write('Digite a terceira nota ---: ');
    textcolor(lightcyan);
    Readln(nota3);
    Soma:= nota1+nota2+nota3;
    Media:=soma/3;   
    writeln;
    textcolor(white);
    Write('A média do aluno ',cont);
    textcolor(lightgreen);
    write(' >> ');
    textcolor(lightred);
    textbackground(white);
    write(' ',aluno,' ');
    textbackground(black);		
    textcolor(lightgreen);
    write(' <<');
    textcolor(white);
    write('  é -> ');
    textcolor(lightred);
    textbackground(white);
    writeln(' ',Media:2:2,' ');
    textbackground(black);		
    writeln;
    textcolor(white);
    writeln('Tecles !');
    readln;
  end;   
  writeln;
  writeln;
  textcolor(lightgreen);
  writeln('===   Saindo Do Programa . . . !    ===');
  writeln;
  writeln('                 Tecles !');
  readln;
End.

 

sensacional maninho valeu, enriqueceu o código

adicionado 3 minutos depois

@KXSY  Legal o final do seu código, mas tenho q aprender alguns comandos que contem nele ainda... vou estudar seu código

adicionado 6 minutos depois
1 hora atrás, Simon Viegas disse:

@AnonymousLPH, segue outro código seguindo a sua base:

 


program Exercicio_9;
uses
   CRT;
var
  nome :string;
  nota1, nota2, nota3 :real;
  qtd, cont: integer;
  somaNotas,
  mediaNotas :real;

begin
somaNotas := 0;
cont := 0;
ClrScr;
writeln(UpCase('----------Programa média de alunos----------'));
write  ('Quantidade de alunos: '); readln(qtd);
while cont < qtd do
  begin
  ClrScr;
  Inc(cont);
  writeln('---------- Média de Alunos----------');
  write  ('Aluno ', cont, ': '); readln(nome);
  write  ('Nota 1: '); readln(nota1);
  write  ('Nota 2: '); readln(nota2);
  write  ('Nota 3: '); readln(nota3);
  somaNotas := nota1+nota2+nota3;
  mediaNotas := somaNotas/3;
  writeln('A média do aluno ', cont, ' é: ', mediaNotas :2:2);
  ReadKey(); //faltou só um "pause" antes de finalizar o loop.
  end;
end.

 

Tu deixou mais curto, sensacional, obrigado pela atenção maninho, estava precisando aprender a usar o readkey mesmo; kkk

adicionado 10 minutos depois
4 horas atrás, devair1010 disse:

@AnonymousLPH     você esqueceu de colocar um readln no final do loop while e é melhor usar o readln ao invés de apenas read ,  então seu código poderia ser assim  :


Program Exercicio_9 ;
Var 
  aluno: string;
  nota1, nota2, nota3, Valor, cont: integer;
  Media, Soma: Real;
Begin
  Clrscr;
  Writeln(upcase('----------Programa média de alunos----------'));
  writeln;
  Write('digite o numero de alunos que deseja calcular a media ');
  Readln(Valor);
  Soma:=0;
  nota1:=0;
  nota2:=0;
  nota3:=0;
  While cont < valor do
  Begin
    clrscr;      
    inc(cont);
    Writeln('---------- Média de Alunos----------');
    writeln;
    textcolor(yellow);
    Write('Digite o nome do aluno ', cont, ' -: ');
    textcolor(lightcyan);
    Readln(aluno);
    textcolor(yellow);
    Write('Digite a primeira nota ---: ');
    textcolor(lightcyan);
    Readln(nota1);
    textcolor(yellow);
    Write('Digite a segunda nota ----: ');
    textcolor(lightcyan);
    Readln(nota2);
    textcolor(yellow);
    Write('Digite a terceira nota ---: ');
    textcolor(lightcyan);
    Readln(nota3);
    Soma:= nota1+nota2+nota3;
    Media:=soma/3;   
    writeln;
    textcolor(white);
    Write('A média do aluno ',cont);
    textcolor(lightgreen);
    write(' >> ');
    textcolor(lightred);
    textbackground(white);
    write(' ',aluno,' ');
    textbackground(black);		
    textcolor(lightgreen);
    write(' <<');
    textcolor(white);
    write('  é -> ');
    textcolor(lightred);
    textbackground(white);
    writeln(' ',Media:2:2,' ');
    textbackground(black);		
    writeln;
    textcolor(white);
    writeln('Tecles !');
    readln;
  end;   
  writeln;
  writeln;
  textcolor(lightgreen);
  writeln('===   Saindo Do Programa . . . !    ===');
  writeln;
  writeln('                 Tecles !');
  readln;
End.

 

Qual a diferença entre o read e readln ?

  • Obrigado 1
Postado
3 horas atrás, KXSY disse:

Pascal é bom que só precisa traduzir, então read=ler e readln a abreviação de read line new ou read new line =ler nova linha, quer dizer que o cursor vai pular para uma nova linha e ai sim pegar os dados.

O melhor quando for usar a write e read e usá-los em pares assim sempre que usar writeln use readln e o inverso para write e read, isso e uma particularidade da biblioteca crt que se você utilizar write e depois usar readln o readln não vai ler nada (há funções na crt para contornar o problema).

Eu achava que era assim que você estava pensando em fazer, que ai mostraria todas as médias no final.

Se você e iniciante já está programando muito bem, quando passar por vetores e registros já dá para fazer programas muito interessantes.

Ps:foi mal o meu pascal enferrujado!

Muito obrigado pela explicação e o incentivo, vou estudar seu codigo com esse loop do array. Também vou estudar vetores e registros, agora já uma escada a mais pra seguir, valeeeeu :)

 Seu Pascal ta bom ainda mano haha

  • Curtir 1
  • Membro VIP
Postado

Sobre:

3 horas atrás, KXSY disse:

Pascal é bom que só precisa traduzir, então read=ler e readln a abreviação de read line new ou read new line =ler nova linha, quer dizer que o cursor vai pular para uma nova linha e ai sim pegar os dados [...]

 

Mais ou menos. O "ln" tem a ver com pular linha, mas tem uns poréns ai...

 

3 horas atrás, KXSY disse:

[...] O melhor quando for usar a write e read e usá-los em pares assim sempre que usar writeln use readln e o inverso para write e read, isso e uma particularidade da biblioteca crt que se você utilizar write e depois usar readln o readln não vai ler nada (há funções na crt para contornar o problema).

 

Não é bem assim. Esse "ln" do read não funciona como o "ln" do write. Neste último, serve para pular a linha após escrever na tela, ou seja: escreve algo e desce para próxima linha... como se desse um ENTER. Já o ln do read, está relacionado a linha que está lendo, ou seja: aos dados de entrada (teclado, arquivo...). Seria algo como:

 

Em 05/04/2010 às 03:21, Mog.Lucas disse:

A diferença básica entre eles não é sobre descer a linha ou não [...] e sim como eles tratam a linha que foi entrada.

[...] o read vai pegar o que "couber em sua variável", e o próximo read vai pegar o que couber da mesma linha.

Já o readln vai pegar o que "couber em sua variável", e descartar o resto, passando pra próxima linha.

 

Nesse tópico falamos um pouco mais sobre:

 

Em fim...  o importante é ressaltar que "ln" não serve para "descer a linha na tela após ler"...

 

Resumindo:

Para simplificar utilizem somente readln(). Esqueçam que o read() existe! 😁

  • Curtir 1
  • Amei 1

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...