Tablice nie są dynamiczne lecz globalne, więc pamięci nie możesz zwolnić w trakcie działania programu.
Neprawidłowo wpisujesz wartości do tablicy. Pętla wykonuje się od 1 do 5 włącznie. A indeksy tablicy mają wartości kolejno: 0, 1, 2, 3, 4. Więc Ty będziesz próbował wpisać wartość do elementu o indeksie [5], którego nie ma!
Pętla powinna wyglądać tak:
for( int i = 0; i < 5; i++ )
a poza tym, źle korzystasz z tej pętli! (na dole umieszczę poprawiony kod, bo tłumaczyć tutaj co jest źle, to za dużo roboty :-P)
Średnią policzymy tak:
srednia = (float)(oceny[0]+oceny[1]+oceny[2]+oceny[3]+oceny[4])/5;
W razie kłopotów — pytaj! :-P
#include <iostream>
#include <cstdio>
#include <windows.h>
using namespace std;
int oceny[ 5 ];
int wybor;
float srednia;
int main()
{
for( ;; )
{
cout << endl;
cout << "MENU GLOWNE" << endl;
cout << "--------------" << endl;
cout << "1. Wypisz oceny. " << endl;
cout << "2. Policz srednia. " << endl;
cout << "3. Wyczysc pamiec ocen. " << endl;
cin >> wybor;
switch( wybor )
{
case 1:
cout << "Wypisz oceny: " << endl;
for( int i = 0; i < 5; i++ )
{
cout << "Podaj " << i + 1 << " ocene: " << endl;
cin >> oceny[ i ];
}
getchar();
system( "cls" );
break;
case 2:
srednia = (float)(oceny[ 0 ] + oceny[ 1 ] + oceny[ 2 ] + oceny[ 3 ] + oceny[ 4 ]) / 5;
cout << srednia << endl;
}
}
return 0;
}
Poprawek jest sporo:
- dołączyłeś niepotrzebne biblioteki
- źle napisałeś pętlę, która wykonywała się raz
- ciągle nadpisywałeś drugi element tablicy o indeksie 1
- break w złym miejscu
....