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

Praca domowa rozdział 15

Ostatnio zmodyfikowano 2016-11-22 13:06
Autor Wiadomość
silvergold
Temat założony przez niniejszego użytkownika
Praca domowa rozdział 15
» 2016-09-06 14:09:21
Witam, proszę o pomoc w poprawieniu kodu. Nie wiem co jest źle, program działa niepoprawnie ;(
Nie wyłącza się po wpisaniu 0 i nie działa opcja 4(dzielenie)
Oto moje wypociny:
C/C++
#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int wynik = 0;
    int a;
    int b;
    int c;
    do
    {
        cout << "obecny wynik to:" << wynik << endl;
        cin.clear();
        cin.sync();
        cout << "podaj pierwsza liczbe:" << endl;
        cin >> a;
        if( cin.good() )
             cout << "podaj druga liczbe:" << endl;
       
        cin >> b;
        if( cin.good() )
        {
            cout << "[1] dodawanie" << endl;
            cout << "[2] odejmowanie" << endl;
            cout << "[3] mnozenie" << endl;
            cout << "[4] dzielenie" << endl;
            cout << "[5] rezygnuj" << endl;
            cout << "ktore dzialanie wybierasz?" << endl;
            cin >> c;
            switch( c )
            {
            case 1:
                wynik = a + b;
                cout << "wynik dodawania:" << wynik << endl;
                break;
            case 2:
                wynik = a - b;
                cout << "wynik odejmowania:" << wynik << endl;
                break;
            case 3:
                wynik = a * b;
                cout << "wynik mnozenia:" << wynik << endl;
                break;
            case 4:
                wynik = a % b;
                cout << "wynik dzielenia:" << wynik << endl;
                break;
            case 5:
                return 0;
                break;
            default:
                cout << "podales bledne dane..." << endl;
                break;
            }
        }
    }
}
while( cin.good() );

return 0;
}
P-151494
carlosmay
» 2016-09-06 14:54:50
Nie wyłącza się po wpisaniu 0
Żaden warunek tego nie uwzględnia.

i nie działa opcja 4(dzielenie)
W tym kodzie nie ma dzielenia.

Poza tym program nie ma prawa się skompilować, bo klamerki się nie zgadzają.
P-151496
silvergold
Temat założony przez niniejszego użytkownika
Poprawiony kod
» 2016-09-06 15:09:46
C/C++
#include "stdafx.h"
#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int wynik = 0;
    int a;
    int b;
    int c;
    do
    {
        cout << "obecny wynik to:" << wynik << endl;
        cin.clear();
        cin.sync();
        cout << "podaj pierwsza liczbe:" << endl;
        cin >> a;
        if( cin.good() )
        if( a != 0 )
        {
            cout << "podaj druga liczbe:" << endl;
            cin >> b;
        }
        else
             return 0;
       
        if( cin.good() )
        if( b != 0 )
        {
            cout << "[1] dodawanie" << endl;
            cout << "[2] odejmowanie" << endl;
            cout << "[3] mnozenie" << endl;
            cout << "[4] dzielenie" << endl;
            cout << "[5] rezygnuj" << endl;
            cout << "ktore dzialanie wybierasz?" << endl;
            cin >> c;
            switch( c )
            {
            case 1:
                wynik = a + b;
                cout << "wynik dodawania:" << wynik << endl;
                break;
            case 2:
                wynik = a - b;
                cout << "wynik odejmowania:" << wynik << endl;
                break;
            case 3:
                wynik = a * b;
                cout << "wynik mnozenia:" << wynik << endl;
                break;
            case 4:
                wynik = a / b;
                cout << "wynik dzielenia:" << wynik << endl;
                break;
            case 5:
                return 0;
                break;
            default:
                cout << "podales bledne dane..." << endl;
                break;
            }
            else
                 return 0;
           
        }
    }
}
while( a != 0 && b != 0 && c != 0 );

return 0;
}
P-151497
kirito1996
» 2016-09-06 22:15:29
było w kursie o
#include<cmath>
nie spotkałem się chyba a jestem przy tym samym zadaniu a przy zakończeniu pętli to jeżeli jest "!= 0" to program to przeczyta jako "==" ?
i jeszcze jedno mam pytanko na jakiej zasadzie działą  tu
cin.good()
 nie trzeba danych przechować w jakieś zmiennej xD ? oczywiście nie musicie odpowiadać ale doinformowałbym się i zaspokoił moją ciekawość xD o jeszcze jedno
C/C++
cin.clear();
cin.sync();
 to pierwsze przecież tam nie wprowadzamy danych więc jakie zadanie to tam ma spełnić ;D
P-151510
carlosmay
» 2016-09-06 22:34:30
nie trzeba danych przechować w jakieś zmiennej xD ?
Zależy do kontekstu, ale można przechowywać w zmiennej.
C/C++
bool czyStanStrumieniaPoprawny = std::cin.good();
if( czyStanStrumieniaPoprawny ) {
    // wykonaj cos
}

// lub
std::cin >> jakasZmienna;
if( std::cin.good() ) {
    // wyknonaj cos
}

jeżeli jest "!= 0" to program to przeczyta jako "==" ?
Doprecyzuj bo to jest niezrozumiałe.
!=
 - różny od
==
 - równy
To dwa różne operatory.
P-151511
silvergold
Temat założony przez niniejszego użytkownika
odpowiedz
» 2016-09-06 22:40:13
Zapis != oznacza "różny od"
cin.good() nie zapisywałem w zmiennej bo uznałem, że nie ma sensu. Działa identycznie jak ze zmienną.
Sprawdza poprawność wpisanych danych ;)
P-151514
kirito1996
» 2016-09-07 14:58:21
przy operatorach != i == wiem co oznaczają chodziło mi o wyjście z pętli bo w pętli do while jest to na odwrót tzn. pętla zakończy się jak będzie false, chyba dobrze to rozumiem, wiecie może jeszcze co z tą biblioteką
#include <cmath>
P-151529
marcolo2307
» 2016-09-07 15:09:42
Pętla trwa tak długo, jak długo warunek jest prawdziwy. cmath

Edit: ale po co dołączasz tę bibliotekę, skoro i tak z niej nie korzystasz?
P-151530
« 1 » 2 3
  Strona 1 z 3 Następna strona