Ir ao conteúdo
  • Cadastre-se
Barbara Zerneri

Programa trava ao executar e diz parou de funcionar.

Recommended Posts

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;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

se mediaf, media1, media2, etc são vetores por que você está omitindo os índices? Vou dar uma pista...

Coisas como: if(mediaf>5)
deveriam ser: if(mediaf[i]>5) 

Ou você teria que usar iteradores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×