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

Poziom 2 Lekcja 1, błąd w kodzie.

Ostatnio zmodyfikowano 2015-08-10 18:49
Autor Wiadomość
gucio6
Temat założony przez niniejszego użytkownika
Poziom 2 Lekcja 1, błąd w kodzie.
» 2015-08-10 13:23:26
KOD:

[spoiler]
C/C++
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;

int main()
{
    int a, b;
   
    cout << "Podaj pierwsza liczbe: ";
    cin >> a;
    cout << "Podaj druga liczbe   : ";
    cin >> b;
   
    if( a == 0 || b == 0 )
         cout << "Liczba nie moze byc rowna 0." << endl;
    else
    {
       
        cout << "[1] dodawanie." << endl;
        cout << "[2] odejmowanie." << endl;
        cout << "[3] mnozenie." << endl;
        cout << "[4] dzielenie." << endl;
        cout << "[5] Wyjdz" << endl;
        cout << "Wybieram: ";
    }
    int w_dzial;
    cin >> w_dzial;
    do
    {
        if( w_dzial < 1 && w_dzial > 5 )
        {
            cout << "Tylko 1-5!!!";
        }
    } while( w_dzial >= 1 && w_dzial <= 5 );
   
    {
        switch( w_dzial )
        {
        case 1:
            cout << a + b << endl;
            break;
        case 2:
            cout << a - b << endl;
            break;
        case 3:
            cout << a * b << endl;
            break;
        case 4:
            cout << a / b << endl;
            break;
        case 5:
            system( "pause" );
            break;
        }
    }
   
   
   
    system( "pause" );
    return 0;
}
 [/spoiler]

po "wybraniu" dalszej czynnośći program się kończy, tak samo gdy wybiorę liczbę większą niż 5 lub mniejszą niż 1... Prosił bym o napisanie gdzie i co muszę zmienić ;p
P-135992
JMII89
» 2015-08-10 13:46:35
Po pierwsze ten els'e jest za krótki . Klamra kończąca powinna być za switchem ponieważ teraz nawet jak ktoś wpisze do a lub b 0 to kod po elsie się wykona.

Po drugie w tym ifie pewnie chodziło ci,żeby te dwie liczby nie były równe 0 więc powinno być && a nie ||.

Po trzecie ta klamra przed switchem i po switchu jest bez sensu bo nie ma przed nim żadnego ifa ani else'a.

Po czwarte ten while jest kompletnie bez sensu na co wchodzisz w pętle która będzie się wykonywać w nieskończoność a do tego nie wypisze niczego ponieważ wybór nie może być większy lub równy 1 i mniejszy od 1 oraz mniejszy lub równy 5 i większy od 5
P-135994
gucio6
Temat założony przez niniejszego użytkownika
» 2015-08-10 18:16:58
hmmm, poprawiłem jednak dalej to samo, wydaje mi się że problem jest tam gdzie dałem oznaczenie. proszę o pomoc, jeżeli problem kwi w tym, jak mogę to rozwiązac?

C/C++
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;

int main()
{
    int a, b;
    int w_dzial;
    cout << "Podaj pierwsza liczbe: ";
    cin >> a;
    cout << "Podaj druga liczbe   : ";
    cin >> b;
   
    if( a == 0 || b == 0 )
         cout << "Liczba nie moze byc rowna 0." << endl;
    else
    {
       
        cout << "[1] dodawanie." << endl;
        cout << "[2] odejmowanie." << endl;
        cout << "[3] mnozenie." << endl;
        cout << "[4] dzielenie." << endl;
        cout << "[5] Wyjdz" << endl;
        cout << "Wybieram: ";
        cin >> w_dzial;
       
        do
        {
            if( w_dzial < 1 && w_dzial > 5 )
            {
                cout << "Tylko 1-5!!!";
            }
        } while( w_dzial > 0 ); // CO TUTAJ MOGĘ ZROBIC :D?
       
        switch( w_dzial )
        {
        case 1:
            cout << a + b << endl;
            break;
        case 2:
            cout << a - b << endl;
            break;
        case 3:
            cout << a * b << endl;
            break;
        case 4:
            cout << a / b << endl;
            break;
        case 5:
            system( "pause" );
            break;
        }
    }
   
   
   
    system( "pause" );
    return 0;
}
P-136003
pekfos
» 2015-08-10 18:38:56
C/C++
do
{
    if( w_dzial < 1 && w_dzial > 5 )
    {
        cout << "Tylko 1-5!!!";
    }
} while( w_dzial > 0 ); // CO TUTAJ MOGĘ ZROBIC :D?

Dodaj na początek tej pętli wczytywanie w_dzial. Nic tu nie modyfikuje tej zmiennej, więc to pętla nieskończona, lub żadna.
P-136004
carlosmay
» 2015-08-10 18:45:16
C/C++
while( w_dzial < 1 || w_dzial > 5 ); // CO TUTAJ MOGĘ ZROBIC :D?

P-136005
gucio6
Temat założony przez niniejszego użytkownika
» 2015-08-10 18:49:44
Wielkie dzięki pekfos, jednak ta zmienna przecież jest <chyba> zdefiniowana w:

C/C++
int main()
{
    int a, b;
    int w_dzial;
    cout << "Podaj pierwsza liczbe: ";
    cin >> a;
P-136006
« 1 »
  Strona 1 z 1