• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pętla zaporowa

0 głosów
2,125 wizyt
pytanie zadane 21 stycznia 2021 w C i C++ przez eternal Użytkownik (620 p.)
Zastanawiam się nad tym jak stworzyć warunek, aby wczytywane liczby dajmy na to ujemne, mogły być rozróżnione. W sensie while(a<=0 || b<=0 || c<=0) i ktoras z nich jest ujemna np. b = -2 i chcialbym tylko ta jedna liczbe wprowadzic jeszcze raz poprawnie (bez użycia tablicy), nie wszystkie wartości jeszcze raz (w pętli zaporowej instrukcja - cin >> a >> b >> c;

Tutaj rodzi się kolejny problem jak stworzyć warunek, żeby nie musieć pisać za każdym razem n<=0, próbowałem tak ale wtedy pętla się nie wykonuje while((a || b || c)<=0)

1 odpowiedź

0 głosów
odpowiedź 21 stycznia 2021 przez KopfSzmercen Bywalec (2,870 p.)
wybrane 22 stycznia 2021 przez eternal
 
Najlepsza

Najbardziej intuicyjnym sposobem jak dla mnie jest sprawdzenie każdej liczby kiedy pierwsza pętla się zakończy czyli przynajmniej jedna z liczb będzie dodatnia. Jako że liczb ma być 3 to ja sprawdziłbym każdą a potem zastosował identyczne podejście co na początku, czyli prosił o wprowadzenie liczby tak długo aż będzie ona dodatnia.

int a, b, c;
int N = 10;

    do
    {
        cout<< "Podaj liczby a b c: ";
        cin >> a >> b >> c;    
    
    } while (a <= 0 && b <= 0 && c <= 0);

    if (a <= 0)
    {
        do
        {
            cout<< "Podaj ponownie liczbe a: ";
            cin >> a;
        } while ( a <= 0);
        
    }

    if (b <= 0)
    {
        do
        {
            cout<< "Podaj ponownie liczbe b: ";
            cin >> b;
        } while ( b <= 0);
        
    }

    if (c <= 0)
    {
        do
        {
            cout<< "Podaj ponownie liczbe c: ";
            cin >> c;
        } while ( c <= 0);
        
    }

 

2
komentarz 21 stycznia 2021 przez j23 Mędrzec (195,220 p.)

Nieco zwięźlej:

    std::cout << "Podaj liczby a b c: ";

    while(std::cin >> a, a <= 0) { std::cout << "podaj ponownie a: "; }
    while(std::cin >> b, b <= 0) { std::cout << "podaj ponownie b: "; }
    while(std::cin >> c, c <= 0) { std::cout << "podaj ponownie c: "; }   

 

Podobne pytania

+1 głos
2 odpowiedzi 856 wizyt
pytanie zadane 22 maja 2023 w C i C++ przez Igor4567 Nowicjusz (170 p.)
0 głosów
0 odpowiedzi 980 wizyt
0 głosów
2 odpowiedzi 1,410 wizyt
pytanie zadane 27 kwietnia 2022 w C i C++ przez Mati323 Nowicjusz (210 p.)

93,731 zapytań

142,669 odpowiedzi

323,286 komentarzy

63,291 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...