Crie uma estrutura representando os alunos da turma. A estrutura deve conter a matrícula do aluno, nome, nota da primeira prova, nota da segunda prova e nota da terceira prova

Crie uma estrutura representando os alunos da turma. A estrutura deve conter a matrícula do aluno, nome, nota da primeira prova, nota da segunda prova e nota da terceira prova.
a) Permita ao usuário entrar com os dados de 5 alunos.
b) Encontre o aluno com maior nota da primeira prova.
c) Encontre o aluno com maior média geral.
d) Encontre o aluno com menor média geral
e) Para cada aluno diga se ele foi aprovado ou reprovado, considerando o valor 6 para
aprovação.

Fiz este código para essa struct, mas a partir do print do aluno com maior média não sai mais nada. Vocês poderiam me ajudar a encontrar o erro, por favor? :relaxed:
Aceito dicas pra deixar o código mais “enxuto” também.

#include<stdio.h>
#include<stdlib.h>

struct alunos {
 char matricula[10];
 char nome[50];
 float nota[3];
};


int main(){

 struct alunos a[5];
 int i,  maiornota1_indice, maiormediageral_indice, menormediageral_indice;
 float maiornota1=0,mediageral[5], maiormediageral=0, menormediageral;

 printf("\nCADASTRO\n\n");
 //Entrada de 5 usuarios.
 for(i=0; i<5; i++){


    printf("\n\nDigite a matricula do %do Aluno: ",i+1);
    scanf("%s",&a[i].matricula);
    printf("Nome do %d Aluno: ",i+1);
    scanf("%s",&a[i].nome);
    printf("Nota 1: ");
    scanf("%f",&a[i].nota[0]);
    printf("Nota 2: ");
    scanf("%f",&a[i].nota[1]);
    printf("Nota 3: ");
    scanf("%f",&a[i].nota[2]);

    mediageral[i] = a[i].nota[0]+a[i].nota[1]+a[i].nota[2];

    if(maiornota1<a[i].nota[0]){

        maiornota1 = a[i].nota[0];

        maiornota1_indice = i;

    }
    if(mediageral[i]>maiormediageral){
        maiormediageral = mediageral[i];
        maiormediageral_indice = i;

    }
    if(mediageral[i]<menormediageral){
        menormediageral = mediageral[i];
        menormediageral_indice = i;

    }

 };

    printf("\nAluno com maior Nota 1: %s",a[maiornota1_indice].nome);
    printf("\nAluno com maior media: %s",a[maiormediageral_indice].nome);
    printf("\nAluno com menor media: %s",a[menormediageral_indice].nome);

    int j=0;
    for(j=0; j<5; j++){

        if(mediageral[j]<=6){

            printf("\nAluno %s REPROVADO\n",a[j].nome);
        }else {
            printf("Aluno %s APROVADO\n",a[j].nome);
        }

    }




system("pause");
return 0;
}

Consegiu?