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

Lekcja 15 pętla do..whle. Czy można uznać to za dobrą prace domową?

Ostatnio zmodyfikowano 2012-05-10 22:02
Autor Wiadomość
Vendi
Temat założony przez niniejszego użytkownika
Lekcja 15 pętla do..whle. Czy można uznać to za dobrą prace domową?
» 2012-03-31 12:54:46
Wykonałem ten nieszczęsny kalkulator z funkcjami które miał posiadać.
C/C++
#include <iostream>
int main()
{
    int dodawanie;
    int dodawanie2;
    int wybor;
    do
    {
        std::cout << "\nWybierz akcje:\n\n1.Dodawanie\n2.Odejmowanie\n3.Mnozenie\n4.Dzielenie\n0.Wyjscie" << std::endl;
        std::cout << "\nAkcja: ";
        std::cin >> wybor;
        std::cin.good();
        {
            if( wybor >= 0 && std::cin.good() == 1 )
                 std::cout << "Dobry wybor." << std::endl;
            else
                 std::cout << "Blad!" << std::endl;
           
        }
        switch( wybor )
        {
        case 1:
            std::cout << "Podaj dwie liczby: " << std::endl;
            std::cout << "Pierwsza: ";
            std::cin >> dodawanie;
            std::cin.good();
            std::cout << "Druga: ";
            std::cin >> dodawanie2;
            std::cin.good();
            if( std::cin.good() == 1 )
                 std::cout << "Wynik: " << dodawanie + dodawanie2 << std::endl;
            else
                 std::cout << "Operacja nie moze zostac wykonana." << std::endl;
           
            break;
        case 2:
            std::cout << "Podaj dwie liczby: " << std::endl;
            std::cout << "Pierwsza: ";
            std::cin >> dodawanie;
            std::cin.good();
            std::cout << "Druga: ";
            std::cin >> dodawanie2;
            std::cin.good();
            if( std::cin.good() == 1 )
                 std::cout << "Wynik: " << dodawanie - dodawanie2 << std::endl;
            else
                 std::cout << "Operacja nie moze zostac wykonana." << std::endl;
           
            break;
        case 3:
            std::cout << "Podaj dwie liczby: " << std::endl;
            std::cout << "Pierwsza: ";
            std::cin >> dodawanie;
            std::cin.good();
            std::cout << "Druga: ";
            std::cin >> dodawanie2;
            std::cin.good();
            if( std::cin.good() == 1 )
                 std::cout << "Wynik: " << dodawanie * dodawanie2 << std::endl;
            else
                 std::cout << "Operacja nie moze zostac wykonana." << std::endl;
           
            break;
        case 4:
            std::cout << "Podaj dwie liczby: " << std::endl;
            std::cout << "Pierwsza: ";
            std::cin >> dodawanie;
            std::cin.good();
            std::cout << "Druga: ";
            std::cin >> dodawanie2;
            std::cin.good();
            if( std::cin.good() == 1 )
                 std::cout << "Wynik: " << dodawanie / dodawanie2 << std::endl;
            else
                 std::cout << "Operacja nie moze zostac wykonana." << std::endl;
           
            break;
        case 0:
            std::cout << "Dziekujemy za prace z programem." << std::endl;
            break;
           
        default:
            std::cout << "\nBledny wybor, dostepne opcje to 1,2,3,4!" << std::endl;
            break;
        }
    } while( wybor != 0 );
   
    return 0;
}

Wszystko działa prawidłowo i mam pytanie, czy o takie wyjście z programu chodziło?
P-53578
SeaMonster131
» 2012-03-31 12:58:28
C/C++
std::cin.good();
{
    if( wybor >= 0 && std::cin.good() == 1 )
         std::cout << "Dobry wybor." << std::endl;
    else
         std::cout << "Blad!" << std::endl;
   
}

Co to robi? A dokładniej ta pierwsza linijka?

A po drugie - jeżeli program działa prawidłowo, tak jak ma działać, rozumiesz to co napisałeś, tzn że wykonałeś dobrze prace domową.
P-53580
Vendi
Temat założony przez niniejszego użytkownika
» 2012-03-31 13:34:38
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.


To jest punkt trzeci, tych pierwszych nie zrozumiałem. W tym chodzi o to że musi być większy od zera a nie np. -5.
A to "&&" to tylko wymuszenie dobrego wyboru - operacja logiczna. I tak się nie równam więc nie myśl że Ciebie czegoś ucze.
P-53581
SeaMonster131
» 2012-03-31 13:38:11
Chodzi mi o to:
std::cin.good();
 ? Bo to nic nie robi, tak samo te klamry :)
