0
I have a problem with my program in C, and in the registration of the second student’s second grade the program stops responding. Follow the code with the explanation of the problem.
/*
Faça um programa que cadastre 10 alunos.
Para cada aluno, devem ser cadastrados:
nome,
nota 1,
nota 2.
Primeiro, liste todos os alunos cadastrados ordenando-os pela média pondera das notas,
tendo a primeira nota peso 2 e a segunda peso 3.
Em seguida, ordene os alunos, de forma crescente, pela nota 1, e liste-os.
Finalmente, considerando que para ser aprovado o aluno deve ter no minimo media 7,
liste em ordem alfabética os alunos reprovados.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 2
typedef struct Aluno{
char nome[64];
float nota1;
float nota2;
float mediaPonderada;
}Aluno;
struct Aluno aluno[MAX];
void exibirReprovados(Aluno *v){
printf("Alunos Reprovados:\n");
int i;
for(i = 0; i < MAX-1; i++)
{
if(v[i].mediaPonderada < 7)
{
printf("Nome: %s \t nota 1: %.2f \t nota 2: %.2f\t Media: %.2f\n", v[i].nome, v[i].nota1, v[i].nota2, v[i].mediaPonderada);
}
}
}
void exibir(Aluno *v){
printf("Todos os alunos:\n");
int i;
for(i = 0; i < MAX-1; i++)
{
printf("Nome: %s \t nota 1: %.2f \t nota 2: %.2f\t Media: %.2f\n", v[i].nome, v[i].nota1, v[i].nota2, v[i].mediaPonderada);
}
}
// Usando o Select Sort
void ordenarPorNome(Aluno *v){
struct Aluno aux;
int i, j;
int min;
int tam = MAX;
for(i = 0; i < (tam-1); i++)
{
min = i;
for(j = (i+1); i < tam; j++)
{
if(strcmp(v[j].nome, v[min].nome) < 0)
{
min = j;
}
}
if(i != min)
{
aux = v[i];
v[i] = v[min];
v[min] = aux;
}
}
}
// Usando o Select Sort
void ordenar(Aluno *v)
{
struct Aluno aux;
int i, j, min;
int tam = MAX;
for(i = 0; i < (tam-1); i++)
{
min = i;
for(j = (i+1); i < tam; j++)
{
if(v[j].nota1 < v[min].nota1)
{
min = j;
}
}
if(i != min)
{
aux = v[i];
v[i] = v[min];
v[min] = aux;
}
}
}
void calcularMediaPonderada(Aluno *v){
int i;
for(i = 0; i < MAX; i++)
{
v[i].mediaPonderada = ((v[i].nota1 * 1) + (v[i].nota2 * 3))/1+3;
}
}
void cadastrarAlunos(Aluno *v){
int i;
for(i = 0; i < MAX; i++){
printf("Digite o nome do aluno %d: \n", i);
fflush(stdin);
gets(v[i].nome);
fflush(stdin);
printf("Digite a nota 1 do aluno %s: \n", v[i].nome);
fflush(stdin);
scanf("%f", &v[i].nota1);
fflush(stdin);
printf("Digite a nota 2 do aluno %s: \n", v[i].nome);
fflush(stdin);
scanf("%f", &v[i].nota2);
fflush(stdin);
}
calcularMediaPonderada(v);
}
void main(void){
cadastrarAlunos(aluno);
ordenar(aluno);
exibir(aluno);
ordenarPorNome(aluno);
exibirReprovados(aluno);
system("PAUSE");
}
That’s right, thank you very much!
– Fabio Soares