Chce wstawic 2 warnuki w petli do while zrobilem tak: while(suma<50||i!=10), ale gdy uruchamiam program || (or) traktuje jak &, nie wiem czemu. Prosze o pomoc
Program w pętli wczytuje liczby i jeśli są parzyste sumuje je. Program kończy działanie, gdy suma przekroczy 50 lub dodane zostanie 10 liczb.

- Rejestracja:ponad 7 lat
- Ostatnio:około 7 lat
- Postów:8

- Rejestracja:prawie 8 lat
- Ostatnio:około 8 godzin
- Postów:913
To dlatego że gdy masz
while(suma < 50 || i != 10)
to przynajmniej jeden warunek musi być prawdziwy aby pętla się wykonała.
Co innego gdy zmienisz na &&, wtedy oba warunki muszą być prawdziwe aby pętla się wykonała. Gdy jeden z tych warunków jest false wtedy pętla się już nie wykona.
Zobacz na tablicę prawdy:
A | B | A && B | A OR B |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 |
- Rejestracja:ponad 8 lat
- Ostatnio:około 2 lata
- Postów:231
Wygląda na to że stworzyłeś pętlę nieskończoną, możesz użyć instrukcji warunkowej i break:
do
{
cout << "Podaj liczbe: ";
cin >> a;
i = i+1;
if(a%2 == 0)
suma = suma+a;
if (i == 10) break;
}
while(suma < 50);


- Rejestracja:ponad 7 lat
- Ostatnio:ponad rok
- Lokalizacja:Szczecin
- Postów:104
atmal napisał(a):
to przynajmniej jeden warunek musi być prawdziwy aby pętla się wykonała.
A dokładniej jeżeli jest || czyli OR , to jeżeli pierwszy warunek jest prawdziwy to drugiego już się nie sprawdza.
A jeżeli jest && czyli AND to jeżeli pierwszy się zgadza to , sprawdza się drugi, jeżeli drugi się zgadza to dopiero przechodzimy do ciała while

- Rejestracja:ponad 7 lat
- Ostatnio:około 7 lat
- Postów:8
czaffik napisał(a):
Wygląda na to że stworzyłeś pętlę nieskończoną, możesz użyć instrukcji warunkowej i break:
do { cout << "Podaj liczbe: "; cin >> a; i = i+1; if(a%2 == 0) suma = suma+a; if (i == 10) break; } while(suma < 50);
A da sie to zrobic za pomoca do while? bo tylko tak na razie moge :/

- Rejestracja:ponad 7 lat
- Ostatnio:ponad rok
- Lokalizacja:Szczecin
- Postów:104
#include <iostream>
using namespace std;
int main()
{
int a;
int suma=0;
int i=0;
do
{
cout<<"Podaj liczbe: ";
cin>>a;
i=i+1;
if(a%2==0)
suma=suma+a;
}
while(suma<50 && i != 10);
cout<<suma <<" " <<i;
system("pause");
return 0;
}
O to Ci chodzi?
ewentualnie, możesz spróbować odwrócić warunek w while;
#include <iostream>
using namespace std;
int main()
{
int a;
int suma=0;
int i=0;
do
{
cout<<"Podaj liczbe: ";
cin>>a;
i=i+1;
if(a%2==0)
suma=suma+a;
}
while(i !=10 || suma < 50);
cout<<suma <<" " <<i;
system("pause");
return 0;
}

- Rejestracja:ponad 7 lat
- Ostatnio:około 7 lat
- Postów:8
atmal napisał(a):
do { cout << "Podaj liczbe: "; cin >> a; i++; if(a%2 == 0) suma += a; } while(suma < 50 && i != 10);
O to chodzi @em J?
Tak dziala :D, dzieki. Jedna kwystarczylo zmienic tylko znak
