• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dodanie komunikatu

VPS Starter Arubacloud
0 głosów
390 wizyt
pytanie zadane 24 kwietnia 2015 w C i C++ przez WojciechJot Gaduła (3,410 p.)

 Jak zrobic w tym programie zeby od razu po wpisaniu nieprawidlowego X lub Y wypisalo komunikat "niepoprawna liczba" chodzi mi o to ze jak ktos wpisze literke to takie cos sie wyswietli i dalsza czesc programu sie nie pokaze kminie kminie i nie moge wykminic


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>
using namespace std;

float x, y;
int dzialanie;

int main()

{
    cout << "WITAM W PROGRAMIE" << endl;
    cout << "=================" << endl;
    cout << ""<<endl;
    cout << ""<<endl;
    cout << ""<<endl;

    cout <<"Podaj pierwsza liczbe: "<<endl;
    cin >> x;

    cout <<"Podaj druga liczbe; "<<endl;
    cin >> y;


    cout << "=================" << endl;
    cout << "1 - DODAWANIE" <<endl;
    cout << "2 - ODEJMOWANIE" <<endl;
    cout << "3 - MNOZENIE" << endl;
    cout << "4 - DZIELENIE" << endl;
    cout << "=================" << endl;

    cout << "Wybierz opcje:";
    cin >> dzialanie;
    cout << ""<<endl;
    cout << ""<<endl;

    switch(dzialanie)


{
        case 1:
        cout <<"Wynik dodawnia wynosi:"<<x+y;
        break;

        case 2:
        cout <<"Wynik odejmowania wynosi:"<<x-y;
        break;

        case 3:
        cout <<"Wynik mnozenia wynosi:"<<x*y;
        break;

        case 4:
        if (y==0) cout <<"Nie dzielimy przez 0";
        else cout <<"Wynik dzielenia wynosi: "<<x/y;
        break;

        default: cout <<"Cos zle wpisales";



}

    return 0;
}

1 odpowiedź

+1 głos
odpowiedź 24 kwietnia 2015 przez Radfler VIP (101,030 p.)
wybrane 24 kwietnia 2015 przez WojciechJot
 
Najlepsza

Dodaj po cinach taką linijkę:

if(cin.fail()) {
    
    system("cls");
    cerr << "Nieprawidlowa liczba";
    getch();
    exit(1);
}

To sprawdzi czy ktoś wpisał dobre dane.

Poza tym usuń te linijki:

cout << ""<<endl;
cout << ""<<endl;
cout << ""<<endl;

I zmień je na:

cout << endl << endl << endl;

I nie inkluduj <stdio.h>, bo z tego co widzę w ogóle z niej nie korzystasz.

komentarz 24 kwietnia 2015 przez WojciechJot Gaduła (3,410 p.)
Mam rozumiec ze intrukcja cin.fail oznacza to ze jesli cin nie jest liczba to ma sie zadziać coś tam? w tym wypadku wyczyszczenie ekranu i pokazanie komunikatu?
komentarz 24 kwietnia 2015 przez WojciechJot Gaduła (3,410 p.)
Nie wiem dokladnie ktorych uzywac po prostu od MZ z filmiku przepisalem dla spokoju zeby nie bylo bledow ;D działa ;)

// wlasnie sie zastanawialem co z tymi endl zrobic :D
komentarz 24 kwietnia 2015 przez Radfler VIP (101,030 p.)

Zrobię Ci takie wyjaśnienie :D

// Jeżeli cin nawalił, czyli ktoś wprowadził nieprawidłowe
// dane to funkcja fail() sprawi, że wykona się instrukcja if()
if(cin.fail()) {                 
     
    // Wyczyszczenie ekranu
    system("cls");        

    // Wprowadzenie do strumienia błędów (cerr -> console error)
    // informacji o błędzie.
    cerr << "Nieprawidlowa liczba"; 
    
    // Czekanie na naciśnięcie klawisza
    getch();                        
    
    // Zakończenie programu z komunkatem o błędzie (zwrócenie 1)
    exit(1);
}

cin.fail() sprawdzi ogólnie, czy cin nie jest zepsuty (bo np. ktoś wprowadził nieprawidłowe dane :)

 

komentarz 24 kwietnia 2015 przez WojciechJot Gaduła (3,410 p.)
Ale jakie nieprawidlowe dane zawieraja sie w cin err? Rozne od stalej? w tym wypadku sstala to float (jak wiadomo float to tylko liczbowe, zmiennoprzecinkowe)

Chyba sam sobie odpowiadam na pytanie, ale chce sie upewnić :D
komentarz 24 kwietnia 2015 przez Radfler VIP (101,030 p.)
To bez znaczenia. Jak sama nazwa wskazuje, if zostanie tu wykonany kiedy cin się zepsuje, czyli np. kiedy będę chciał od użytkownika float, a on mi poda tekst. A cerr to praktycznie to samo co cout z tą różnicą, że ten strumień informuje o błędach. Są jeszcze sposoby na naprawienie strumienia po błędzie, jednak na początku nauki nie warto sobie tym w głowie mącić :)
komentarz 24 kwietnia 2015 przez WojciechJot Gaduła (3,410 p.)
Ok dzięki, plusik polecial! :)
komentarz 24 kwietnia 2015 przez Do.Zzay Mądrala (5,700 p.)
Dodam, że można używać "\n" w łańcuchu znaków, zamiast "

Podobne pytania

0 głosów
0 odpowiedzi 286 wizyt
0 głosów
1 odpowiedź 123 wizyt
0 głosów
1 odpowiedź 1,470 wizyt
pytanie zadane 3 lipca 2018 w JavaScript przez Kamil Batorski Obywatel (1,870 p.)

93,006 zapytań

141,973 odpowiedzi

321,254 komentarzy

62,345 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...