[C] Znalezienie pierwszego wystąpienia liczby

sulaw
Użytkownik
Użytkownik
Posty: 255
Rejestracja: 24 wrz 2011, o 16:33
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 78 razy
Pomógł: 10 razy

[C] Znalezienie pierwszego wystąpienia liczby

Post autor: sulaw »

Nadanie zmiennej \(\displaystyle{ k}\) indeksu pierwszego wystąpienia liczby różnej od \(\displaystyle{ 0}\) w tablicy liczb całkowitych \(\displaystyle{ A}\) (zakładamy, ze w tablicy \(\displaystyle{ A}\) istnieje co najmniej jedna liczba
różna od \(\displaystyle{ 0}\))

Kod: Zaznacz cały

k = 0;
while ( A[k] = 0 )
k++;
trzeba poprawić ten algorytm, moim zdaniem powinno być A[k]!=0
Ostatnio zmieniony 9 gru 2012, o 18:54 przez Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C] Znalezienie pierwszego wystąpienia liczby

Post autor: royas »

Wyobraź sobie, że masz tablicę 10 elementową, same zera, oprócz np. A[5]=4.
Jak zadziała algorytm oryginalny, jak Twój i dlaczego w obu przypadkach zwróci k=0?
sulaw
Użytkownik
Użytkownik
Posty: 255
Rejestracja: 24 wrz 2011, o 16:33
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 78 razy
Pomógł: 10 razy

[C] Znalezienie pierwszego wystąpienia liczby

Post autor: sulaw »

oryginalny: element 1 jest równy 0, czyli k rośnie itd element 5 jest równy 4, czyli nierówny 0 więc k nie rośnie
no tak, czyli moja koncepcja jest zła, ale nie wiem, dlaczego będzie k=0, mógłbyś mi napisać?
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C] Znalezienie pierwszego wystąpienia liczby

Post autor: royas »

Czyli wyglądałoby, że oryginalny jest ok. Ale on nie działa tak jak piszesz. Operator = to przypisanie (zwraca wartość prawego argumentu, czyli w tym przypadku zawsze 0, czyli fałsz), a nie porównanie.
Popularna literówka w C.
sulaw
Użytkownik
Użytkownik
Posty: 255
Rejestracja: 24 wrz 2011, o 16:33
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 78 razy
Pomógł: 10 razy

[C] Znalezienie pierwszego wystąpienia liczby

Post autor: sulaw »

no tak, czyli powinno być A[k]==0 ?
Ostatnio zmieniony 9 gru 2012, o 18:54 przez Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C] Znalezienie pierwszego wystąpienia liczby

Post autor: royas »

Tak, wtedy pętla zatrzyma się na pierwszym elemencie nie spełniającym tego warunku - o to chodzi.
sulaw
Użytkownik
Użytkownik
Posty: 255
Rejestracja: 24 wrz 2011, o 16:33
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 78 razy
Pomógł: 10 razy

[C] Znalezienie pierwszego wystąpienia liczby

Post autor: sulaw »

ok, dzięki wielkie
ODPOWIEDZ