Ir ao conteúdo
  • Cadastre-se
127.0.0.1

Preciso de uma ajuda nesse codigo!

Recommended Posts

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.

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×