Ir ao conteúdo
  • Cadastre-se
HiperWars

Bloquear caracteres especiais e retornar a um menu ( c++ )

Recommended Posts

e aí galera, eu to com um probleminha... Não no código em si, mas em como atingir os objetivos dele.

To fazendo uma calculadora simples, apenas para praticar o conteúdo estudado recentemente. porém percebi que meu programa trava ao inserir: 

  • números gigantes (100000000 || 900000000)... etc;
  • caracteres especiais (, || . || * || ´ )... etc;
  • letras do alfabeto ( a || b || c)... etc;

Podem me ajudar a solucionar isso? Eu gostaria de bloquear esses caracteres ou fazer o programa parar de travar ao inserir tais números gigantes.

Outra questão é que se eu inserir números grandes até onde é permitido fazer isso, por exemplo em uma operação de soma, tenho retorno de resultado e números digitados em hexadecimal, creio que talvez pelo espaço que o número iria tomar...

 

o código é o seguinte:

#include <iostream>
#include <stdlib.h>
#include <locale.h>

using namespace std;

int main ()
{
    system("title Calculadora // Aula 21 - Operações Condicionais // C++");
    setlocale(LC_ALL, "portuguese");
    double n1, n2;
    int menu, mp, resto1, resto2, restof;

    cout << "Calculadora Versão 2.0" << endl << endl;
    cout << "Menu principal" << endl << endl;
    cout << "[1] Soma" << endl << "[2] Subtração" << endl << "[3] Multiplicação" << endl << "[4] Divisão e Resto" << endl << "[5] Verificação de Par/Impar" << endl << "[6] Todas as operações" << endl << "[7] Sair do Programa" << endl;
    cout << endl << "Digite uma opção: "; cin >> menu;
    //char x;
    if (menu == 1) {
        system("cls");
        cout << "Opção Selecionada: SOMA " << endl;
        cout << "Informe o primeiro número: "; cin >> n1;
        cout << "Informe o segundo  número: "; cin >> n2;
        cout << endl << "O resultado da soma entre " << n1 << " + " << n2 << " é igual á: " << n1 + n2 << endl << endl;

        cout << "[1] Retornar ao Menu Principal || [2] Sair do Programa: "; cin >> mp;
        if (mp == 1){
            system("cls"); return main();
        } else {
        return 0;
        }
        }
        else if (menu == 2) {
        system("cls");
        cout << "Opção Selecionada: Subtração " << endl;
        cout << "Informe o primeiro número: "; cin >> n1;
         cout << "Informe o segundo  número: "; cin >> n2;
        cout << endl << "O resultado da Subtração entre " << n1 << " - " << n2 << " é igual á: " << n1 - n2 << endl << endl;

        cout << "[1] Retornar ao Menu Principal || [2] Sair do Programa: "; cin >> mp;
        if (mp == 1){
            system("cls"); return main();
        } else {
        return 0;
        }
        }
            else if (menu == 3) {
        system("cls");
        cout << "Opção Selecionada: Multiplicação " << endl;
        cout << "Informe o primeiro número: "; cin >> n1;
         cout << "Informe o segundo  número: "; cin >> n2;
        cout << endl << "O resultado da Multiplicação entre " << n1 << " x " << n2 << " é igual á: " << n1 * n2 << endl << endl;

        cout << "[1] Retornar ao Menu Principal || [2] Sair do Programa: "; cin >> mp;
        if (mp == 1){
            system("cls"); return main();
        } else {
        return 0;
        }
        }
            else if (menu == 4) {
        system("cls");
        cout << "Opção Selecionada: Divisão e Resto " << endl;
        n1 = 0;
        n2 = 0;
        cout << "Informe o primeiro número: "; cin >> n1;
        cout << "Informe o segundo  número: "; cin >> n2;
        resto1 = n1+0;
        resto2 = n2+0;
        restof = resto1 % resto2;
        cout << endl << "O resultado da divisão entre " << n1 << " / " << n2 << " é igual á: " << n1 / n2 << endl;
        cout << "O resto da Divisão é: " << restof << endl << endl;

        cout << "[1] Retornar ao Menu Principal || [2] Sair do Programa: "; cin >> mp;
        if (mp == 1){
            system("cls"); return main();
        } else {
        return 0;
        }
        }
        else if (menu == 5)
            {
        system("cls");
        cout << "Opção Selecionada: Verificação de Par/Impar " << endl;
        n1 = 0;
        cout << "Informe um número: "; cin >> n1;
        resto1 = n1+0;
            if(resto1 % 2 == 0) {
                cout << "O número " << resto1 << " é PAR." << endl << endl;
            } else { cout << "O número " << resto1 << " é IMPAR." << endl << endl; }

        cout << "[1] Retornar ao Menu Principal || [2] Sair do Programa: "; cin >> mp;
        if (mp == 1){
            system("cls"); return main();
        } else if (mp == 2) {
        return 0;
        }
        else { return 0;}
            }
            else if (menu == 6) {
        system("cls");
        cout << "Opção Selecionada: Todas as Operações " << endl;
        cout << "Informe o primeiro número: "; cin >> n1;
        cout << "Informe o segundo  número: "; cin >> n2;

        cout << endl << "O resultado da soma entre " << n1 << " + " << n2 << " é igual á: " << n1 + n2 << endl << endl;
        cout << endl << "O resultado da Subtração entre " << n1 << " - " << n2 << " é igual á: " << n1 - n2 << endl << endl;
        cout << endl << "O resultado da Multiplicação entre " << n1 << " x " << n2 << " é igual á: " << n1 * n2 << endl << endl;
        cout << endl << "O resultado da divisão entre " << n1 << " / " << n2 << " é igual á: " << n1 / n2 << endl;
        resto1 = n1+0;
        resto2 = n2+0;
        restof = resto1 % resto2;
        cout << "O resto da Divisão é: " << restof << endl << endl;
        if(resto1 % 2 == 0) {
                cout << "O número " << resto1 << " é PAR." << endl << endl;
            } else { cout << "O número " << resto1 << " é IMPAR." << endl << endl; }
        if(resto2 % 2 == 0) {
                cout << "O número " << resto2 << " é PAR." << endl << endl;
            } else { cout << "O número " << resto2 << " é IMPAR." << endl << endl; }


        cout << "[1] Retornar ao Menu Principal || [2] Sair do Programa: "; cin >> mp;
        if (mp == 1){
            system("cls"); return main();
        } else {
        return 0;
        }
        }
         else if (menu == 7) {
            system("cls"); cout << "Obrigado por utilizar nossa ferramenta!" << endl << endl; system("pause"); return 0;}
            else if (menu >= 8 || menu <= 0){
                system("cls"); return main();}
                else { return 0;
            }
    system("pause");
    return 0;
}

