Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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];
}Daí já entra indv inicial é 1.
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";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?
errado como?
e outra te dei diversas formas de como fazer e você ainda t apulando a posição 0
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. . .
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
Ok, mas mesmo assim não obtenho os resultados.
Como faço para limpar essa sujeira?
if (nota[numnotas] = nt) valor[nt] = valor [nt] + 1;
else .... ??
valor[nt]=valor[nt]
valor[nt]=valor[nt]
você acha q isso faz sentido????????
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.
mas se será ela mesmo nao precisa ter este senao, entendeu o que o quitZAUMMM tentou passar?
nao vai dar erro mas é inutil
pq você num faz assim:
while(true){
ou
while( nota[indv-1]!= 999)[]s