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

Zadanie z rodziału pętla do... while

Ostatnio zmodyfikowano 2011-02-17 18:08
Autor Wiadomość
sadlawyer
Temat założony przez niniejszego użytkownika
Zadanie z rodziału pętla do... while
» 2011-02-17 17:23:03
Jestem początkujący i nie potrafię przebrnąć przez to zadanie. Chodzi o napisanie tego kalkulatora.
link do kursu: http://cpp0x.pl/kursy/Kurs-C++/Podstawy/Petla-do-while/18
Mój obecny kod jest dość chaotyczny i nie potrafię wymyślić sposobu, aby program działał poprawnie. Aktualnie wyrzuca liczby, które niewiele mają wspólnego z działaniami jakie mu postawiłem.
C/C++
#include <iostream>
using namespace std;
int main()
{
    float liczba1;
    float liczba2;
    float wynik;
    char znak;
   
    cout << "Obecny wynik " << wynik << endl;
    cout << "Podaj pierwsza liczba " << endl;
    cin >> liczba1;
    cout << "Podaj druga liczba " << endl;
    cin >> liczba2;
    cout << "[1] Dodawanie" << endl;
    cout << "[2] Odejmowanie" << endl;
    cout << "[3] Mnozenie" << endl;
    cout << "[4] Dzielenie" << endl;
    cout << "[5] Rezygnuj" << endl;
    cin >> znak;
   
    if( znak = 1 )
    {
        wynik = liczba1 + liczba2;
        cout << "Obecny wynik " << wynik << endl;
    }
   
    if( znak = 2 )
    {
        wynik = liczba1 - liczba2;
        cout << "Obecny wynik " << wynik << endl;
    }
   
    if( znak = 3 )
    {
        wynik = liczba1 * liczba2;
        cout << "Obecny wynik " << wynik << endl;
    }
   
    if( znak = 4 )
    {
        wynik = liczba1 / liczba2;
        cout << "Obecny wynik " << wynik << endl;
    }
   
    do
    {
        cout << "Podaj pierwsza liczba " << endl;
        cin >> liczba1;
        cout << "Podaj druga liczba " << endl;
        cin >> liczba2;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Rezygnuj" << endl;
        cin >> znak;
       
    } while( znak > 0 );
   
   
}

Próbowałem wszystkiego i kod wygląda dość dziwnie. Proszę o pomoc. Wiem, że pętla jest źle założona.
P-28321
pekfos
» 2011-02-17 17:28:01
[cpp] tu kod [/cpp]
if( znak == 1 )
 a nie
if( znak = 1 )
P-28322
DejaVu
» 2011-02-17 17:32:20
Który fragment treści kursu jest dla Ciebie niejasny?
P-28323
sadlawyer
Temat założony przez niniejszego użytkownika
» 2011-02-17 17:33:26
Jak tak zrobiłem, to w program całkowicie ignoruje if i od razu przechodzi do pętli, która daję wszystko od nowa. Tak myślałem, że trzeba porównać zmienną z liczbą, ale wtedy program robił to, co wspomniałem.

Jeśli mamy przejść, co jest dla mnie nie jasne. To od razu mówię, że nie pojmuję cin.clear() oraz cin.sync(). Zupełnie nie dawały mi efektu. Flaga błędu wychodziła pomimo nich.

A do obecnego rozdziału o pętlach. No to nie potrafię domknąć tego programu do całości. Na początku myślałem o funkcji switch, ale ten pomysł szybko przepadł. Teraz robiłem w wszystko na if, ale wciąż występują błędy, których nie jestem w stanie przejść.
P-28324
DejaVu
» 2011-02-17 17:35:25
http://cpp0x.pl/kursy/Kurs-C++/Podstawy/Operacje-porownania/14

Polecam przeczytać jeszcze raz uważnie i ze zrozumieniem powyższy rozdział.
P-28325
DejaVu
» 2011-02-17 17:38:04
Jaki kod wg. Ciebie jest powtarzany przez pętlę do... while? Wklej cały kod, który powtarza wspomiana pętla (i nic ponadto).
P-28326
sadlawyer
Temat założony przez niniejszego użytkownika
» 2011-02-17 17:38:46
Porównanie raczej rozumiem. Tylko nie rozumiałem, dlaczego program pomija if, skoro wartość wprowadzonej zmiennej była równa wartości przypisanej do if.

C/C++
if( znak == 1 )
{
    wynik = liczba1 + liczba2;
    cout << "Obecny wynik " << wynik << endl;
}

if( znak == 2 )
{
    wynik = liczba1 - liczba2;
    cout << "Obecny wynik " << wynik << endl;
}

if( znak == 3 )
{
    wynik = liczba1 * liczba2;
    cout << "Obecny wynik " << wynik << endl;
}

if( znak == 4 )
{
    wynik = liczba1 / liczba2;
    cout << "Obecny wynik " << wynik << endl;
}




cout << "Podaj pierwsza liczba " << endl;
cin >> liczba1;
cout << "Podaj druga liczba " << endl;
cin >> liczba2;
cout << "[1] Dodawanie" << endl;
cout << "[2] Odejmowanie" << endl;
cout << "[3] Mnozenie" << endl;
cout << "[4] Dzielenie" << endl;
cout << "[5] Rezygnuj" << endl;
cin >> znak;
P-28327
DejaVu
» 2011-02-17 17:42:02
No i jesteś właśnie w błędzie :) Przeczytaj rozdział jeszcze raz (ten poświęcony pętli do ... while) bo nie doczytałeś się najwyraźniej jaki kod jest powtarzany ;) Wtedy wszystko stanie się dla Ciebie jasne.
P-28328
« 1 » 2
  Strona 1 z 2 Następna strona