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

Rozdział 15. Kalkulator z pętlą - problem.

Ostatnio zmodyfikowano 2015-02-19 16:38
Autor Wiadomość
bojo240
Temat założony przez niniejszego użytkownika
Rozdział 15. Kalkulator z pętlą - problem.
» 2015-02-11 17:05:50
Witam. Po paru dniach przerwy wróciłem do nauki, doszedłem do rozdziału pętla i niestety mam lekki problem.
Na początku klasycznie 12 błędów, które udało mi sie zredukować do 2, jednak z tymi dwoma mam niemały problem.
Podejrzewam, że obecne działanie kalkulatora po wyeliminowaniu błedów i tak mocno bedzie odbiegać od tego jak to powinno wyglądać (i tak już teraz widzę pare rzeczy do dopracowania), ale jako początkujący musiałbym wiedzieć co i jak obecnie działa, żeby wiedzieć co należy zmienić, a jak wiadomo błędy uniemożliwiają kompilacje.
Link do zadania : http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-do-while/18
Idzie oczywiście o kalkulator.
Tutaj kod:
C/C++
#include <iostream>
using namespace std;
int main()
{
    cout << "Witaj w moim pierwszym kalkulatorze.";
    int liczba;
    float a, b;
   
    do
    {
        cout << "Wybierz typ działania";
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cin >> liczba;
       
        switch( liczba )
        {
        case 1: {
                cout << "Kalkulator doda do siebie dwie nastepujace liczby:" << endl;
                cout << "Podaj pierwsza liczbe:";
                cin >> a;
                cout << endl;
                cout << "Podaj druga liczbe:";
                cin >> b;
               
                cout << "Wynik dzialania jest: " << a + b << "." << endl;
                break;
            }
        case 2: {
                cout << "Kalkulator odejmie od siebie dwie nastepujace liczby:" << endl;
                cout << "Podaj pierwsza liczbe:";
                cin >> a;
                cout << "Podaj druga liczbe;";
                cin >> b;
                cout << "Wynikiem dzialania jest: " << a - b << "." << endl;
                break;
            }
        case 3: {
                cout << "Kalkulator pomnozy dwie nastepujace liczby:" << endl;
                cout << "Podaj pierwsza liczbe:";
                cin >> a;
                cout << "Podaj druga liczbe:";
                cin >> b;
                cout << "Wynik dzialania jest: " << a * b << "." << endl;
                break;
            }
        case 4: {
                cout << "Kalkulator podzieli dwie nastepujace liczby:" << endl;
                cout << "Podaj pierwsza liczbe:";
                cin >> a;
                cout << "Podaj druga liczbe;";
                cin >> b;
                cout << "Wynikiem dzialania jest: " << a / b << "." << endl;
                break;
            }
        }
    }
    while( b != 0 ); || liczba > 4 );
   
    return 0;
}
Ktoś mógłby wyjaśnić gdzie popełniłem błąd powodujący errorsy przy kompilowaniu? Bo dopracować działanie kalkulatora bym chciał już sam :D
2 błędy teoretycznie tylko w ostatniej linijce, choć być może po prostu zła konstrukcja całego programu je powoduje a nie linijka jako taka ;D
P-126351
libed
» 2015-02-11 17:21:28
while( b != 0 ); || liczba > 4 );
Średnik. Poza tym sprawdzanie czy
b != 0
 powinno odbywać się wcześniej a warunek powinien być
while( liczba > 0 && liczba < 5 )
Nie dało Ci do myślenia, że klepiesz identyczne linijki kodu po kilka razy? Może warto zaprzyjaźnić się z funkcjami? ;)
P-126354
bojo240
Temat założony przez niniejszego użytkownika
» 2015-02-11 17:26:43
W sumie jak tylko napisałeś, to dopiero zwróciłem uwagę na nawias który mi 'psuł' linijke w tym while.
Mówię, jestem początkujący, potrzebuje z 10 razy odpalić program, żeby dojść do oczekiwanego efektu :D.
Anyway, dzięki wielkie za pomoc, w razie czego będę pytał ^.^
Taaa, działa tak samo jak kalkulator sprzed 2 lekcji, tak jak podejrzewałem... :D.
Czas pokombinować :D
P-126355
bojo240
Temat założony przez niniejszego użytkownika
» 2015-02-11 17:33:24
W sumie pętla jako taka już działa, choć jak już mówiłem, daleko odbiega od oczekiwań. Co masz na myśli mowiąc o funkcjach?
P-126357
Aran_swiezak
» 2015-02-11 19:33:46
1. Co to znaczy, że odbiega od oczekiwań? Jakie są oczekiwania?
2. Nie przeczytałeś http://cpp0x.pl/kursy​/Porady-dla-uzytkownikow-cpp0x-​pl​/Zakladanie-tematow-na-forum​/483 przed założeniem tematu. ( mało czytelny kod )
3. Podałbyś nr / treść zadania chociaż.
4. O funkcjach przeczytasz w następnych rozdziałach kursu więc do tego zadania nie są Ci potrzebne.
P-126371
bojo240
Temat założony przez niniejszego użytkownika
» 2015-02-11 19:58:50
No właśnie zauważyłem, że funkcja jest bodajze 2 tematy dalej, z ciekawości zajrzałem ale niewiele z niej jeszcze wyniosłem, za 2-3 razem już pewnie ogarne co i jak :P.
Jeżeli idzie o kalkulator to obecnie jego kod zmieniłem z tego co było wcześniej do tego stopnia:
C/C++
} while( liczba > 0 && liczba < 4 && b != 0 );

Jak widać efekt rózni się od oczekiwań, obecnie jestem na poziomie ogarniania rozwiązań innych ludzi by skleić coś niby samemu ale z cudzym pomysłem :D
P-126373
libed
» 2015-02-12 23:11:24
W takim razie przepraszam z tymi funkcjami. Często mi się merdają działy ;)
P-126458
bojo240
Temat założony przez niniejszego użytkownika
» 2015-02-13 18:15:48
Siema, odnawiam temat.
Udało mi się doprowadzić kod do takiej postaci:
C/C++
#include <iostream>
using namespace std;
int main()
{
    float a, b;
    bool dzialaj = true;
    int opcja;
    cout << "Podaj pierwsza liczbe:";
    cin >> a;
    while( dzialaj )
    {
        cout << "Podaj kolejna liczbe:";
        cin >> b;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Zakoncz" << endl;
        cin >> opcja;
        switch( opcja )
        {
        case 1:
            cout << "Wynik:" << a + b << endl << endl;
            a = a + b;
            break;
        case 2:
            cout << "Wynik:" << a - b << endl << endl;
            a = a - b;
            break;
        case 3:
            cout << "Wynik:" << a * b << endl << endl;
            a = a * b;
            break;
        case 4:
            cout << "Wynik:" << a / b << endl << endl;
            a = a / b;
            break;
        case 5:
            dzialaj = false;
            break;
        default:
            cout << "Podales niepoprawna wartosc.";
        }
    }
    return 0;
}
Teraz pytanie, jak wymusic zakonczenie programu przy podaniu drugiej liczby = 0?
Bo rozumiem nie istnieje polecenie typu
if cin b=0
terminate
XD?
zapewne wykorzystanie wielokrotnego przypisania w sensie b=cin.good albo cos?
niestety mam problem jakos mi nie idzie uzywanie tego cin.good i cin.fail ;x
P-126516
« 1 » 2
  Strona 1 z 2 Następna strona