Ir para conteúdo

POWERED BY:

Arquivado

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

~TiAgO

Comando while não é obedecido!

Recommended Posts

Meu algoritmo:

Leia as notas

Calcule a frequencia absoluta das noas

Calcule a frequencia relativa das notas

Imprimir as notas lidas e suas respectivas frequencias

 

Programa:

 

#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;

int main(int argc, char *argv[])
{
	
	int indv,nt,nr,numnotas;
	int nota[45], valor[10], relativa[10];
	
	//Leitura das notas
	indv = 0;
	while( nota[indv]!= 999)  //<- daqui
	{cout << "Digite a nota do aluno " << indv;
	cout << "\n";
	cin >> nota[indv];
	indv = indv + 1;} //até aki
	// Cálculo da frequencia aslouta de cada nota
 
	for (numnotas = 0; numnotas <=indv; numnotas = numnotas + 1)
	{for(nt = 0;nt <=10; nt = nt + 1)
	{if (nota[numnotas] = nt)
	{valor[nt] = valor [nt] + 1;
	 }}}
	 
	 //Calculo das notas relativas
	 
	 for (nr =0; nr <=10; nr = nr+1)
	 {relativa [nr] = (valor [nr] / indv)*100;
	 }
	
	system("PAUSE");
	return EXIT_SUCCESS;
}

Meu comando while não é obedecido de geito nenhum, ou seja, eu coloco as notas e quando acabo digito 999 ao invés de interromper o loop ele continua lendo as notas.

 

Sou novo aqui, e gostaria que alguem desse uma ajudinha.

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq você num faz assim:

while(true){
	cout << "Digite a nota do aluno " << indv;
	cout << "\n";
	cin >> nota[indv];
	if (nota[indv] == 999) break;
	indv = indv + 1;
}

ou

 

