Ir ao conteúdo

C++ Erro com loop infinito


Ir à solução Resolvido por Visitante,

Posts recomendados

Postado

Olá!!! Sou novo aqui,e também sou novo em todas as linguagens de programaçao. Estava estudando C++ aqui e decidi fazer um pequeno ''jogo de texto'' para eu ir praticando. Mas me deparei com um erro que não consigo resolver. Vou colocar aqui a parte do codigo que está dando erro,eu não sei se tem algum jeito melhor de copiar e colar aqui...

retry:
cout << " -----O que voce faz?-----\n\n";

int Escolha1;
cout << "*1 = Ataca.\n";
cout << "*2 = Se defende.\n";
cin >> Escolha1;
if (Escolha1 == 1)
{
    cout << "\nVoce atacou a criatura!";
}

else if (Escolha1 == 2)
{
    cout <<"\nVoce se defendeu!";
}

else 
{
    cout << "\n voce esta fazendo errado,Guerreiro! Escolha '1' para atacar e '2' para se defender!\n\n";
    goto retry;

O codigo é bem basico,e com certeza deve ter algo aí que eu posso melhorar,mas pra mim que sou iniciante,está funcionando bem,então... O Erro é que quando eu digito uma LETRA onde está pedindo a variável INT o programa entra em um loop infinito,e eu tenho que começar tudo de novo. Como resolver? Por favor,usem a linguagem mais  simples possivel,pois não entendo muito!!

Obrigado!

  • Solução
Postado

Não há erro no seu código. Porém, você tem que tratar uma possível inserção errada por parte do usuário.


A maneira mais segura de fazer isso é lendo uma string.

 

#include<iostream>

using namespace std;

int main()
{

retry:
    cout << " -----O que voce faz?-----\n\n";

    string Escolha1;
    cout << "*1 = Ataca.\n";
    cout << "*2 = Se defende.\n";
    cin >> Escolha1;
    if (Escolha1 == "1")
    {
        cout << "\nVoce atacou a criatura!";
    }

    else if (Escolha1 == "2")
    {
        cout <<"\nVoce se defendeu!";
    }

    else
    {
        cout << "\n voce esta fazendo errado,Guerreiro! Escolha '1' para atacar e '2' para se defender!\n\n";
        goto retry;

    }
}

 

Postado

Cara,muito obrigado!!! Me ajudou muito mesmo!!

Eu tinha pesquisado alguns videos ensinando a usar o while,cin.clear e cin.ignore pra corrigir o erro,mas eu estava achando muito complicado. Agora,quando coloquei o string,funcionou na hora! Apesar de eu nao saber muito bem o que é string. O string lê números e letras?

Muito obrirgado mesmmo!!!

  • Curtir 1
Postado

string em C é o nome que se dá a uma cadeia de caracteres. Pode-se dizer que string é um vetor de char.

As string são utilizadas para guardar nomes, frases e até números. O problema dela é que não dá pra realizar operações aritméticas facilmente com números em formato de string, precisa converter de string para INT, só depois pode-se somar, subtrair etc.

 

https://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Manipulando_strings

Postado

Muito obrigado,amigo! Vou ler o link que me mandou!

Obrigado mesmo!!!!

Tenho outra dúvida,mas como não é relacionada ao mesmo problema,vou fazer outro tópico!

Valeu!

Se tiver como fechar este tópico,podem fechar!

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!