Tylko liczby dodatnie

0

W czystym c++(w konsoli) robię kod, który po wpisaniu liczby 1-7 wbijesz na subkategorie.

  1. Co zrobić, aby po wpisaniu liczby powyżej 1999999999 nie szalał?
  2. Jak zrobić aby po wpisaniu liczby ujemnej, czy innego znaku niż liczba, pojawił się błąd np.
    cout << "Wpisz liczbe 1-7!/nWpisz funkcje : "; goto funkcja;

Z góry dzięki ;-)

0

Ad.1 Sprawdź "pojemność" typów wbudowanych, wtedy się dowiesz że to pytanie bez sensu.
Ad.2 Wystarczy najzwyklejszy warunek:

 if(liczba=>1 && liczba<=7)
                   //kod dla true
 else
   //kod dla false

A tak ode mnie, goto używa się w przypadkach najwyższej konieczności, najczęściej by wyjść z wielokrotnie zagnieżdżonej pętli (tak bardzo wielokrotnie ;-P). W swoich programach jeszcze nigdy nie potrzebowałem używać goto.

0

Coś nie działa ;/ Jak wpiszę np. + to pika cały czas ;/

    funkcje1:
    cin >> funkcje;


   if(funkcje <= 1 & funkcje >=7){ cout << "\a Bez przesady!\nWpisz jeszcze raz: "; goto funkcje1; }
   else{     
     switch(funkcje)
       {
         case 1 : cout << "1 - pomoc\n2[...]\nWpisz funkcje: "; goto funkcje1; break;
         case 2 : cout << "\nZapraszamy ponownie !"; break;
         case 3 : liczby(); break;
         case 4 : test(); break;
         case 5 : size(); break;
         case 6 : potega(); break;
         case 7 : testone(); break;
         default: cout << "\aZla funkcja!\nWpisz jeszcze raz: "; goto funkcje1; break;
        } 
   }
0

Proponuję:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s;
    cin>>s;
    if(s.size()!=1 || s[0]<'1' || s[0]>'7')
        cout << "BLAD" << endl;
    return 0;
}

jako (s[0]-'0') masz wpisaną liczbę.

0

Dobra, to potem to zrobię jak do tego dojdę w Symfonii.

1 użytkowników online, w tym zalogowanych: 0, gości: 1