W tym switch też masz taki kod (który podałem), a nie potrzebnie.
P-53583
Vendi
Temat założony przez niniejszego użytkownika
» 2012-03-31 14:45:06
Myślę że stworzyłem już finalną wersje tego kalkulatora, w żaden sposób nie można go zagiąć ;)
C/C++
#include <iostream>
int main()
{
    int dodawanie;
    int dodawanie2;
    int wybor;
    bool a;
    bool b;
    bool c;
    do
    {
        std::cout << "\nWybierz akcje:\n\n1.Dodawanie\n2.Odejmowanie\n3.Mnozenie\n4.Dzielenie\n0.Wyjscie" << std::endl;
        std::cout << "\nAkcja: ";
        std::cin >> wybor;
        std::cin.good();
        a = std::cin.good();
        {
            if( wybor <= 4 && std::cin.good() == 1 )
                 std::cout << "Dobry wybor." << std::endl;
            else
                 std::cout << "Blad!" << std::endl;
           
        }
        switch( wybor )
        {
        case 1:
            std::cout << "Podaj dwie liczby: " << std::endl;
            std::cout << "Pierwsza: ";
            std::cin >> dodawanie;
            std::cin.good();
            b = std::cin.good();
            if( b == 1 )
                 std::cout << "Druga: ";
            else
                 std::cout << "Wystapily bledy." << std::endl;
           
            std::cin >> dodawanie2;
            std::cin.good();
            c = std::cin.good();
            if( c == 1 && b == 1 )
                 std::cout << "Wynik: " << dodawanie + dodawanie2 << std::endl;
            else
                 std::cout << "Operacja nie moze zostac wykonana." << std::endl;
           
            break;
        case 2:
            std::cout << "Podaj dwie liczby: " << std::endl;
            std::cout << "Pierwsza: ";
            std::cin >> dodawanie;
            std::cin.good();
            b = std::cin.good();
            if( b == 1 )
                 std::cout << "Druga: ";
            else
                 std::cout << "Wystapily bledy." << std::endl;
           
            std::cin >> dodawanie2;
            std::cin.good();
            c = std::cin.good();
            if( c == 1 && b == 1 )
                 std::cout << "Wynik: " << dodawanie - dodawanie2 << std::endl;
            else
                 std::cout << "Operacja nie moze zostac wykonana." << std::endl;
           
            break;
        case 3:
            std::cout << "Podaj dwie liczby: " << std::endl;
            std::cout << "Pierwsza: ";
            std::cin >> dodawanie;
            std::cin.good();
            b = std::cin.good();
            if( b == 1 )
                 std::cout << "Druga: ";
            else
                 std::cout << "Wystapily bledy." << std::endl;
           
            std::cin >> dodawanie2;
            std::cin.good();
            c = std::cin.good();
            if( c == 1 && b == 1 )
                 std::cout << "Wynik: " << dodawanie * dodawanie2 << std::endl;
            else
                 std::cout << "Operacja nie moze zostac wykonana." << std::endl;
           
            break;
        case 4:
            std::cout << "Podaj dwie liczby: " << std::endl;
            std::cout << "Pierwsza: ";
            std::cin >> dodawanie;
            std::cin.good();
            b = std::cin.good();
            if( b == 1 )
                 std::cout << "Druga: ";
            else
                 std::cout << "Wystapily bledy." << std::endl;
           
            std::cin >> dodawanie2;
            std::cin.good();
            c = std::cin.good();
            if( c == 1 && b == 1 )
                 std::cout << "Wynik: " << dodawanie / dodawanie2 << std::endl;
            else
                 std::cout << "Operacja nie moze zostac wykonana." << std::endl;
           
            break;
        case 0:
            std::cout << "Dziekujemy za prace z programem." << std::endl;
            break;
           
        default:
            std::cout << "\nBledny wybor, dostepne opcje to 1,2,3,4!" << std::endl;
            break;
        }
    } while( a && wybor != 0 && b == 1 && c == 1 );
   
    return 0;
}

Co o nim myślicie jak na 13-nastolatka? Cały kod od podstaw jest mój.
P-53589
SeaMonster131
» 2012-03-31 15:06:35
Nie, to nic nie sprawdza :) Dopiero gdy używasz tego w instrukcji if, to wtedy faktycznie sprawdza.
Program wariuje, bo nie czyścisz strumienia, w kursie masz napisane jak to zrobić oraz było już wiele innych tematów odnośnie tego ;)
P-53593
Vendi
Temat założony przez niniejszego użytkownika
» 2012-03-31 15:29:38
Nie czyszcze a działa, popatrz na kod u góry.
P-53596
SeaMonster131
» 2012-03-31 15:42:13
To odnosi się do Twojej poprzedniej odp, zanim edytowałeś post ;)
P-53597
« 1 » 2
  Strona 1 z 2 Następna strona