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}\))
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