Algorytm obliczający x z równania

0

Witam,

muszę przygotować kilka algorytmów na studia, ale utknąłem na następującym zadaniu:

Dane są liczby całkowite nieujemne m, n. Z działań arytmetycznych znana jest tylko operacja dodawania. Rozpoznawane są liczby ze znakiem. Zaprojektować algorytm obliczania wartości x równania m+x=n.

W jaki sposób mogę obliczyć wartość x mając do dyspozycji jedynie dodawanie?

1

Podstaw za x 0, , i potem zwiększaj w while-u co jeden dopóki m + x != n.

Albo też szukanie binarne, początkowo od 0 do n

0

Czyli wyglądałoby to tak?

1

Owszem, ale dla dużych różnic między m i n binarne było by szybciej. Należało by się też dowiedzieć co oznacza "Rozpoznawane są liczby ze znakiem", jak x może być mniejsze od zera trzeba będzie zamienić m i n miejscami i dopisać - przed x-em. Wcześniej podano że m i n są nieujemne, zatem jedynym kandydatem na takową jest x.

0

Okej, dziękuję za pomoc. Dopracuję sobie tamten algorytm. Niestety zatrzymałem się na kolejnym, poniżej treść:

Dana jest tablica T w której zapisano n liczb naturalnych. Elementy tablicy uporządkowane są w kolejności rosnącej (T[i+1] > T[i] dla i należącego do [0, n-2]). Zaprojektować algorytm wyszukiwania (wyszukiwanie binarne) elementu (o kluczu x), którego wartość jest równa zadanej liczbie naturalnej x. W przypadku znalezienia takiego elementu należy zwrócić jego numer (indeks elementu tablicy T), w przeciwnym razie należy przekazać liczbę -1 jako informację, że poszukiwanie zakończone zostało niepowodzeniem (liczby x nie odnaleziono).

No więc przeczesałem parę stronek i mniej więcej wiem jak działa wyszukiwanie binarne. Nie rozumiem natomiast dlaczego ostatni indeks tabeli jest oznaczony "n-2", nie powinno być "n-1"? Rozumiem, że w schemacie blokowym muszę poprosić o podanie wartości n jak i x? Wtedy również muszę podać warunek, że n nie może być mniejsze od 2?

0

Nie rozumiesz co tam jest napisane po prostu. NIGDZIE nie jest powiedziane że ostatni indeks jest n-2. Jest napisane ze podana własność jest prawdziwa dla indeksów od 0 do n-2, co ma sens, bo przecież własność mówi o tym że T[i] < T[i+1] więc siłą rzeczy nie jest zdefiniowana dla i=n-1, bo wtedy T[i+1] = T[n-1+1] = T[n] a takiego indeksu nie ma.
Szukasz problemów tam gdzie ich nie ma.
Poza tym użytkownik nie musi podawać n jeśli umiesz policzyć długość tablicy T.

1 użytkowników online, w tym zalogowanych: 0, gości: 1