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

Instrukcja wielokrotnego wyboru

Ostatnio zmodyfikowano 2014-11-04 20:10
Autor Wiadomość
z4kw4s
Temat założony przez niniejszego użytkownika
Instrukcja wielokrotnego wyboru
» 2014-10-30 15:53:39
C/C++
#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>


using namespace std;
int main()
{
    int r;
    cout << "Wpisz dlugosc promienia kola: ";
    cin >> r;
    if( r > 0 )
    {
        double p = M_PI *( r * r );
        double l = 2 *( M_PI * r );
        cout << "Pole kola wynosi: " << p << endl;
        cout << "Obwod kola wynosi: " << l << endl;
    }
    else
         cout << "Wpisz liczbe dodatnia." << endl;
   
   
    return 0;
}
Witam, muszę napisać program, który jeśli wpiszę liczbę ujemną, zapyta czy chce wpisać ponownie, oraz, który po wpisaniu dowolnego wyrazu, powie, że nie są to liczby i zapyta czy chce wpisać jeszcze raz. Muszę użyć funkcji Switch, jednak nie mam pojęcia jak. Czy mógłby ktoś nakierować, lub powiedzieć jak to zrobić? Oraz wytknąć błędy, które już popełniłem? Pozdrawiam Marcin.
P-119689
Rashmistrz
» 2014-10-30 21:21:38
Switcha tak użyć się nie da.
Switch działa na konkretną wartość liczby.
P-119707
Tomek_z_W11
» 2014-10-30 23:09:17
Z tego co zaobserwowalem - jak sie zachowuje kompilator w momencie, gdy do zmiennej int wklepujemy przez standardowe wejscie jakis napis, wynika, ze pod te zmienna przypisuje 0.
Spojrz na ten kod:


#include<iostream>

using namespace std;

int main()
{
    int i;
    cin >> i; //kiedy bedzie oczekiwal na przyjecie liczby, wpisz cos w stylu "asd", ogolnie jakis napis.

    cout << i << endl; //tutaj wyswietli 0

return 0;
}




Odpowiadajac na pytanie:


#include<iostream>

using namespace std;

int main()
{
    int do_switcha;

    int liczba_wejsciowa;
    cin >> liczba_wejsciowa;

    if(liczba_wejsciowa<0) //jezeli liczba jest ujemna, to:
    {
        cout << "Czy chcesz wpisac te liczbe jeszcze raz? 0 - Nie chce, 1 - Chce" << endl;
        cin >> do_switcha;
        switch(do_switcha)
        {
        case(0): //jezeli uzytkownik wpisal 0, to nie chce juz wpisywac
            break;
        case(1): //jezeli wpisal 1, to chce wpisac ja ponownie
            cin >> liczba_wejsciowa;
            break;
        }
    }

    if(liczba_wejsciowa==0) //z tym cos nie dzial, tzn. wyswietla komunikaty, ale nie chce pobrac, nie mam pojecia czemu.
    {
        cout << "Nie sa to liczby" << endl;
        cout << "Czy chcesz wpisac te liczbe jeszcze raz? 0 - Nie chce, 1 - Chce" << endl;
        cin >> do_switcha;
        switch(do_switcha)
        {
        case(0):
            break;
        case(1):
            cin >> liczba_wejsciowa;
            break;
        }
    }

return 0;
}

Jest jednak mankament, otoz, jezeli wpiszemy napis, to faktycznie pod zmienna bedzie przypisana liczba 0, jednak, tak jak napisalem w kometarzu, program wyswietla komunikaty: "Nie sa to liczby" i "Czy chcesz wpisac te liczbe jeszcze raz? 0 - Nie chce, 1 - Chce", ale nie chce pobrac ze standardowego wejscia do zmiennej do_switcha, nie mam bladego pojecia czemu...
P-119711
z4kw4s
Temat założony przez niniejszego użytkownika
» 2014-11-01 15:35:28
Rozwiązałem kilka problemów, jednak z jednym nie umiem sobie poradzić, mianowicie jeśli wpiszę, że r=0, program elegancko pyta to o co ma, jednak jeśli wpiszę załóżmy "ala ma kota" program kończy działanie. Czytałem coś o znakach ASCII jednak nie wiem jak to zastosować, jakieś pomysły?
C/C++
#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>
#include <conio.h>


using namespace std;

int main()
{
    int do_switcha;
    double p, l, r;
    cout << "Wpisz dlugosc promienia kola: ";
    cin >> r;
    if( r > 0 )
    {
        p = M_PI *( r * r );
        l = 2 *( M_PI * r );
        cout << "Pole kola wynosi: " << p << endl;
        cout << "Obwod kola wynosi: " << l << endl;
    }
    if( r < 0 )
    {
        cout << "Liczba ujemna" << endl;
        cout << "Czy chcesz wpisac te liczbe jeszcze raz? 0 - Nie chce, 1 - Chce" << endl;
        cin >> do_switcha;
       
        switch( do_switcha )
        {
            case( 0 )
                : break;
            case( 1 )
                : cout << "Wpisz liczbe" << endl;
            cin >> r;
            if( r > 0 )
            {
                p = M_PI *( r * r );
                l = 2 *( M_PI * r );
                cout << "Pole kola wynosi: " << p << endl;
                cout << "Obwod kola wynosi: " << l << endl;
                break;
            }
        }
    }
    if( r == 0 )
    {
        cout << "Nie sa to liczby wieksze od 0" << endl;
        cout << "Czy chcesz wpisac te liczbe jeszcze raz? 0 - Nie chce, 1 - Chce" << endl;
        cin >> do_switcha;
        switch( do_switcha )
        {
            case( 0 )
                : break;
            case( 1 )
                : cout << "Wpisz liczbe" << endl;
            cin >> r;
            p = M_PI *( r * r );
            l = 2 *( M_PI * r );
            cout << "Pole kola wynosi: " << p << endl;
            cout << "Obwod kola wynosi: " << l << endl;
            break;
        }
    }
    getch();
    return 0;
}
P-119804
pekfos
» 2014-11-04 20:10:48
P-120009
« 1 »
  Strona 1 z 1