Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

R. 15 - poprawność kodu dot. zadania domowego

Ostatnio zmodyfikowano 2019-04-13 00:36
Autor Wiadomość
KalReegar
Temat założony przez niniejszego użytkownika
R. 15 - poprawność kodu dot. zadania domowego
» 2019-04-08 18:51:21
Witam.

Dopiero rozpoczynam przygodę z programowaniem i z wielką chęcią chcę przeczytać uwagi dotyczące mojego kodu do zadania domowego w rozdziale nr. 15. Na przykładzie wrzuconego programu chciałbym aby ktoś ukazał mi błędy i złe praktyki których powinienem unikać w dalszym pisaniu i nauce.

Wszystkie uwagi mile widziane.

C/C++
#include <iostream>

int main() {
    int a, b, chose;
    int wynik = 0;
    bool error;
    do {
        do {
            std::cout << "Wynik = " << wynik << std::endl;
            std::cout << "Podaj pierwsza liczbe: ";
            std::cin >> a;
            error = std::cin.fail();
            if( std::cin.fail() ) {
                std::cout << "Podales bledna liczbe!" << std::endl;
                std::cin.clear();
                std::cin.ignore( 1000, '\n' );
            }
        } while( error );
       
        do {
            std::cout << "Podaj druga liczbe : ";
            std::cin >> b;
            error = std::cin.fail();
            if( std::cin.fail() ) {
                std::cout << "Podales bledna liczbe!" << std::endl;
                std::cin.clear();
                std::cin.ignore( 1000, '\n' );
            }
        } while( error );
       
        if( a != 0 && b != 0 ) {
            std::cout << "[1] Dodawanie\n[2] Odejmowanie\n[3] Mnozenie\n[4] Dzielenie\n[5] Rezygnuj" << std::endl;
            std::cin >> chose;
            if( std::cin.fail() ) {
                std::cout << "Wybrales bledne dzialanie!" << std::endl;
                std::cin.clear();
                std::cin.ignore( 1000, '\n' );
            }
            switch( chose ) {
            case 1:
                wynik = a + b;
                break;
            case 2:
                wynik = a - b;
                break;
            case 3:
                wynik = a * b;
                break;
            case 4:
                wynik = a / b;
                break;
            case 5:
                return 0;
                break;
            }
        } else {
            return 0;
        }
    } while( 1 );
   
}
P-174350
pekfos
» 2019-04-09 11:12:39
1. Wypisuje obecny wynik
2. Wprowadź liczbę
3. Wybierz działanie (jeżeli liczba różna od 0)
4. Wykonaj obliczenia (jeżeli liczba różna od 0)
5. Wróć do kroku 1.
6. Jeżeli wprowadzoną liczbą jest 0, zakończ program.
Zadanie mówi o wczytywaniu jednej liczby, nie dwóch.
P-174359
KalReegar
Temat założony przez niniejszego użytkownika
» 2019-04-13 00:36:44
Ehh, moje niedopatrzenie :)

Teraz się zgadza?

C/C++
#include <iostream>

int main() {
    int a, option;
    int result = 0;
    bool invalid = 0;
    do {
        do {
            std::cout << "Wynik to: " << result << std::endl;
            std::cout << "Podaj liczbe: ";
            std::cin >> a;
            invalid = std::cin.fail();
            if( invalid ) {
                std::cout << "Podales bledna liczbe!\n";
                std::cin.clear();
                std::cin.ignore( 1000, '\n' );
            }
        } while( invalid );
       
        if( a != 0 ) {
            do {
                std::cout << "Wybierz dzialanie: \n" << std::endl;
                std::cout << "[1] Dodawanie\n[2] Odejmowanie\n[3] Mnozenie\n[4] Dzielenie \n";
                std::cin >> option;
                invalid = std::cin.fail();
                if( invalid ||( option != 1 && option != 2 && option != 3 && option != 4 ) ) {
                    std::cout << "Wybrales bledne dzialanie!\n";
                    std::cin.clear();
                    std::cin.ignore( 1000, '\n' );
                }
            } while( invalid ||( option != 1 && option != 2 && option != 3 && option != 4 ) );
           
            switch( option ) {
            case 1:
                result += a;
                break;
            case 2:
                result -= a;
                break;
            case 3:
                result *= a;
                break;
            case 4:
                result /= a;
                break;
            }
        } else
             return 0;
       
    } while( 1 );
   
}
P-174382
« 1 »
  Strona 1 z 1