Wątek przeniesiony 2018-02-20 18:46 z Newbie przez furious programming.

Kurs progrmowania dla początkujacych - prosba o pomoc w paru zadaniach testowych

0

Witam. Biore obecnie udział w rekrutacji na kurs programowania dla "zielonych". Jej elementem jest kilkudziesieciopytaniowy test i z paroma zadaniami mam problem. W niektorych wydaje mi sie ze lapie o co chodzi ale moze ktos z forumowiczow moglby mnie "naprowadzic"

zad 1.Wśród funkcji języka znajduje się taka, która sprawdza czy tablica liczb przekazana jej jako argument jest posortowana rosnąco. Np. czy_posort(tabA) zwróci wartość true gdy tabA = [ 1, 2, 3, 4, 5, 6, 7, 8 ]. Chcemy oszacować ile operacji porównania, w najgorszym przypadku (tj. dla niesprzyjających danych), będzie musiała wykonać ta funkcja dla dowolnej tablicy liczb o długości n. Wskaż najmniejszą wartość dla takiego oszacowania:

n * n

n - 1

n

n + 1

log(n)

Na logik wydaje mi sie, że prawidlowa bzie tu odp n-1 ponieważ mysle, ze w najgorszym mozliwym ukladzie danych program bezie musial porownywac kazda liczbe w tablicy z kolejna, z wylaczeniem ostatniej, ktora nie bedzie musialabc z niczym porownana, czy tak?

Z ty ze toce komplikuje sie moja "linia"przy nastepnym zadaniu, ktore brzmi nastepujaco:

Wśród funkcji języka znajduje się taka, która sprawdza czy tablica liczb przekazana jej jako argument jest posortowana rosnąco. Np. czy_posort(tabA) zwróci wartość true gdy tabA = [ 1, 2, 3, 4, 5, 6, 7, 8 ] Zastanów się i odpowiedz jaka jest najmniejsza liczba operacji porównania którą musi wykonać ta funkcja dla dowolnej (np. wypełnionej losowymi wartościami) tablicy liczb o długości n:

Czyli jakby sytuacja odwrotna do poprzedniej. Problem w tym, że podane warianty odpowiedzi są dokladnie takie same jak w zadaniu poprzednim:

n * n

n - 1

n

n + 1

log(n)

Mi się wydawało że najmnejsza możliwa liczba operacji to 1 bo jeśli program znajdzie o razu dwie liczby "nie po kolei" to nie mus sprawdzać dalej i od razu zwróci wartośc "false". Niestey jak widać takiego wariantu odpowiedzi nie ma. Gdzie jest bład w moim myśleniu?

Poza tymi dwoma w teście jest też kilka zadan "alfabetycznych" polegajacych na odkryciu wg jakiej reguly literom alfabetu przypisano liczby. W kilku sobie pradzilem ale w dwóch nie mam bladego pojecia. wklejam je ponizej.

  1. For alphabet: ABCDEFGHIJKLMNOPRSTUWXYZ
    If CUD=54, APP=34, and FCK=30, what is the value for MACX

  2. For alphabet: ABCDEFGHIJKLMNOPRSTUWXYZ
    If KIK = 44, TIK = 36, and TOB = 39, what is the value of MUSS?

Za wszelka pomoc dziekuje

0

Najbardziej niesprzyjającą sytuacją jest, gdy tablica jest posortowana, ale malejąco i dla takiej sprawdź ile porównań potrzebujesz ;)

0
kenik napisał(a):

Najbardziej niesprzyjającą sytuacją jest, gdy tablica jest posortowana, ale malejąco i dla takiej sprawdź ile porównań potrzebujesz ;)

Ale czy wtedy własnie już po pierwszym porównaniu funkcja nie zwróci od razu wartości "false"? Skoro dwie pierwsze sprawdzane liczby bedą w niewlasciwej kolejnosci to chyba program nie bedzie musiał już dalej sprawdzać?

0
  1. For alphabet: ABCDEFGHIJKLMNOPRSTUWXYZ
    If KIK = 44, TIK = 36, and TOB = 39, what is the value of MUSS?

Z=1, A=24, więc MUSS: 12 + 5 + 7 + 7 = 31.

Pierwsze albo mnie zagięło, albo już mi się dzisiaj ciężko myśli.

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