Strona 1 z 1

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 21:11
autor: sulaw
Następujący fragment kodu ma sprawdzić, czy element k występuje w tablicy A.
Zawiera jeden błąd. Popraw go.

Kod: Zaznacz cały

int wystepuje;
for (int i = 0; i < n && !wystepuje; i++)
if (A[i] == k)
wystepuje = 1;

czy ktoś mógłby mi powiedzieć co oznacza ten fragment kodu : !wystepuje
wiem co oznacza ! ale nie rozumiem, jak jest jego znaczenie dla działania algorytmu. Bardzo proszę o pomoc.

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 21:31
autor: Santor
Podstawy podstaw, "!" jest operatorem negacji wiec oznacza zerową wartosc zmiennej "wystepuje". Czyli żeby nastąpiło kolejne zapętlenie "i" musi byc mniejsze od n (nie podałes co oznacza ta zmienna ale zapewne wielkosc tablicy, a jesli tak to powinno byc n-1 bo indeksujemy od 0) i zmienna wystepuje musi byc rowna 0.

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 21:37
autor: sulaw
ok dzięki (dopiero zacząłem zajmowanie się programowaniem i stąd moje pytanie)
czy zamiast !wystepuje mogłoby być wystepuje=0

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 21:41
autor: Santor
nie, "=" jest operatorem przypisania, operatorem porównania jest '=='. Więc wszędzie gdzie chcemy coś porównać używamy "==" a jeżeli chcemy przypisac wartosć to '='

PS lepiej sie ucz c++ niż c, ewentualnie Obj-c, nieobiektowe języki są bezużyteczne przy pisaniu większych aplikacji:)

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 21:43
autor: sulaw
ok, dzięki za szybką pomoc i poradę
EDIT
czy ktoś mógłby powiedzieć, gdzie jest w tym algorytmie błąd? Bo takie jest polecenie. Myślałem, że po zrozumieniu !wystepuje będę umiał go znaleźć. Ale niestety nie potrafię.

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 22:16
autor: Santor
nadal nie napisales czym jest 'n' bez tego ciezko powiedziec. Tzn jestem niemal pewny aczkolwiek chcialbym najpierw wiedziec zeby nie wprowadzac w blad.

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 22:28
autor: sulaw
Całą treść zadania wkleiłem na górze. Nic poza tym niestety nie wiem. Wybaczę ewentualne wprowadzenie w błąd
EDIT Przypuszczam, że jest to ilość elementów tablicy

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 22:46
autor: Santor
Mozna by jedynie przyczepic sie do tego ze zmiennac wystepuje jest typu int, a mozna zmienic na bool. Chociaz z tego co pamietam to znegowany int tez daje wartosc 0. Albo tez do braku przypisania zmiennej wystepuje wartosci 0 na start. Nie kodzilem nigdy w C wiec nie wiem czy zmienna jest czysta na start czy ma jakas kosmiczna wartosc.

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 22:53
autor: sulaw
wydaje mi się, że najtrafniejsza odpowiedź to zmienna bool
dzięki za pomoc

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 22:58
autor: Santor
jak trafisz na jakis problem to pisz na PW.

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 23:02
autor: sulaw
ok, jeszcze raz dzięki za pomoc

[C] proste pytanie, poprawa algorytmu

: 9 gru 2012, o 23:18
autor: royas
Jaką wartość ma wystepuje podczas pierwszej próby wejścia w pętlę for? To jest problem, a nie żadne bool, które nawet nie jest typem, a jedynie makrem do _Bool od c99.

[C] proste pytanie, poprawa algorytmu

: 10 gru 2012, o 07:15
autor: Santor
Też mi sie to wydawało bardziej trafne, ale wybrał sobie co chciał Niektórzy profesorowie mają manie na punkcie oszczędzania pamieci ;]