while( nota[indv-1]!= 999)
[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo quitZAUMMM,

Ainda estou aprendendo a linguagem na facul. Por enquanto só sei o básico mesmo.

Consegui fazer funcionar aqui.

Alterei isso:

 

indv = 0;

while( nota[indv]!= 999)

{cout << "Digite a nota do aluno " << indv;

cout << "\n";

cin >> nota[indv];

indv = indv + 1;}

 

para

 

indv = 0;

while( nota[indv]!= 999)

{ indv = indv + 1;

cout << "Digite a nota do aluno " << indv;

cout << "\n";

cin >> nota[indv];

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

soh q perceba entaum q você naum usa o indice 0

---

 

pensei desse jeito tbm:

indv = 0;
cout << "Digite a nota do aluno 0 \n";
while(cin >> nota[indv], nota[indv] != 999){
	indv++;
	cout << "Digite a nota do aluno " << indv << "\n";
}

ou

 

indv = 0;
cout << "Digite a nota do aluno  " << indv << "\n";
while(cin >> nota[indv], nota[indv] != 999) cout << "Digite a nota do aluno " << ++indv << "\n";

Compartilhar este post


Link para o post
Compartilhar em outros sites

acabei o programa, mas não está funcionando.

 

#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;

int main(int argc, char *argv[])
{
	
	int indv,nt,nr,numnotas,impressao;
	int nota[45], valor[10], relativa[10];
	
	//Leitura das notas
	indv = 0;
	while( nota[indv]!= 999)
	{indv = indv + 1;
	cout << "Digite a nota do aluno " << indv;
	cout << "\n";
	cin >> nota[indv];
	}
	// Cálculo da frequencia absoluta de cada nota
 
	for (numnotas = 1; numnotas <=indv; numnotas = numnotas + 1)
	{for(nt = 0;nt <=10; nt = nt + 1)
	{if (nota[numnotas] = nt)
	{valor[nt] = valor [nt] + 1;
	 }}}
	 
	 //Calculo das notas relativas
	 
	 for (nr =1; nr <=10; nr = nr+1)
	 {relativa [nr] = (valor [nr] / indv)*100;
	 }
	
	//Impressão dos resultados
	
	
	
	for (impressao = 0;impressao <= 10; impressao=impressao+1)
	
	{cout << "Nota			 Valor Absoluto					Valor Relativo \n";
  cout << impressao<<"	  -----------	  "<< valor [impressao]<<"	  -----------	  "<<relativa [impressao]<< endl;
}
			   
			 
	
	
	system("PAUSE");
	return EXIT_SUCCESS;
}

 

Alguem tem alguma idéia de que está acontecendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

errado como?

e outra te dei diversas formas de como fazer e você ainda t apulando a posição 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os valores das notas relativas e absolutas dão errado para um conjunto de notas simples de 0 a 10.

 

 

 

Digite a nota do aluno  0
1
Digite a nota do aluno 1
2
Digite a nota do aluno 2
3
Digite a nota do aluno 3
4
Digite a nota do aluno 4
5
Digite a nota do aluno 5
6
Digite a nota do aluno 6
7
Digite a nota do aluno 7
8
Digite a nota do aluno 8
9
Digite a nota do aluno 9
9
Digite a nota do aluno 10
9
Digite a nota do aluno 11
9
Digite a nota do aluno 12
9
Digite a nota do aluno 13
9
Digite a nota do aluno 14
9
Digite a nota do aluno 15
9
Digite a nota do aluno 16
8
Digite a nota do aluno 17
9
Digite a nota do aluno 18
0
Digite a nota do aluno 19
0
Digite a nota do aluno 20
9
Digite a nota do aluno 21
8
Digite a nota do aluno 22
9
Digite a nota do aluno 23
0
Digite a nota do aluno 24
999


Nota			 Valor Absoluto					Valor Relativo
0	  -----------	  2434256	  -----------	  -1828716397
Nota			 Valor Absoluto					Valor Relativo
1	  -----------	  2005437252	  -----------	  -233946092
Nota			 Valor Absoluto					Valor Relativo
2	  -----------	  2005436266	  -----------	  -233950192
Nota			 Valor Absoluto					Valor Relativo
3	  -----------	  32	  -----------	  100
Nota			 Valor Absoluto					Valor Relativo
4	  -----------	  26	  -----------	  100
Nota			 Valor Absoluto					Valor Relativo
5	  -----------	  2428776	  -----------	  10119900
Nota			 Valor Absoluto					Valor Relativo
6	  -----------	  24	  -----------	  100
Nota			 Valor Absoluto					Valor Relativo
7	  -----------	  24	  -----------	  100
Nota			 Valor Absoluto					Valor Relativo
8	  -----------	  24	  -----------	  100
Nota			 Valor Absoluto					Valor Relativo
9	  -----------	  2425184	  -----------	  10104900
Nota			 Valor Absoluto					Valor Relativo
10	  -----------	  2005436266	  -----------	  -233950192
Pressione qualquer tecla para continuar. . .

Compartilhar este post


Link para o post
Compartilhar em outros sites

errado:

for (numnotas = 1; numnotas <=indv; numnotas = numnotas + 1)

{for(nt = 0;nt <=10; nt = nt + 1)

{if (nota[numnotas] = nt)

{valor[nt] = valor [nt] + 1;

}}}

sinal de comparação é '==', no seu if beleza, se caso isso aconteça vai fazer uma coisa e senão acontecer?? fica sujeira??

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

if (nota[numnotas] = nt) valor[nt] = valor [nt] + 1;

else .... ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

valor[nt]=valor[nt]

você acha q isso faz sentido????????

Compartilhar este post


Link para o post
Compartilhar em outros sites

se a nota do aluno [numnotas] (que vai ate 45) for igual a nota 0, nota[0]=nota[0]+1. Senão, nota[0]=nota[0], não alterando seu valor.

Apos testar todos os valores de 0 a 10, vai para a proxima nota do proximo aluno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas se será ela mesmo nao precisa ter este senao, entendeu o que o quitZAUMMM tentou passar?

 

nao vai dar erro mas é inutil

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.