Jak zrobić Powtórz - do pętli w C++? W przeciwieństwie do standardowej pętli while lub for. Muszę sprawdzić stan na końcu każdej iteracji, a nie na początku.Jak zrobić Powtórz - do pętli w C++?
Odpowiedz
do
{
// whatever
} while (!condition);
Gdy chcesz sprawdzić stan na początek pętli, po prostu neguje stan na standardowym while
pętli:
while(!cond) { ... }
Jeśli potrzebujesz go na końcu, użyj do
. .. while
pętla i neguje warunek:
do { ... } while(!cond);
można używać makr do symulacji powtarzanych aż składni.
#define repeat do
#define until(exp) while(!(exp))
Dokładnie tego szukałem. Nie wiem, jak działa "exp". Czy to generyczny symbol wieloznaczny? Dziękuję Ci! –
@ Ace.C To nazwa argumentu. Drugie '# define' tworzy makro, które działa jak funkcja. Tak więc w tym przypadku '#define until (exp)' to makro o nazwie 'until', które przyjmuje parametr' exp' i rozwija się do 'while (! (Exp))'. –
Dziękuję @ Conor.O, Czy jest możliwe i artykuł lub inny post na ten temat, do którego mógłbyś mnie dodać? Mam problem ze znalezieniem dobrych zasobów, jak tworzyć tego rodzaju makra –
Dla przykładu, jeśli chcesz mieć pętlę, która zatrzymała się, gdy policzyła wszystkie osoby w grupie. Uwzględnimy wartość X równą liczbie osób w grupie, a licznik będzie użyty do zliczenia wszystkich osób w grupie. (! Warunek) do napisania
chwilę
kod będzie:
int x = ludzie;
int counter = 0;
, a (X = licznik!)
{
licznik ++;
}
powrót 0;
Wystarczy użyć:
do
{
//enter code here
} while (!condition);
Więc co to robi to, że przenosi swoje „Sprawdź stan” udział do końca, ponieważ while
jest na końcu. Sprawdza więc tylko warunek po uruchomieniu kodu, dokładnie tak, jak chcesz.
Powtórzenie powinno być prostą pętlą n razy pętlą ... pozbawioną warunku wersją pętli.
#define repeat(n) for (int i = 0; i < n; i++)
repeat(10) {
//do stuff
}
można również dodać dodatkowy barce wyizolować zmienna i jeszcze bardziej
#define repeat(n) { for (int i = 0; i < n; i++)
#define endrepeat }
repeat(10) {
//do stuff
} endrepeat;
Uhh ... To jest bardzo smutne. Emil uderzył szybciej niż ja ... "Przyjęto" powinno mu się udać ... – Adrien
Masz mniej powtórzeń, a to bardzo proste pytanie, więc chętnie ci je dam. :) –
Jak powiedział Jalf: Jeśli chcesz wykonać pętlę do wykonania, a nie pętlę do wykonania, będziesz musiał zanegować warunek. –