Lo primero de todo:
El código entre etiquetas de código GeSHi Algunos consejos y cosillas que te pueden servir de ayuda;
- No uses <stdio.h>. Esta librería es típica de C, no de C++ (en C++ es <cstdio>) y además no la usas para nada. Usas las entradas/salidas de <iostream> por lo que no la necesitas. Hay que saber lo que se pone y por qué se pone.
- Sobre el <cout> y el <endl>: Se pueden concatenar estos últimos y no es necesario poner unas comillas vacías para usarlo por separado. También puedes usarlo antes de una cadena y después. Además puedes usar el caracter especial "\n" para saltos de línea (hay una sútil diferencia entre "\n" y <endl> pero bueno...)
cout << "Texto" << endl;
cout << "Texto" << endl << endl << endl;
cout << endl;
cout << endl << "Texto" << endl;
cout << "\nTexto" << endl;
Ahora los errores de tu programa:
- No estás usando un array/arreglo bidimensional. Esto es una matriz y se declara con dos parejas de corchetes: <tipo> <nombre_matriz>[<filas>][<columnas>].
- Estás acumulando valores (notas) en <suma> pero no has inicializado <suma> por lo que puede tener cualquier valor.
- Debes guardar todas las notas y al no usar una matriz, una vez que has utilizado las notas de un alumno, las pierdes porque guardas las notas del siguiente.
Todos los ejercicios de este tipo tienen una forma estándar de hacerlos que es la siguiente:
#include <iostream>
using namespace std;
// Usamos constantes y asi podemos agrandar o reducir los valores del programa sin tener que modificarlo entero
const int MAX_ALUMNOS = 100; // numero maximo de alumnos que podemos tratar
const int NUM_NOTAS = 3; // numero de notas por alumno
int main(){
// Creamos una matriz. Cada fila son las notas de un alumno y cada columna es una nota
double notas[MAX_ALUMNOS][NUM_NOTAS];
int num_alumnos; // numero de alumnos que vamos a tratar. Debe ser menor o igual que <MAX_ALUMNOS>
// El promedio de cada alumno podemos guardarlo (necesitamos un array/arreglo mas entonces) o calcularlo y sobrescribirlo para cada alumno
double promedio[MAX_ALUMNOS] = {0}; // arreglo para guardarlos con cada celda inicializada en 0
double promedio = 0; // si no queremos guardarlos, basta con esto. Inicializamos a 0 para poder acumular luego ahi las notas
// Podemos hacer un filtro para obtener el numero de alumnos a tratar
// El filtro te pide un valor y te lo sigue pidiendo mientras se cumpla la condicion del <while>
do{
cout << "Introduce el numero de alumnos: ";
cin >> num_alumnos;
} while(num_alumnos < 1 || num_alumnos > MAX_ALUMNOS);
// El programa no pasara el filtro hasta que <num_alumnos> este entre 1 y <MAX_ALUMNOS>
// A partir de ahora usaremos <num_alumnos> en lugar de <MAX_ALUMNOS>
// Pedimos las notas de cada alumno
for(size_t i = 0; i < num_alumnos; ++i){
cout << "Notas del alumno " << i+1 << endl;
for(size_t j = 0; j < NUM_NOTAS; ++j){
// Pedir cada nota
}
// Si vamos a guardar todos los promedios en un arreglo, podemos calcularlos aqui
}
// ...El resto del programa...
}
Yo creo que ya tienes una ayuda bastante grande con el programa. Ahora te queda terminarlo a ti (tampoco te lo iba a hacer entero...
)
Si tienes algún problema en alguna parte, coloca tu código (entre etiquetas de código GeSHi) para que podamos ayudarte.