Olá, agradeço MUITO quem puder me ajudar!
O programa executa normalmente até a parte de imprimir os dados do aluno com maior media. Nesse passo, ele trava a execução e aparece aquela mensagem dizendo que o programa parou de funcionar, mas não consigo encontrar o que há de errado:
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
void le (vector<string> &nome, vector <int> &ra, vector <float> &p1, vector <float> &p2, vector <float> &p3, int &qt);
void imprime (int pos, vector <string> nome, vector <int> ra, vector <float> p1, vector <float> p2, vector <float> p3);
vector <float> NF1 (vector <float> p1, vector <float> p2);
vector <float> NF2 (vector <float> p1, vector <float> p2, vector <float> p3);
int main(int argc, char** argv) {
vector <string> nome;
vector <int> ra;
vector <float> p1, p2, p3, media1, media2, mediaf;
float maior;
int pos, t;
le (nome, ra, p1, p2, p3, t);
media1=NF1(p1, p2);
media2= NF2(p1, p2, p3);
maior=0;
for (int i=0; i<media1.size(); i++)
{
if(mediaf>5)
mediaf.push_back(media1);
else
mediaf.push_back(media2);
if(maior<mediaf)
{
maior=mediaf;
pos=i;
}
}
imprime (pos, nome, ra, p1, p2, p3);
return 0;
}
void le (vector<string> &nome, vector <int> &ra, vector <float> &p1, vector <float> &p2, vector <float> &p3, int &qt)
{
string n;
int r;
float n1,n2,n3;
qt=0;
cout<<"Nome do aluno: ";
cin >> n;
nome.push_back(n);
while(n!="FIM")
{
cout<<"RA: ";
cin >>r;
ra.push_back(r);
cout<<"Nota P1: ";
cin >>n1;
p1.push_back(n1);
cout<<"Nota P2: ";
cin >>n2;
p2.push_back(n2);
cout<<"Nota P3: ";
cin >>n3;
p3.push_back(n3);
qt++;
cout<<"Nome do aluno ('FIM' para terminar): ";
cin >> n;
nome.push_back(n);
}
}
void imprime (int pos, vector <string> nome, vector <int> ra, vector <float> p1, vector <float> p2, vector <float> p3)
{
cout <<"Aluno: "<< nome[pos]<<endl;
cout <<"RA: "<<ra[pos]<<endl;
cout <<"Nota P1: "<<p1[pos]<<endl;
cout <<"Nota P2: "<<p2[pos]<<endl;
cout <<"Nota P3: "<<p3[pos]<<endl;
}
vector <float> NF1 (vector <float> p1, vector <float> p2)
{ vector <float>n;
for(float i=0; i<p1.size(); i++)
{
n.push_back((p1+p2)/2);
}
return n;
}
vector <float> NF2 (vector <float> p1, vector <float> p2, vector <float> p3)
{ vector <float> n2;
for(float i=0; i<p1.size(); i++)
{
n2.push_back((p1+p2+2*p3)/4);
}
return n2;
}