1 Program wczytuje liczby i sumuje je dopóki nie zostanie wczytane zero. Która pętla będzie lepsza w tym zadaniu (while, czy do-while), dlaczego.
#include <iostream>
using namespace std;
int main() {
int suma = 0;
int skladnik;
while(cin >> skladnik && skladnik != 0)
suma += skladnik;
cout << "Suma to " << suma << '\n';
}
Zatem while
jest IMO wygodniejsza ponieważ pozwala w jednej linijce zmieścić wczytanie liczby i warunek.
(Nie wszystkie operacje można wsadzać do warunku pętli w ten sposób, ale operacje wejścia/wyjścia - można. Dodatkowy bonus, którego nie ma w programie niżej: Ten przykład odporny jest na taką sytuację, gdy użytkownik nie poda w ogóle liczb tylko zamknie strumień wejścia - Ctrl+D na Mac/Linux, Ctrl+Z na Windows albo poda programowi pusty plik jako wejście: jeśli operacja wczytania cin >> cośtam
była nieudana, to to wyrażenie cin >> cośtam
przyjmie wartość tak jakby false
.)
do while
:
#include <iostream>
using namespace std;
int main() {
int suma = 0;
int skladnik;
do {
cin >> skladnik;
suma += skladnik;
} while (skladnik != 0);
cout << "Suma to " << suma << '\n';
}
Działa, ale tylko dlatego, że warunkiem kończącym wczytywanie jest 0
. Zauważ, że w tym programie ostatnia wczytana liczba zostanie dodana do sumy; bez znaczenia, jeśli to 0
, ale gdyby w warunku było np. -1
zamiast zera, to program byłby błędny.
2 Program w pętli wczytuje podawane przez Ciebie liczby i mnoży je. Pętla działa dopóki ich iloczyn nie przekroczy 100. Następnie wypisuje iloczyn oraz liczbę wykonań pętli.
#include <iostream>
using namespace std;
int main() {
int iloczyn = 1;
int czynnik;
int obrotow_petli = 0;
while(iloczyn <= 100 && cin >> czynnik) {
iloczyn *= czynnik;
obrotow_petli++;
}
cout << "Iloczyn przekroczyl 100 z chwila uzyskania wartosci " << iloczyn
<< " przy " << obrotow_petli << ". obrocie petli.\n";
}
3 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.
#include <iostream>
using namespace std;
int main() {
int suma = 0;
int skladnik;
int posumowanych_liczb = 0;
while(suma <= 50 && posumowanych_liczb < 10 && cin >> skladnik)
if(skladnik%2 == 0) {
suma += skladnik;
posumowanych_liczb++;
}
cout << "Uzyskana suma: " << suma << '\n';
}
Uwaga na błąd o 1: <
vs <=
4 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.
Coś Ci się pomieszało, treść tego zadania identyczna z poprzednią
5 Wypisz liczby trzycyfrowe parzyste malejąco.
#include <iostream>
using namespace std;
int main() {
for (int liczba = 998; liczba >= 100; liczba-=2)
cout << liczba << '\n';
}
Uczę się z różnych poradników na YouTube i mam jedną książkę (symfonię) o C++
Jeśli moje przypuszczenie, że potrzebujesz tej wiedzy do szkoły / na uczelnię jest trafne (naprowadziło mnie na to przypuszczenie słowo "zaległości"), to weź przerób po prostu skrypt / podręcznik.
C++ to olbrzymi język i wiele rzeczy może być robione na wiele sposobów. I chociaż niektóre z tych sposobów są lepsze, a inne gorsze, to jednak w takim wypadku Ty musisz umieć akurat to, czego będą od Cb wymagać, a niekoniecznie to, czego uczy autor danej książki / filmiku na YT.
Chyba, że masz ambicje zdobyć wiedzę szerszą, niż ta wymagana. Wtedy mam jednak mieszane uczucia wzgl filmików na YT.