Hello guys, i made this program a few minutes ago and the compiler doesnt give any error but when i start the program it crashes. Can someone help me?
#include <stdio.h>
int main() {
int numeroAluno, numeroUCs, melhorAluno, alunosProcessados = 0, aproveitamentoAOC = 0, aproveitamentoOE = 0, aproveitamentoAP = 0, aproveitamentoOLP = 0, aproveitamentoMD = 0, i;
float mediaUCs = 0, mediaAlunos = 0, melhorMedia = -1, notaUC = 0;
char nomeUC = ' ';
// Leitura do primeiro número de aluno
do {
printf("Introduza o numero de aluno (0 para sair): ");
scanf("%d", &numeroAluno);
} while (numeroAluno < 0);
// Caso o número seja válido (!=0), entra no ciclo
while (numeroAluno != 0) {
// Lê quantas UCs fez o aluno
do {
printf("Quantas UCs fez o aluno %d (entre 1 e 5)? ", numeroUCs);
scanf("%d", &numeroUCs);
} while (numeroUCs > 5 || numeroUCs < 1); // Só aceita valores entre 1 e 5, inteiros
// Executa x vezes
for (i = 1; i <= numeroUCs; i++) {
do {
printf("Qual das UCs?\n(A)lgoritmia, A(R)quitetura, (O)ficinas, (M)atematica e Or(G)anizacao\n");
scanf("%c",&nomeUC);
nomeUC = toupper(nomeUC);
} while (strcmp(nomeUC, "A") != 0 || strcmp(nomeUC, "R") != 0 || strcmp(nomeUC, "O") != 0 || strcmp(nomeUC, "M") != 0 || strcmp(nomeUC, "G") != 0);
// Lê a nota
do {
printf("Com que nota? ");
scanf("%d", ¬aUC);
} while (notaUC < 0 || notaUC > 20); // Só aceita entre 0 e 20
// Caso a nota seja positiva,
if (notaUC > 9.5) {
// Verifica a que UC se refere e
if (strcmp(nomeUC, "A") != 0) aproveitamentoAP++; // Incrementa o aproveitamento de Algoritmia
else if (strcmp(nomeUC, "R") != 0) aproveitamentoAOC++; // Incrementa o aproveitamento de Arquiteturas
else if (strcmp(nomeUC, "O") != 0) aproveitamentoOLP++; // Incrementa o aproveitamento de Oficinas
else if (strcmp(nomeUC, "M") != 0) aproveitamentoMD++;// Incrementa o aproveitamento de Matemática
else aproveitamentoOE++; // Incrementa o aproveitamento de Organização
}
}
// Acrescenta a nota ao valor da média
mediaUCs += notaUC;
// Faz reset às variáveis
nomeUC = ' ';
notaUC = 0; }
// Calcula a média do aluno
mediaUCs = mediaUCs / numeroUCs;
// Acrescenta a média do aluno à média geral
mediaAlunos += mediaUCs;
// Verifica se se trata do aluno com melhor média
if (mediaUCs > melhorMedia) {
melhorMedia = mediaUCs;
melhorAluno = numeroAluno; }
// Imprimir informacao do aluno
printf("O aluno %d concluiu %d UCs com media de %f valores.\n\n", numeroAluno, numeroUCs, mediaUCs);
// Faz reset às variáveis
mediaUCs = 0;
numeroAluno = 0;
numeroUCs = 0;
// Incrementa o número de alunos processados
alunosProcessados++;
// Lê o próximo aluno
do {
printf("Introduza o numero de aluno (0 para sair): ");
scanf("%d", &numeroAluno);
} while (numeroAluno < 0);
// Imprime todas as informações
// Se não tiverem sido inseridos alunos
if (alunosProcessados == 0) {
printf("Não foram inseridos dados.");
}
else (alunosProcessados != 0); {
mediaAlunos = mediaAlunos / alunosProcessados;
printf("**********\nConsideramos %d alunos.\n", melhorAluno);
printf("O aluno %d tem a melhor media, com $f.2 valores.", melhorMedia, alunosProcessados);
printf("Media de notas foi %f.2 valores.\n", mediaAlunos);
printf("**********\nUnidades Curriculares e numero de alunos com aproveitamento.\nAlgoritmia %d alunos.\nArquitetura %d alunos.\nOficinas %d alunos.\nMatematica %d alunos.\nOrganizacao %d alunos.\n",
aproveitamentoAP, aproveitamentoAOC, aproveitamentoOLP, aproveitamentoMD, aproveitamentoOE);
}
return 0;
}