0
Hello, I would like some help here, more specifically in case 4 if. I would like some solution without having to order the vector. Grateful.
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string>
struct informacoes_do_aluno {
char nome[30];
int matricula[20];
float av1;
float av2;
float media;
float nota_final;
char resultado[30];
int x;
};
int main (void){
//aluno alunos[10];
int j;
int n=3;
int maior_nota[2];
int i;
int escolha;
struct informacoes_do_aluno aluno[3];
for(i=0; i<n; i++){
printf("Nome do aluno .....: ");
scanf("%s", aluno[i].nome);
printf("Matricula do aluno .....: ");
scanf("%i", aluno[i].matricula);
printf("Nota da AV1: ");
scanf("%f", &aluno[i].av1);
printf("Nota da AV2: ");
scanf("%f", &aluno[i].av2);
printf("A media do aluno eh = %f \n\n", aluno[i].media = (aluno[i].av1+aluno[i].av2)/2);
printf("Situacao do aluno: ");
if(aluno[i].media >= 7)
{
//aluno[i].resultado = "aprovado";
strcpy(aluno[i].resultado,"Aprovado");
printf("%s\n\n",aluno[i].resultado);
}
else if(aluno[i].media < 7 && aluno[i].media >= 4 )
{
printf("Prova final\n\n");
{
printf("Nota da prova final: " );
scanf("%f", &aluno[i].nota_final);
printf("Resultado final: ");
if((aluno[i].nota_final+aluno[i].media)/2 >= 6)
{
strcpy(aluno[i].resultado,"Aprovado");
printf("%s\n\n",aluno[i].resultado);
}
else
{
strcpy(aluno[i].resultado,"Reprovado");
printf("%s\n\n",aluno[i].resultado);
}
}
}
else
{
strcpy(aluno[i].resultado,"Reprovado");
printf("%s\n\n",aluno[i].resultado);
}
}
while (escolha!=5)
{
printf("\n\n ----------------------- ");
printf("\n 1 - Exibir lista de alunos ");
printf("\n 2 - Exibir alunos aprovados ");
printf("\n 3 - Exibir alunos reprovados ");
printf("\n 4 - Exibir as 5 maiores notas ");
printf("\n 5 - Fechar Programa ");
printf("\n\n Escolha uma opcao: ");
scanf("%d",&escolha);
// estrutura switch
switch (escolha) {
case 1:
{
// a função clrscr(); é para limpar a tela
system("cls");
printf("\n\n Opcao escolhida: 1 ");
printf("\n Lista de alunos: \n");
for(i=0; i<n; i++){
printf("%s\n", aluno[i].nome);
}
break;
}
case 2:
{
system("cls");
printf("\n\n Opcao escolhida: 2 ");
printf("\n\n Alunos aprovados: \n\n");
for(i=0; i<n; i++){
if(strcmp(aluno[i].resultado, "Aprovado") == 0){
//if(aluno[i].resultado == "Aprovado"){
printf(" %s \n", aluno[i].nome);
}
}
break;
}
case 3:
{
system("cls");
printf("\n\n Opcao escolhida: 3 ");
printf("\n\n Alunos reprovados: \n\n");
for(i=0; i<n; i++){
if(strcmp(aluno[i].resultado, "Reprovado") == 0){
//if(aluno[i].resultado == "Aprovado"){
printf(" %s \n", aluno[i].nome);
}
}
break;
}
case 4:
{
system("cls");
printf("\n\n Opcao escolhida: 4 ");
printf("\n\n As 5 maiores notas foram: \n\n");
maior_nota[0]=0;
maior_nota[1]=0;
for(j=0; j<2; j++)
{
for(i=0; i<n; i++){
if(maior_nota[j] < aluno[i].media && maior_nota[0] != maior_nota[1] )
{
maior_nota[j] = i;
}
}
printf("%s\n%f\n", aluno[maior_nota[j]].nome, aluno[maior_nota[j]].media);
}
//for(i=0; i<2; i++){
//printf("%s\n%f\n", aluno[maior_nota[i]].nome, aluno[maior_nota[i]].media);
//}
break;
}
// opção padrão
default:
{
system("cls");
// se for escolhida a opção 5, ele pula o while utilizando continue para isso
if( escolha==5)
{
continue;
}
// caso o usuário digite um numero acima de 5, ele irá informar que nao existe essa opção
printf("\n\n Opcao invalida, digite um numero entre 1 e 5. ");
break;
}
}
}
if( escolha==5)
printf("\n\n O Programa foi fechado");
getch();
}
Welcome to Sopt, try to be clearer, explain what your doubt is !
– Isvaldo Fernandes