[c++] nie działa if else

shreder221
Użytkownik
Użytkownik
Posty: 181
Rejestracja: 5 cze 2015, o 21:45
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 50 razy
Pomógł: 2 razy

[c++] nie działa if else

Post autor: shreder221 »

Dobry wieczór
Mógłby mi ktoś powiedzieć dlaczego w przypadku niespełnienia warunku tab>tab[i+1] else nie kończy pętli do while?
Ukryta treść:    
cały program
Ukryta treść:    

//edit wersja alternatywna pytanie.2
Co mi się wydaje : Pętla do while jest wykonywana do momentu w którym na koniec pętli zamienione = false. Żeby było to możliwe na początku każdej kolejki ustawiam zamienione=false a polecenie ewentualnej zmiany jest w petli for
pętla for oznacza jeżeli choć jeden element tablicy jest większy od kolejnego zamienia je miejscami i zamienione=true co skutkuje powtórzeniem do while.

W pewnym momencie tablica jest uporządkowana zamienione ma wartość null ale pętla się nie kończy dlaczego?
Ukryta treść:    
Ostatnio zmieniony 10 maja 2017, o 22:46 przez shreder221, łącznie zmieniany 4 razy.
Gouranga
Użytkownik
Użytkownik
Posty: 1595
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 252 razy

Re: [c++] nie działa if else

Post autor: Gouranga »

klamry się nie zgadzają
shreder221
Użytkownik
Użytkownik
Posty: 181
Rejestracja: 5 cze 2015, o 21:45
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 50 razy
Pomógł: 2 razy

Re: [c++] nie działa if else

Post autor: shreder221 »

liczyłem kilka razy i nie widzę żadnych brakujących nawiasów
Afish
Moderator
Moderator
Posty: 2725
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

Re: [c++] nie działa if else

Post autor: Afish »

Kod: Zaznacz cały

while(zamienione=true);
Brakuje drugiego znaku =.

A lepiej zapisać to jako

Kod: Zaznacz cały

while(zamienione)
shreder221
Użytkownik
Użytkownik
Posty: 181
Rejestracja: 5 cze 2015, o 21:45
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 50 razy
Pomógł: 2 razy

[c++] nie działa if else

Post autor: shreder221 »

super działa w 90% programów robię takie idiotyczne błędy których nie mogę potem znaleść przez kilka h ;(

co do wersji skróconej zawsze zapominam czy zapis ten oznacza 1 czy 0 więc go unikam

Dzięki za pomoc
Awatar użytkownika
mortan517
Użytkownik
Użytkownik
Posty: 3358
Rejestracja: 6 lis 2011, o 15:38
Płeć: Mężczyzna
Lokalizacja: Krk
Podziękował: 112 razy
Pomógł: 662 razy

Re: [c++] nie działa if else

Post autor: mortan517 »

To dawaj stałą po lewej stronie, gdy zechcesz napisać kod typu:

Kod: Zaznacz cały

while(true=zamienione)
to kompilator zaprotestuje.
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8358
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

Re: [c++] nie działa if else

Post autor: miki999 »

Wydaje mi się, że większość kompilatorów C++ wywala minimum warninga. Nie ignoruj ostrzeżeń a w przyszłości będziesz miał mniej problemów.
To dawaj stałą po lewej stronie
Polecam !
shreder221
Użytkownik
Użytkownik
Posty: 181
Rejestracja: 5 cze 2015, o 21:45
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 50 razy
Pomógł: 2 razy

Re: [c++] nie działa if else

Post autor: shreder221 »

oO żadnych ostrzeżeń nie było do zignorowania :p a nawet gdyby były nie potrafiłbym ich ominąć inaczej niż naprawiając błędy a używam Dev c++ A objawem błędu była nieskończona pętla po wykonaniu for

mortan517 pisze:To dawaj stałą po lewej stronie, gdy zechcesz napisać kod typu:

Kod: Zaznacz cały

while(true=zamienione)
to kompilator zaprotestuje.
chyba sprawa zmęczenia ale nie rozumiem co masz na myśli. Najpierw piszesz żeby pisać żeby zamienić kolejność stała<--> zmienna a następnie żeby tego nie robić bo będzie błąd chyba że zapomniałeś o "nie" . Jeśli tak to wtedy nie trzeba pisać "=="?
Awatar użytkownika
mortan517
Użytkownik
Użytkownik
Posty: 3358
Rejestracja: 6 lis 2011, o 15:38
Płeć: Mężczyzna
Lokalizacja: Krk
Podziękował: 112 razy
Pomógł: 662 razy

Re: [c++] nie działa if else

Post autor: mortan517 »

Usystematyzujmy, jeżeli chcesz porównać to zawsze piszesz podwójny znak "równa się". Ale załóżmy teraz, że się pomyliłeś i dajesz pojedynczy znak oznaczający przypisanie. I teraz jak po lewej stronie dawałbyś zawsze stałą, to kod się nie skompiluje, a jak dasz zmienną to niestety kompilator to puści, ale powinien zasygnalizować to jakimś ostrzeżeniem. Czyli generalnie po lewej stronie warto dawać stałe, bo jak się pomylisz to kompilacja nie przejdzie.
Rozbitek
Użytkownik
Użytkownik
Posty: 484
Rejestracja: 22 lut 2017, o 14:21
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 114 razy
Pomógł: 8 razy

Re: [c++] nie działa if else

Post autor: Rozbitek »

Jeżeli każesz mu wyskoczyć z pętli "sztucznie", to prawdopodobnie program jest do przebudowy.
ODPOWIEDZ