Problmas com string
#include <iostream>
#include <cstdlib>
#include <string>
//#include "../cygwin/usr/i686-pc-mingw32/sys-root/mingw/include/tchar.h"
//#include "../cygwin/usr/i686-pc-mingw32/sys-root/mingw/include/locale"
#include "locale.h"
/ run this program using the console pauser or add your own getch, system("pause") or input loop /
using namespace std;
int main()
{
//_tsetlocale(LC_ALL, _T("portuguese_brazil"));
setlocale(LC_ALL, "");
char ch;
float mo1,mp1,mb1,mo2,mp2,mb2,mo3,mp3,mb3,ptot1,ptot2,ptot3;
//const float pmnm;
ch = 0;
string pais1, pais2, pais3;
cout << "Entre com o primeiro país.\n";
cin >> pais1;
cout << "Entre com o número de medalhas.\n";
cout << "Medalhas de ouro, prata e bronze respectivamente.\n";
cin >> mo1 >> mp1 >> mb1;
mo1 = (3*mo1) + 1;
mp1 = (2*mp1) + 1;
mb1 = mb1 + 1;
ptot1 = mo1 + mp1 + mb1;
cout << "Entre com o nome do segundo país.\n";
cin >> pais2;
cout << "Entre com o nº de medalhas para o segundo paÃs.\n";
cout << "Entre medalhas de ouro, prata e bronze respectivamente.\n";
cin >> mo2 >> mp2 >> mb2;
mo2 = (3*mo2) + 1;
mp2 = (2*mp2) + 1;
mb2 = mb2 + 1;
ptot2 = mo2 + mp2 + mb2;
cout << "Entre com o nome do terceiro país,\n";
cin >> pais3;
cout << "Entre com o nº de medalhas para o terceiro país.\n";
cout << "Entre medalhas de ouro, prata e bronze respectivamente.\n";
cin >> mo3 >> mp3 >> mb3;
mo3 = (3*mo3) + 1;
mp3 = (2*mp3) + 1;
mb3 = mb3 + 1;
ptot3 = mo3 + mp3 + mb3;
while (ch != -1)
{
if ((ptot1 > ptot2) && (ptot1 > ptot3))
{
cout << "O " << pais1 << " é o campeão.\n" << endl;
if (ptot2 > ptot3)
{
cout << "O " << pais2 << " é o vice-campeão.\n" << endl;
cout << "O " << pais3 << " é o terceiro colocado.\n" << endl;
}
else
{
cout << "O " << pais3 << " é com vice-campeão.\n";
cout << "O " << pais2 << " é o terceiro colocado.\n";
}
}
else if ((ptot2 > ptot1) && (ptot2 > ptot3))
{
cout << "O " << pais2 << " é o campeão.\n";
if (ptot1 > ptot3)
{
cout << "O " << pais1 << " é o vice-campeão.\n";
cout << "O " << pais3 << " é o terceiro colocado.\n";
}
else
{
cout << "O " << pais3 << " é vice-campeão.\n";
cout << "O " << pais2 << " é o terceiro colocado.\n";
}
}
else if ((ptot3 > ptot1) && (ptot3 > ptot2))
{
cout << "O " << pais3 << " é o campeão.\n";
if (ptot1 > ptot2)
{
cout << "O " << pais1 << " é o vice-campeão.\n";
cout << "O " << pais2 << " é o terceiro colocado.\n";
}
else
{
cout << "O " << pais2 << " é o vice-campeão.\n";
cout << "O " << pais1 << " é o terceiro colocado.\n";
}
}
cout << "Para sair digite -1\n.";
cin >> ch;
if (ch == -1)
cout << "Deseja sair, digite -1.\n" << endl;
break;
}
//system ("PAUSE");
//return EXIT_SUCCESS;
}
Por que no código acima, quanto tento entrar com o nome do país, uma string longa, dá erro? Por exemplo: tento entrar com a palavra Estados Unidos.
Ele pula tudo e vai para o final, ignora o while e no final aparece a frase:Process excited with return value 0. Mesmo colocando o while no final ou no início.
Discussão (3)
Carregando comentários...