Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Alguém poderia me ajudar com um algorítimo em Pascalzim.


Posts recomendados

Program exercicio_lista1_1 ;
var
	n1,n2,n3,n4,media:real;
	nota_final:integer;
 Begin
 	Write ('Escreva a primeira nota de zero a dez:');
 	readln (n1);
 	Write ('Escreva a segunda nota de zero a dez:');
 	readln (n2);
 	Write ('Escreva a terceira nota de zero a dez:');
 	readln (n3);
 	Write ('Escreva a quarta nota de zero a dez:');
 	readln (n4);
 	media := (n1+n2+n3+n4)/4;
 	nota_final := round (media);
 	writeln (' ');
 	writeln (' ');           
 	case nota_final of
                 
 		0..7	:		begin
 					writeln ('As notas informadas foram: ',n1:0:2,' , ',n2:0:2,' , ',n3:0:2,' e ',n4:0:2 );
 					writeln ('A média do aluno é: ', nota_final);
	 				writeln (' O aluno está Reprovado!');
	 				writeln ('Informe notas de zero a dez!');	
					end;
 		7..10 : 	begin
 					writeln ('As notas informadas foram: ',n1:0:2,' , ',n2:0:2,' , ',n3:0:2,' e ',n4:0:2 );
 					writeln ('A média do aluno é: ', nota_final);
		 			writeln (' O aluno está Aprovado!');
		 		end;	
 		else
 		writeln ('Informe notas de zero a dez!');
 	end;
 end.	

Fiz esse código básico em pascal ele está rodando normalmente mas, o que eu gostaria de saber é se tem uma maneira de não executar o restante do código se digitar um numero maior que dez. tipo esse else ai só funciona se o valor da Nota_Final for maior que dez.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Denis Alves de Oliveira. Seja bem vindo ao Fórum do Clube do Hardware.

 

1) INDENTAÇÃO

Sugiro que ao indentar não use o TAB (tabulação), pois costuma desconfigurar o código de um programa para o outro. Prefira usar espaços.

 

 

 

2) FAIXA DE NOTAS

2 horas atrás, Denis Alves de Oliveira disse:

0..7  :begin
7..10 :begin

 

Você está duplicando os casos, ou seja, 7 está sendo possível para mais de um caso. Por sinal, no Free Pascal Compiler, está dando "Error: duplicate case label". No PascalZim está passando em branco (mas não deveria... é um erro de fato)

 

Use de 0..6 para o primeiro caso.

 

 

 

3)  TEXTO NO LUGAR ERRADO

Dentro do primeiro caso, você deixou um "writeln ('Informe notas de zero a dez!');"... creio eu que por engano, já que esse é o texto da "média inválida". Apenas apague essa linha.

 

 

 

4) CONDIÇÃO DE NOTA FINAL

Veja, no seu case, você está verificando apenas a nota final, mas se ele informar, por exemplo, [42, 0, 0, 0] a média será 10, daí diria que foi aprovado, mesmo com uma nota inválida.

 

Logo, a verificação de faixa válida deveria ser feita para nota em si, ou seja, a nota tem que ser maior igual a 0 E menor igual a 10. Isso para CADA NOTA!

 

 

 

5) ARREDONDAMENTO DE MÉDIA

Tem algum motivo especial para fazer esse arredondamento? Teoricamente a nota deveria ser arredonda apenas nas casas dos centésimos, ou seja, com duas casas decimais, ex.: 7,80.

 

 

***

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

Olá @Simon Viegas

Realmente eu errei ali no 0..7, na outra era para ser 8..10, mas minha duvida era somente o porque passar mesmo se digitar um número maior que dez,  esse round ai foi o professor que colocou, sou iniciante mas esses exercícios básicos consigo desenvolver só tenho essas dúvidas.

 

 

[trecho sobre outro tópico removido]

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Denis Alves de Oliveira,

 

38 minutos atrás, Denis Alves de Oliveira disse:

Realmente eu errei ali no 0..7, na outra era para ser 8..10

A média para passar é 7 ou 8? se for 7, seria seria 0..6 mesmo. Lembrando que, apesar de conceitualmente errado, a média está sendo arredonda, logo, quem perde tirou 0, 1, 2, 3, 4, 5 ou 6. Se tirou 7 ele passou.

 

 

38 minutos atrás, Denis Alves de Oliveira disse:

mas minha duvida era somente o porque passar mesmo se digitar um número maior que dez

Vai passar porque você está tratando a média final, em vez das notas individualmente. Cada uma das notas devem ficar entre 0 e 10. A verificação é antes da média... obs.: a média final necessariamente vai está também entre 0 e 10, daí não faz sentido esse else no case.

 

 

 

 

38 minutos atrás, Denis Alves de Oliveira disse:

E gostaria de saber se esse outro código que fiz está certo.


Para outro código, por favor, crie um NOVO TÓPICO.

obs.: vou remover o trecho da postagem.

 

No aguardo.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!