Programação linguagem C++
Alguém sabe me dizer, o porque quando vou complicar o programa, ele aparece o "aluno de recuperação" e quando mudo as notas, não aparece o aprovado ou o reprovado?
o que tem de errado nos códigos ?
#include
#include
using namespace std;
int main() {
int NOTA1, NOTA2;
double MEDIA;
cout > NOTA1 ;
cout > NOTA2 ;
MEDIA = (NOTA1 + NOTA2) / 2 ;
if ((MEDIA <=0.0)&&(MEDIA<=4.0)) {
cout << "ALUNO REPROVADO! " ;
}
else
if ((MEDIA<=4.0)&&(MEDIA<=6.0)) {
cout << "ALUNO DE RECUPERACAO! " ;
}
else
if ((MEDIA<=7.0)&&(MEDIA<=8.0)) {
cout << "ALUNO APROVADO!" ;
}
else
return 0;
}
Respostas
Resposta:
As condições foram feitas de forma incorreta:
Você colocou que para o aluno ser reprovado a media dele deve ser <= 0.0 e <= 4.0 então o código só executará este comando quando media atender as duas condições e este caso só irá ocorrer quando a media for menor que 0.
if ((MEDIA <=0.0)&&(MEDIA<=4.0)) {
cout << "ALUNO REPROVADO! " ;
}
O certo seria colocar apenas uma verificação:
if ((MEDIA<4.0)) {
cout << "ALUNO REPROVADO! " ;
}
Desse modo ele só verificaria se a nota do aluno é menor que 4.0, já que se ela for 4.0 o aluno irá para a recuperação.
Para o segundo enfrentamos o mesmo problema, só que agora você quer o intervalo entre 4.0 e abaixo de 6.0, pois se for 6.0 o aluno estará na média correta para ser aprovado, só que neste caso você colocou como uma das condições a media ser <= 4.0, que é justamente quando o aluno é reprovado:
else
if ((MEDIA<=4.0)&&(MEDIA<=6.0)) {
cout << "ALUNO DE RECUPERACAO! " ;
}
Para arrumar isso como estamos em estrutura encadeada bastaria colocar uma única condição:
else
if (MEDIA<6.0) {
cout << "ALUNO DE RECUPERACAO! " ;
}
Perceba que com a correção anterior você terá verificado se o número é menor que 4.0, então se ele foi para o próximo if da estrura condicional ele só pode ser maior que 4.0 . Com isso você só precisa verificar se a média é menor que 6.0, pois as pessoas que não tiraram menos que 4.0, mas tiraram abaixo de 6.0 estão de recuperação.
Já o último também temos o mesmo problema, para o aluno ser aprovado só precisaria verificar se a media dele é >= 6.0, pois significa que se ele tirou 6.0 ou acima de 6.0 ele terá sido aprovado.
else
if (MEDIA >= 6.0) {
cout << "ALUNO APROVADO!" ;
}
Código Final:
using namespace std;
int main() {
double NOTA1 = 0, NOTA2 = 0;
double MEDIA;
cout << "Digite a nota 1:\n";
cin >> NOTA1 ;
cout << "Digite a nota 2:\n";
cin >> NOTA2;
MEDIA = (NOTA1 + NOTA2) / 2 ;
if (MEDIA < 4.0) {
cout << "ALUNO REPROVADO! " ;
}
else if (MEDIA < 6.0) {
cout << "ALUNO DE RECUPERACAO! " ;
}
else if (MEDIA >= 6.0) {
cout << "ALUNO APROVADO!" ;
}
return 0;
}
cout > NOTA2 ;