Tienes varios errores, te propongo que compares tú código con el que expongo y veas los reemplazos y agregados que realicé..
El formato del archivo de calificaciones es:
Como ves no es necesario que los datos esten totalmente en filas y estudiando el código podrás ver el porque se puede implementarlo así.
/*Linux, g++ v.4.1.2*/
#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>
#include <cstdio>
using namespace std;
int main(int argc,char* argv[])
{
vector<int> vInt;
ifstream inCalif("calificaciones.txt");
if( !inCalif )
{
cerr << "Error en Apertura de Archivo.";
return EXIT_FAILURE;
}
int i;
double dResult;
while( (inCalif >> i) )
{
vInt.push_back(i);
}
inCalif.clear();
inCalif.close();
vector<int>::iterator pos = vInt.begin();
vector<int>::iterator vend = vInt.end();
cout << "Las calificaciones son:\n";
while( pos != vend)
{
cout << *pos << '\t';
dResult += *pos++;
}
dResult /= vInt.size();
cout << endl;
cout << "El promedio es: " << setprecision(3) << dResult << endl;;
return EXIT_SUCCESS;
}
Saludos.