Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gustavo Rodrigues Torre

[Resolvido] Do..While

Recommended Posts

Ese programa não esta com um pequeno defeito na hora de repetir o Do

Como ageitar este pequeno problema?

Segue abaixo o código do programa

 

/**/
# include<stdio.h>
# include<stdlib.h> 

float n1,n2,n3;
float maior=0,menor=10,mp,nmaior1,nmaior2,nmaior3, nmenor1;
float nmenor2, nmenor3;
int c, co_a;

main()

{ //Inicio do programa
do
{ //Inicio do Do
printf("\n\n Digite o codigo do aluno: ");
scanf("%d",&co_a);
printf("\n\n Digite as notas: ");
scanf("%f %f %f",&n1,&n2,&n3);

	 if (n1 > maior) 
	 {
	 maior = n1;
	 }
		  if (n2 > maior) 
		  {
		  maior = n2;
		  }
			   if (n3 > maior) 
			   {
			   maior = n3;
			   }
					if (n1 == maior) 
					{
					nmaior1 = n2;
					nmaior2 = n3;
					}
						 if (n2 == maior) 
						 {
						 nmaior1 = n1;
						 nmaior2 = n3;
						 }
							  if (n3 == maior) 
							  {
							  nmaior1 = n1;
							  nmaior2 = n2;
							  }
							  
mp = (maior * 4 + nmaior1 * 3 + nmaior2 * 3) / 10;

					  if (mp>=5) 
					  {
					  printf("\n\n Aluno aprovado");
					  }
					  else
					  {
					  printf("\n\n Aluno reprovado");
					  }
					  
printf("\n\n As notas foram %f %f e %f",n1,n2,n3);
printf("\n\n O codigo do aluno eh %d ",co_a);
printf("\n\n A media ponderada foi %f ",mp);
printf("\n\n");
} // Fim do Do While
while (co_a<1);
system("pause");
return 0;
} //Fim do programa

Compartilhar este post


Link para o post
Compartilhar em outros sites

A idéia é ler a variável que afeta a saída do laço pouco antes do teste.

Veja:

 

printf("\n\n Digite o codigo do aluno: ");
scanf("%d",&co_a);

do { //Inicio do Do
   printf("\n\n Digite as notas: ");
   scanf("%f %f %f",&n1,&n2,&n3);
   .
   .
   .

   printf("\n\n Digite o codigo do aluno: ");
   scanf("%d",&co_a);
} while (co_a<1);

Os tres pontos significa o restante do código.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kandrade eu fiz como você falou

Mas o programa continua pausando e não me deixa entrar com outras notas

O que devo fazer agora?

{ //Inicio do programa
printf("\n\n Digite o codigo do aluno: ");
scanf("%d",&co_a);
do
{ //Inicio do Do
printf("\n\n Digite as notas: ");
scanf("%f %f %f",&n1,&n2,&n3);
.
.
.
					  
printf("\n\n As notas foram %f %f e %f",n1,n2,n3);
printf("\n\n O codigo do aluno eh %d ",co_a);
printf("\n\n A media ponderada foi %f ",mp);
printf("\n\n");
} // Fim do Do While
while (co_a<1);
system("pause");
return 0;
} //Fim do programa

Os três pontos representam o meio do porgrama

A idéia é ler a variável que afeta a saída do laço pouco antes do teste.

Veja:

 

printf("\n\n Digite o codigo do aluno: ");
scanf("%d",&co_a);

do { //Inicio do Do
   printf("\n\n Digite as notas: ");
   scanf("%f %f %f",&n1,&n2,&n3);
   .
   .
   .

   printf("\n\n Digite o codigo do aluno: ");
   scanf("%d",&co_a);
} while (co_a<1);

Os tres pontos significa o restante do código.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leia separadamente:

 

printf("\n\n Digite a nota 1: ");
scanf("%f",&n1);

printf("\n\n Digite a nota 2: ");
scanf("%f",&n2);

printf("\n\n Digite a nota 3: ");
scanf("%f",&n3);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kandrade não deu certo

Eu fiz como você disse e continua com erro

Não deixando eu colocar mais notas

 

{ //Inicio do programa
printf("\n\n Digite o codigo do aluno: ");
scanf("%d",&co_a);
do
{ //Inicio do Do
printf("\n\n Digite a primeira nota: ");
scanf("%f",&n1);
printf("\n\n Digite a segunda nota: ");
scanf("%f",&n2);
printf("\n\n Digite a terceira nota: ");
scanf("%f",&n3);
.
.
.
Tres pontos resto do código

 

Vou testar depois eu volto a postar

 

Leia separadamente:

 

printf("\n\n Digite a nota 1: ");
scanf("%f",&n1);

printf("\n\n Digite a nota 2: ");
scanf("%f",&n2);

printf("\n\n Digite a nota 3: ");
scanf("%f",&n3);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai está o código como deveria ficar.

Basicamente do que falei só modifiquei a condição do while de <1 para >1

 

CODE

/**/

# include<stdio.h>

# include<stdlib.h>

 

float n1,n2,n3;

float maior=0,menor=10,mp,nmaior1,nmaior2,nmaior3, nmenor1;

float nmenor2, nmenor3;

int c, co_a;

 

main(){

 

printf("\n\n Digite o codigo do aluno: ");

scanf("%d",&co_a);

 

do

{ //Inicio do Do

printf("\n\n Digite a nota 1: ");

scanf("%f",&n1);

 

printf("\n\n Digite a nota 2: ");

scanf("%f",&n2);

 

printf("\n\n Digite a nota 3: ");

scanf("%f",&n3);

 

if (n1 > maior){

maior = n1;

}

 

if (n2 > maior){

maior = n2;

}

 

if (n3 > maior){

maior = n3;

}

 

if (n1 == maior){

nmaior1 = n2;

nmaior2 = n3;

}

 

if (n2 == maior){

nmaior1 = n1;

nmaior2 = n3;

}

 

if (n3 == maior){

nmaior1 = n1;

nmaior2 = n2;

}

 

mp = (maior * 4 + nmaior1 * 3 + nmaior2 * 3) / 10;

 

if (mp>=5){

printf("\n\n Aluno aprovado");

}

else{

printf("\n\n Aluno reprovado");

}

 

printf("\n\n As notas foram %f %f e %f",n1,n2,n3);

printf("\n\n O codigo do aluno eh %d ",co_a);

printf("\n\n A media ponderada foi %f ",mp);

printf("\n\n");

 

printf("\n\n Digite o codigo do aluno: ");

scanf("%d",&co_a);

 

}while (co_a<1);

 

system("pause");

return 0;

} //Fim do programa

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha você num ta falando pra ele fazer o loop enquanto (co_a<1)!

tente usar uma variável contadora do tipo

do {
.
.
cont++;
} while (cont=5);

ow senaum diga q é para ele parar de repetir qnd co_a for menor a 99(exemplo)!!

do {
.
.
}while (co_a < 99);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kandrade eu usei a outra estrutura que você mandou e funcionou legal

Valeu

A interpretação de como deixei é:

 

Faça pelo menos uma vez enquanto o código de matricula é maior que 1.

Se quero sair do laço basta digitar um número menor ou igual a 1.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.