Outra coisa que eu gostaria de saber é como colocar para repetir esse submenu...

 

else if (menu == 5)
            {
        system("cls");
        cout << "Opção Selecionada: Verificação de Par/Impar " << endl;
        n1 = 0;
        cout << "Informe um número: "; cin >> n1;
        resto1 = n1+0;
            if(resto1 % 2 == 0) {
                cout << "O número " << resto1 << " é PAR." << endl << endl;
            } else { cout << "O número " << resto1 << " é IMPAR." << endl << endl; }

        cout << "[1] Retornar ao Menu Principal || [2] Sair do Programa: "; cin >> mp;
        if (mp == 1){
            system("cls"); return main();
        } else if (mp == 2) {
        return 0;
        }
        else { return 0;}
            }

 

Eu pensei em fazer assim:

 

else if (menu == 5) {
void repetir();
... //codigo
}
cout << "[1] Retornar ao Menu Principal || [2] Sair do Programa: || [3] Repetir Operação "; cin >> mp;
        if (mp == 1){
            system("cls"); return main();
        } else if (mp == 2) {
        return 0;
        } else if (mp == 3) { system("cls"); return repetir();}

Mas eu não sei como fazer isso funcionar... acho que conseguem entender que quero digitar 3 e retornar ao menu 5...

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

×