Ir ao conteúdo
  • Cadastre-se

Pascal Estrutura Record (utilizando matriz)


Posts recomendados

Olá, boa noite!

Bom, estou tentando desenvolver um código, mas acredito que esteja cometendo algum erro semântico. Os valores das médias estão se sobrepondo na impressão, já tentei modificar de diversas formas, mas não obtive um bom resultado.

 

Program Reg_+_Matriz;
//  Algoritmo usando record, onde um aluno tem um código, nome
// nome de duas disciplinas e de 4 notas em uma variável do 
// tipo record. Ao fim, imprimir nome do aluno, das disciplinas
// a média de cada uma e das duas juntas. O processo deve ocorrer 5x.

type cadastro=								 record
	  nota: 	 						  	   array [1..2,1..4] of real;
	  disc:		 			  		  	   array [1..2] of string;
	  cod,nome:   							 string;
end;

var aluno: array [1..5]    	 of cadastro;
		med,medGer: 			  		 array [1..5] of real;
		i,l,c:									 integer;


Begin
  for i:=1 to 5 do
  begin
    write('Insira seu nome: ');                                   // Leitura de nome e código
    read(aluno[i].nome);                                          // feita 1x por ciclo.
    write('Insira seu código (R.A.): ');
    read(aluno[i].cod);
    for l:=1 to 2 do
    begin
      write('Digite o nome da disciplina: ');                     // Leitura de disciplinas
      readln(aluno[i].disc[l]);                                   // feita 2x por ciclo. 
      for c:= 1 to 4 do
      begin
        write('Digite a ',c,'ª nota: ');                                                                               // Leitura de notas
        readln(aluno[i].nota[l,c]);                                                                                    //feita 4x a cada disciplina lida.                    
      end;  
      med[i]:= (aluno[i].nota[l,1]+aluno[i].nota[l,2]+aluno[i].nota[l,3]+aluno[i].nota[l,4]) / 4;                      // Cálculo da média das notas
      writeln;                                                                                                         // feito 2x por ciclo
    end;
    medGer[i]:= (medGer[i] + med[1] + med[2])/2;                  // Cálculo da média geral
  end;
  writeln;

  For i:=1 to 5 do
  begin                                                                          
    writeln('O nome do aluno é: ',aluno[i].nome);                 // Impressão dos dados recebidos
    writeln('Seu código é: ',aluno[i].cod);
    for l:=1 to 2 do
    begin
      writeln('Suas 4 notas em ',(aluno[i].disc[l]),' foram: ');
      for c:= 1 to 4 do
      begin
        writeln('Nota ',c,': ',aluno[i].nota[l,c]);
      end;
    end;
    writeln;
    for l:=1 to 2 do
    begin
      writeln('Sua média em ',aluno[i].disc[l],' é: ',med[l]);
    end;
    writeln;
    writeln('Sua média geral foi: ',medGer[i] );
    writeln;
  end;     
  
  readkey;
end.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

Sobre:

18 horas atrás, Nikollas G. Ohta disse:

Os valores das médias estão se sobrepondo na impressão, já tentei modificar de diversas formas, mas não obtive um bom resultado.

 

Sobrepondo como? Seria bom demonstrar o erro.

 

Sobre>

18 horas atrás, Nikollas G. Ohta disse:
read(aluno[i].nome);    

 

Não use read(), utilize somente readln(). Troque isso já!

 

Após os ajustes, teste novamente e informe e demonstre o problema que está ocorrendo.

 

No aguardo.

Dica: utilize um replace de read( para readln(.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

No cálculo da média acho mais simples acumular a soma no loop em vez de pegar cada valor manualmente, p.ex,

 

soma := 0;    
for c:= 1 to 4 do begin
    soma := soma + aluno[i].nota[j, c];
end;  
    writeln('Media = ', soma/4:0:2);     

 

  • Curtir 1
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...

Redes-Wi-Fi-capa-3d-newsletter.png

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!