Ir ao conteúdo

Posts recomendados

Postado

Escreva um programa em Pascal que classifica as notas de uma turma em: excelente,
de 9 a 10; suficiente, de 7 a 9, sem incluir 9; insuficiente, de 0 a 7, sem incluir 7. O programa também deve mostrar a média das provas ao final. Necessito de uma ajuda.

Program ue ;varcont_suf,cont_insuf,cont_exelent,cont_total:real;nota,soma,media:real;Begin	soma:=0;	cont_total:=0;	cont_exelent:=0;	cont_suf:=0;	cont_insuf:=0;//finalizador para notas -1.writeln('Este programa classifica as notas de uma turma em excelente, suficiente e insuficiente');writeln;writeln('Digite -1 ou menos para finalizar');write('Digite uma nota> ');readln(nota);//Condicionais das notas do algoritmo//Se a nota for >=9 ou <=10, é somado +1 ao cont_excelente.	repeat	begin		if(nota>=9)and(nota<=10)then	cont_exelent:=cont_exelent+1;	media:=media+nota;	cont_total :=cont_total+1;	    //Se a nota for >=7 ou <=8, é somado +1 ao cont_suf.			if(nota>=7)and(nota<=8)then 	cont_suf:=cont_suf+1;	media:=media+nota;	cont_total:=cont_total+1;		 //Se a nota for >=0 ou <=6, é é somado +1 ao cont_insuf. 	 		if (nota>=0)and(nota<=6) then	cont_insuf:=cont_insuf+1;	media:=media+nota;	cont_total:=cont_total+1;	 end;		write('Digite uma nota> ');  readln(nota);until nota<>-1;//Calculando a media.	soma:=(media/cont_total);//Total de notas excelentes, suficientes e insuficientes.writeln('O número de notas exelentes é= ', cont_exelent:0:2);writeln('O número de notas suficientes é= ', cont_exelent:0:2);writeln('O número de notas isuficientes é= ', cont_insuf:0:2);writeln;writeln('A média das notas é=', soma:0:2);   End.

.

  • Membro VIP
Postado

Olá
 

Escreva um programa em Pascal que classifica as notas de uma turma em: excelente, de 9 a 10; suficiente, de 7 a 9, sem incluir 9; insuficiente, de 0 a 7, sem incluir 7. O programa também deve mostrar a média das provas ao final. Necessito de uma ajuda.

 
A primeira coisa que precisam-se fazer é interpretar o enunciado. Então, o que significa «classifica as notas de uma turma»? Seria essa contagem da quantidade seguindo por categorias mesmo?

 

Vou partir do pressuposto que seja como você está tentando fazer.
 

VAMOS LÁ
 
1) Mantenha seu código identado
A identação é de suma importância. Abaixo seu código identado (no meu padrão)

Program ue ;var  cont_suf,cont_insuf,cont_exelent,cont_total:real;  nota,soma,media:real;beginsoma:=0;cont_total:=0;cont_exelent:=0;cont_suf:=0;cont_insuf:=0;//finalizador para notas -1.writeln('Este programa classifica as notas de uma turma em excelente, suficiente e insuficiente');writeln;writeln('Digite -1 ou menos para finalizar');write('Digite uma nota> ');readln(nota);//Condicionais das notas do algoritmo//Se a nota for >=9 ou <=10, é somado +1 ao cont_excelente.repeat  {begin} //repeat não precisa de begin/end...  if (nota>=9) and (nota<=10) then    cont_exelent:=cont_exelent+1;  media:=media+nota;  cont_total :=cont_total+1;    //Se a nota for >=7 ou <=8, é somado +1 ao cont_suf.  if (nota>=7) and (nota<=8) then     cont_suf:=cont_suf+1;  media:=media+nota;  cont_total:=cont_total+1;    //Se a nota for >=0 ou <=6, é é somado +1 ao cont_insuf.   if (nota>=0)and(nota<=6) then    cont_insuf:=cont_insuf+1;  media:=media+nota;  cont_total:=cont_total+1;  {end;} //repeat não precisa de begin/end...  write('Digite uma nota> ');  readln(nota);until nota<>-1;//Calculando a media.soma:=(media/cont_total);//Total de notas excelentes, suficientes e insuficientes.writeln('O número de notas exelentes    é= ',cont_exelent:0:2);writeln('O número de notas suficientes  é= ',cont_exelent:0:2);writeln('O número de notas isuficientes é= ',cont_insuf  :0:2);writeln;writeln('A média das notas é=', soma:0:2);end.

 
Daí, visualmente já percebemos que está faltando um begin/end nos ifs, pois ele só "amarra" um comando, ou seja, apenas o que vem logo após o then. Caso queira mais de um comando "amarrado", precisa cria um "bloco" (begin/end)

 

Ex.:

 

ATUAL

//Condicionais das notas do algoritmo//Se a nota for >=9 ou <=10, é somado +1 ao cont_excelente.repeat  {begin} //repeat não precisa de begin/end...  if (nota>=9) and (nota<=10) then    cont_exelent:=cont_exelent+1;  media:=media+nota;  cont_total :=cont_total+1;

CORRETO (supostamente)

repeat  //Condicionais das notas do algoritmo  //Se a nota for >=9 ou <=10, é somado +1 ao cont_excelente.  if (nota>=9) and (nota<=10) then    begin    cont_exelent:=cont_exelent+1;    media:=media+nota;    cont_total:=cont_total+1;    end;

Percebe a diferença?

 

Obs.: Precisa corrigir os comentários: Você escreveu ">=9 ou <=10", mas o certo é "E" !!!!  Ex.: 8! 8 é maior igual a 9! Não. 8 é menor igual que 10, SIM! No "ou", essa condição daria "verdadeiro" (que não é o caso), já no "e" daria falso (ok). Logo, a frase está errada!!! O certo é "..for >=9 e <=10..." )
Obs2.: No if está certo.. "and" = "e".

 

2) Repetição desnecessária de código

Então, você não precisa "somar a média" e "contar o total" a cada if, basta somar uma vez! No if fica somente o que é específico...(no caso "contar pela categoria").

 

 

3) Separação das variáveis

Durante o programa, você usou "media:=media+nota;", e isso (supostamente) está errado. Você precisa de outra variável para armazenar essa soma. E só depois, jogar o calculo da média na media. Ex.: "somaNotas:=somaNotas+nota;" e "soma:=somaNotas/cont_total;"

 

 

***

 

 

Tem mais coisas.. por enquanto paro por aqui... Vê o que consegue fazer e qualquer coisa vamos te ajudando...

 

No aguardo.

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!