Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Potrzebuje pomocy :D


Rekomendowane odpowiedzi

Opublikowano

Siema :) Od 2 dni uczę się jezyka c++ i nie wiem jak zrobić w tym kalkulatorze tak żeby jak ktoś poda literę zamiast cyfry, program prosił o ponowne wpisanie jej. Ps. Jeśli ktoś chciałby mi pomóc w nauce, bo niekiedy czegoś nie wiem tak jak tu, proszę pisać na gg: 51950997.

 

 

#include <iostream>
int main()
{
int liczba1;
int liczba2;
int decyzja;
bool lb1;
bool lb2;
do
{
 
 
std::cout << "Podaj pierwsza liczbe: ";
std::cin >> liczba1;
lb1 = std::cin.good();
if (lb1)
std::cout <<" "<<std::endl;
    else
       std::cout << "Podales zla liczbe!"<< std::endl;
 
std::cin.clear();
std::cin.sync();
std::cout << "Podaj druga liczbe: ";
std::cin >> liczba2;
std::cin.clear();
std::cin.sync();
std::cout << "Jakie dzia³a na tych liczbach zastosowaæ?"<< std::endl;
std::cout << "1.Dodawanie"<< std::endl;
std::cout << "2.Odejmowanie"<< std::endl;
std::cout << "3.Mnozenie"<< std::endl;
std::cout << "4.Dzielenie"<< std::endl;
std::cout << "0.Zakoñczyæ?"<< std::endl;
std::cin >> decyzja;
switch (decyzja)
{
case 0:
    break;
case 1:
    std::cout <<"Wynik= "<< liczba1+liczba2<< std::endl;
    break;
case 2:
    std::cout <<"Wynik= "<<liczba1-liczba2<< std::endl;
    break;
case 3:
    std::cout <<"Wynik= "<< liczba1*liczba2<< std::endl;
    break;
case 4:
    {
 
 
    if (liczba2 == 0)
        std::cout << "Nie dziel przez 0!";
    else
    std::cout <<"Wynik= "<< liczba1/liczba2<< std::endl;
 
    break;
    }
}
 
 
 
}while(decyzja != 0);
return 0;
}

Opublikowano

Musisz zrobić wczytywanie liczby, sprawdzanie std::cin.good() i naprawianie strumienia(std::cin.clear() i std::cin.sync()) w pętli, która będzie się wykonywała tak długo jak std::cin.good() zwraca false.

Opublikowano

Musisz zrobić wczytywanie liczby, sprawdzanie std::cin.good() i naprawianie strumienia(std::cin.clear() i std::cin.sync()) w pętli, która będzie się wykonywała tak długo jak std::cin.good() zwraca false.

Może ktoś zademonstrować? :D

Opublikowano

 

 

char liczba;

int main()
{
    do
    {
        cout << "Liczba: " << endl;
        cin >> liczba;
        if( isdigit( liczba ) )
        {
            cout << "Liczba to: " << liczba << endl;
        }
        else
        {
            cout << "To nie jest liczba!" << endl;
        }
    } while( !isdigit( liczba ) );
    
    return 0;
}

 

 

 

 

Myślę, że taki kodzik z <cctype> Cię zainteresuje, jeżeli chodzi o poprawne podawanie liczb ;)

pyhvh7E.png


 


Opublikowano

@Szymon2727 To nie ma sensu, 100 razy prościej jest wczytać do inta i użyć std::cin.good a nie babrać się z wczytywaniem pojedyńczych znaków, sprawdzaniem isdigit i łączeniem cyfr w całość...

Opublikowano

if(wczytana != '1' : '0' )

 

 

Ja rozumiem, że ten <cctype> to był głupi pomysł, ale pierdolnąć taką głupotę to trzeba na prawdę doskonale znać funkcje. W ogóle samą matematykę.

 

 

PS Jeszcze ma redaktora, o ja p******e.

pyhvh7E.png


 


  • 2 miesiące temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...