Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com string.


deathcon4

Pergunta

#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.
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...