Podstawy pętli while

0

Hej,
od dłuższego czasu męczę się z pętlą while. Chciałbym aby wykonywała się ona dopóki "a" nie będzie równe "b". Przy kompilacji nie wiedzieć czemu pętla zostaje pominięta...

for (int i = 0; i < p; i++)
            {
                if (a[i] > b[i])
                {
                    while (a[i] == b[i])
                    {
                        if (a[i] > b[i])
                        {
                            a[i] -= b[i];
                        }
                        else if (b[i] > a[i])
                        {
                            b[i] -= a[i];
                        }
                    }
                    Console.WriteLine(a[i] + b[i]);
                }
            }
0

Jesli A jest wieksze od B, to czy A moze byc rowne B?

0
if (a[i] > b[i]) { while (a[i] == b[i]) ``` Czy te warunki mogą być jednocześnie spełnione?
0

Chciałbym aby wykonywała się ona dopóki "a" nie będzie równe "b".

while (a[i] != b[i]), o ile dobrze rozumiem do czego dążysz. , lecz to może spowodować w pewnych warunkach nieskończoną pętlę; może bezpieczniej byłoby:
while (a[i] > b[i])

0

Słówko wyjaśnienia.
Najpierw jest pętla for, aby "poruszać się" po tablicy. Następnie mamy warunek if (a[i] > b[i]) - odwrotności tego jeszcze nie zdążyłem napisać, ale będzie. I w if'ie jest pętla while dzięki której chcę dojść ze stanu a[i] > b[i] do a[i] == b[i] (bazując na if'ach, które są zawarte wewnątrz while). Po osiągnięciu równowagi chciałbym, aby na konsoli wyświetlił mi się wynik a[i] + b[i].

0

Po co te wyjaśnienia. Dostałeś dwie odpowiedzi na pytanie dlaczego pętla while jest pomijana, i jedną odpowiedź (od @Patryk27`a) co należy w kodzie poprawić.

0

Naturalnie niepotrzebne. Przed pisaniem odpowiedzi nie odświeżyłem strony i nie zauważyłem rozwiązania. To co napisał @Patryk27 w pełni działa.

0

Dziwne, że działa. Zmiana zaproponowana przez @Patryk27'a jest konieczna, ale zmienić trzeba więcej.
for (int i = 0; i < p; i++)
{
while (a[i] != b[i])
{
if (a[i] > b[i])
{
a[i] -= b[i];
}
else
{
b[i] -= a[i];
}
}
Console.WriteLine(a[i] + b[i]);
}

0

Co konkretnie masz na myśli?

0

Mój błąd (upały i szybkie czytanie kodu).
Konkretnie miałem na myśli połączenie
if (a[i] > b[i])
{
...
else if (b[i] > a[i])

1 użytkowników online, w tym zalogowanych: 0, gości: 1