Strona 1 z 1

[C] Znalezienie pierwszego wystąpienia liczby

: 9 gru 2012, o 16:55
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

[C] Znalezienie pierwszego wystąpienia liczby

: 9 gru 2012, o 17:21
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?

[C] Znalezienie pierwszego wystąpienia liczby

: 9 gru 2012, o 17:26
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ć?

[C] Znalezienie pierwszego wystąpienia liczby

: 9 gru 2012, o 17:35
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.

[C] Znalezienie pierwszego wystąpienia liczby

: 9 gru 2012, o 17:37
autor: sulaw
no tak, czyli powinno być A[k]==0 ?

[C] Znalezienie pierwszego wystąpienia liczby

: 9 gru 2012, o 17:42
autor: royas
Tak, wtedy pętla zatrzyma się na pierwszym elemencie nie spełniającym tego warunku - o to chodzi.

[C] Znalezienie pierwszego wystąpienia liczby

: 9 gru 2012, o 17:44
autor: sulaw
ok, dzięki wielkie