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

Pętla while kilka warunków

Object Storage Arubacloud
+1 głos
966 wizyt
pytanie zadane 20 marca 2016 w C i C++ przez mateusz12 Użytkownik (530 p.)

Siedzę już na tym parę godzin 

Mam problem z pętlą while cały czas kończy się gdy tylko 1 warunek jest spełniony

Próbowałem z dwoma nawiasami ze spacja bez .. Pomocy

#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;
int liczba1, liczba2;
int ileprob=0;
int wylosowana1, wylosowana2;

int main()
{
    cout << "Podaj pierwsza liczbe z zakresu od 1 do 49: ";
    cin>>liczba1;

    cout << "Podaj druga liczbe z zakresu od 1 do 49: ";
    cin>>liczba2;

    srand(time(NULL));
    wylosowana1 = rand()%49+1;
    wylosowana2 = rand()%49+1;


    cout<<wylosowana1<<endl;
    cout<<wylosowana2<<endl<<endl<<endl;


    while  (liczba1!=wylosowana1 && liczba2!=wylosowana2)
    {
        ileprob++;
        cout<<"losowanie nr "<<ileprob<<endl;
        wylosowana1 = rand()%49+1;
        wylosowana2 = rand()%49+1;
        cout<< wylosowana1<<endl;
        cout<< wylosowana2<<endl;


    }

    cout<< " w " <<ileprob<<" losowan program dobral liczbe";


    return 0;
}

 

5 odpowiedzi

+2 głosów
odpowiedź 20 marca 2016 przez Blacha Mądrala (5,960 p.)
wybrane 20 marca 2016 przez mateusz12
 
Najlepsza

Pętla wykonuje się tylko gdy masz wartość TRUE. Korzystając z && (AND) masz coś takiego:

(TRUE && TRUE) => TRUE

(TRUE && FLASE) => FALSE

(FALSE && TRUE) => FALSE

(FALSE && FALSE) => FALSE

0 głosów
odpowiedź 20 marca 2016 przez niezalogowany
Tzn, w czym tkwi dokładnie problem (na przykładzie)?

Musisz wiedzieć, że warunki są sprawdzane do momentu, gdy dalsza część wyrażenia i tak ni będzie miała znaczenia na wynik, tzn w przypadku operatora && jeżeli lewa część wyrażenia będzie fałszywa to prawa nie będzie już sprawdzana (bo i tak wynikiem będzie fałsz), czyli u ciebie wystarczy że liczba1 == wylosowana1 aby zakończyć pętlę

Pisałem kiedyś o tym tutaj: http://szymonsiarkiewicz.pl/artykuly/programowanie/cc-wszystko-co-chcielibyscie-wiedziec-ale-boicie-sie-zapytac/
komentarz 20 marca 2016 przez mateusz12 Użytkownik (530 p.)

Chciałbym by pętla zakończyła się przy spełnieniu obu warunków

liczba1!=wylosowana1 && liczba2!=wylosowana2

 

komentarz 20 marca 2016 przez niezalogowany
Przecież tak się wykonuje, źle rozumiesz to co się dzieje.

while (liczba1!=wylosowana1 && liczba2!=wylosowana2)

oznacza: "wykonuj zawartość pętli dopóki użytwkonik nie poda przynajmniej jednej liczby z tych co wylosowano. Jeżeli jedna z nich będzie identyczna to zakończ działanie pętli"
0 głosów
odpowiedź 20 marca 2016 przez SebekChlebek Stary wyjadacz (11,290 p.)
przywrócone 20 marca 2016 przez SebekChlebek
II zamiast && ;)
0 głosów
odpowiedź 20 marca 2016 przez zmiennoimienny Mądrala (5,540 p.)
Z twojego kodu wynika że pętla wykona się wtedy i tylko wtedy kiedy:
liczba1!=wylosowana1
oraz
liczba2!=wylosowana2
Tak więc jeżeli tylko jeden warunek będzie spełniony to pętla się nie wykona.
Próbowałeś użyć "||" ?
komentarz 20 marca 2016 przez mateusz12 Użytkownik (530 p.)
O nie mogę przy użyciu "||" działa

Myślałem że || oznacza lub liczba1 lub liczba2

a && oznacza liczba1 i liczba2

Dzieki
0 głosów
odpowiedź 20 marca 2016 przez hiimJockiee Użytkownik (870 p.)
Witam,

Uzyj operatora "OR'owania" || bądź jeśli chcesz się bawić z bitami to OR'owanie bitowe |, zamiast && lub & : )

Podobne pytania

0 głosów
3 odpowiedzi 867 wizyt
+1 głos
2 odpowiedzi 174 wizyt
pytanie zadane 21 czerwca 2019 w C i C++ przez Eryk Słowiński Początkujący (280 p.)
0 głosów
1 odpowiedź 2,909 wizyt
pytanie zadane 31 grudnia 2015 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,460 p.)

92,566 zapytań

141,420 odpowiedzi

319,613 komentarzy

61,952 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...