Hola Blaster.
No se mucho de c++, pero tienes errores que se ven fácil sin saber mucho de c++.
La variable que usas para acumular las notas, la inicializas a 0 cada vez que se ejecuta el bucle for, por lo cual solo guarda el valor de la última nota introducida.
Si quiero introducir 4 materias a la primera pregunta, no hay ningún sitio donde guardes estos valores, porque solo tienes una variable que vas sobreescribiendo a cada paso en el bucle for, deberías usar un array.
Te dejo un ejemplo de como lo resolvería yo, también he añadido unos bucles for anidados donde ordeno el array de menor a mayor, esto lo hice así, porque como te dije, no se mucho de c++ y no se si habrá algún método o función que se encargue de ello, eso sí, el ejemplo funciona y hace lo que pide el enunciado.
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int materias,i,j,nota;
int prom, mnota, bnota, acum;
char codi;
cout<<"Ingrese la cantidad de materias que asiste: ";
cin>>materias;
int notas[materias];
acum = 0;
for (i=0; i<materias; i++)
{
cout<<"Ingrese la notas de la materia:"<<i+1<<": ";
cin>>notas[i];
(acum = acum+notas[i]);
}
for(i=0; i<materias; i++)
{
for(j=i+1; j<materias; j++)
{
if(notas[j]<notas[i])
{
nota=notas[j];
notas[j]=notas[i];
notas[i]=nota;
}
}
}
bnota = notas[0];
mnota = notas[materias-1];
(prom = acum/materias);
cout<<"--------------------------";
cout<<endl;
cout<<"El promedio total es de: "<<prom;
cout<<endl;
cout<<"La nota más alta es: "<<mnota;
cout<<endl;
cout<<"La nota más baja es: "<<bnota;
cout<<endl;
cout<<"--------------------------";
cout<<endl;
return 0;
}
Saludos.