{"id":"informatyka-2011-maj-matura-rozszerzona/zad/1","paper_id":"informatyka-2011-maj-matura-rozszerzona","number":"1","points":null,"ptype":"open","subject":"informatyka","category":"matura","year":2011,"month":"maj","level":"rozszerzona","text":"Zadanie 1. Długość napisów binarnych (7 pkt)\nOpisana poniżej funkcja rekurencyjna wyznacza, dla liczby naturalnej\n, długość napisu\nuzyskanego przez sklejenie binarnych reprezentacji liczb naturalnych od 1 do\n0\nn \n1\nn \nFunkcja\n\nsklej n\nkrok 1. jeśli\n, to podaj 0 jako wynik i zakończ działanie\n1\n\nn\nkrok 2. jeśli n parzysta, to wynikiem jest\n\n\n1\n2\n/ 2\nn\nsklej n\n\n\nkrok 3. jeśli n nieparzysta, to wynikiem jest\n\n\n\n\n\n\n\n\n1\n1 / 2\n1\nn\nsklej\nn\nsklej\nn\n\n\n\n\n/ 2\nWykonaj polecenia a)-c):\na) Wykonanie funkcji sklej można przedstawić w postaci drzewa wywołań rekurencyjnych\nilustrującego wszystkie wywołania funkcji po jej uruchomieniu dla zadanego argumentu.\nPoniższy rysunek przedstawia takie drzewo dla wywołania\n\n5\nsklej\n\n5\nsklej\n\n2\nsklej\n\n3\nsklej\nNarysuj analogiczne drzewo dla wywołania\n\n7\nsklej\n\n1\nsklej\n\n1\nsklej\n\n2\nsklej\n\n1\nsklej\nPoziom rozszerzony - część I\n3\nb) Uzupełnij poniższą tabelę, podając wartości funkcji sklej dla wskazanych argumentów.\nn\n\nsklej n\n1\n0\n2\n1\n3\n4\n5\n6\nc) Chcemy wypełnić tablicę \n\n1\ns\nn w taki sposób, że \n\ns i\nsklej i\n\ndla każdego 1\ni\nn\n\nPodaj algorytm wypełniający tablicę s odpowiednimi wartościami bez wywoływania\nfunkcji sklej, tzn. bez użycia rekurencji. Zauważ, że jeśli poprawnie wyliczone są już\nwartości \n\n\n1 , ,\n1\ns\ns i \n, to można z nich skorzystać przy wyznaczaniu \ns i .\nZapisz swój algorytm w postaci listy kroków, schematu blokowego lub w wybranym\njęzyku programowania, który wybrałeś/aś na egzamin.\nSpecyfikacja:\nDane: liczba naturalna\n0\nn \nWynik: tablica \n\n1\ns\nn o wartościach \n\ns i\nsklej i\n\n, dla 1\ni\nn\n\nAlgorytm:\nPoziom rozszerzony - część I\n4\nPoziom rozszerzony - część I\n5","answer":null,"answer_text":"Zadanie 1. a) (0-1)\nObszar standardów\nOpis wymagań\nWiadomości i rozumienie\nZnajomość wybranych struktur danych\nPoprawna odpowiedź\n1 p. - za podanie poprawnej odpowiedzi\n0 p. - za podanie niepoprawnej odpowiedzi albo jej brak\nZadanie 1. b) (0-2)\nKorzystanie z informacji\nObliczenie kolejnych wartości funkcji dla wskazanych\nargumentów\nPoprawna odpowiedź\nn\n( )\nsklej n\n1\n0\n2\n1\n3\n3\n4\n5\n5\n8\n6\n11\n2 p. - za poprawne uzupełnienie wartości funkcji w tabeli\n1 p. - za uzupełnienie wartości funkcji w tabelce z jednym błędem\n0 p. - za wypełnioną tabelę z więcej niż jednym błędem albo brak odpowiedzi\n( )\n4\nsklej\n( )\n3\nsklej\n( )\n2\nsklej\n( )1\nsklej\n( )\n2\nsklej\n( )1\nsklej\n( )\n7\nsklej\n( )\n1\nsklej\nKryteria oceniania odpowiedzi\n3\nZadanie 1. c) (0-4)\nKorzystanie z informacji\nDobranie najlepszego algorytmu i odpowiednich struktur\ndanych (w tym struktury dynamicznej) do rozwiązania\npostawionego problemu\nPrzykładowy algorytm\n#include <iostream>\nusing namespace std;\nint main()\n{\nint n;\nint * s;\ncin >> n;\ns = new int[n+1];\ns[1] = 0;\nfor(int i=2;i<=n;++i)\n{\nif(i%2 == 0)\ns[i] = i-1+2*s[i/2];\nelse\ns[i] = i-1+s[(i-1)/2]+s[(i+1)/2];\n}\n}\n4 p. - za w pełni poprawny algorytm, w tym:\nza poprawną inicjację zmiennych - 1 p.\nza poprawne obliczanie elementów parzystych - 1 p.\nza poprawne obliczanie elementów nieparzystych - 1 p.\nza poprawne podstawienia w tablicy - 1 p.\n0 p. - za błędny algorytm albo brak odpowiedzi\nKryteria oceniania odpowiedzi\n4","solution":null,"image":"img/informatyka-2011-maj-matura-rozszerzona/zad-1.webp","solution_image":null,"topics":null,"page_from":2,"source":"ocr","answer_source":null,"answer_text_source":"ocr","solution_source":null,"text_source":"ocr","source_label":"Informatyka · Matura · maj 2011 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Zadanie 1. Długość napisów binarnych (7 pkt)<br>Opisana poniżej funkcja rekurencyjna wyznacza, dla liczby naturalnej<br>, długość napisu<br>uzyskanego przez sklejenie binarnych reprezentacji liczb naturalnych od 1 do<br>0<br>n <br>1<br>n <br>Funkcja<br><br>sklej n<br>krok 1. jeśli<br>, to podaj 0 jako wynik i zakończ działanie<br>1<br><br>n<br>krok 2. jeśli n parzysta, to wynikiem jest<br><br><br>1<br>2<br>/ 2<br>n<br>sklej n<br><br><br>krok 3. jeśli n nieparzysta, to wynikiem jest<br><br><br><br><br><br><br><br><br>1<br>1 / 2<br>1<br>n<br>sklej<br>n<br>sklej<br>n<br><br><br><br><br>/ 2<br>Wykonaj polecenia a)-c):<br>a) Wykonanie funkcji sklej można przedstawić w postaci drzewa wywołań rekurencyjnych<br>ilustrującego wszystkie wywołania funkcji po jej uruchomieniu dla zadanego argumentu.<br>Poniższy rysunek przedstawia takie drzewo dla wywołania<br><br>5<br>sklej<br><br>5<br>sklej<br><br>2<br>sklej<br><br>3<br>sklej<br>Narysuj analogiczne drzewo dla wywołania<br><br>7<br>sklej<br><br>1<br>sklej<br><br>1<br>sklej<br><br>2<br>sklej<br><br>1<br>sklej<br>Poziom rozszerzony - część I<br>3<br>b) Uzupełnij poniższą tabelę, podając wartości funkcji sklej dla wskazanych argumentów.<br>n<br><br>sklej n<br>1<br>0<br>2<br>1<br>3<br>4<br>5<br>6<br>c) Chcemy wypełnić tablicę <br><br>1<br>s<br>n w taki sposób, że <br><br>s i<br>sklej i<br><br>dla każdego 1<br>i<br>n<br><br>Podaj algorytm wypełniający tablicę s odpowiednimi wartościami bez wywoływania<br>funkcji sklej, tzn. bez użycia rekurencji. Zauważ, że jeśli poprawnie wyliczone są już<br>wartości <br><br><br>1 , ,<br>1<br>s<br>s i <br>, to można z nich skorzystać przy wyznaczaniu <br>s i .<br>Zapisz swój algorytm w postaci listy kroków, schematu blokowego lub w wybranym<br>języku programowania, który wybrałeś/aś na egzamin.<br>Specyfikacja:<br>Dane: liczba naturalna<br>0<br>n <br>Wynik: tablica <br><br>1<br>s<br>n o wartościach <br><br>s i<br>sklej i<br><br>, dla 1<br>i<br>n<br><br>Algorytm:<br>Poziom rozszerzony - część I<br>4<br>Poziom rozszerzony - część I<br>5</p>","answer_text_html":"<p>Zadanie 1. a) (0-1)<br>Obszar standardów<br>Opis wymagań<br>Wiadomości i rozumienie<br>Znajomość wybranych struktur danych<br>Poprawna odpowiedź<br>1 p. - za podanie poprawnej odpowiedzi<br>0 p. - za podanie niepoprawnej odpowiedzi albo jej brak<br>Zadanie 1. b) (0-2)<br>Korzystanie z informacji<br>Obliczenie kolejnych wartości funkcji dla wskazanych<br>argumentów<br>Poprawna odpowiedź<br>n<br>( )<br>sklej n<br>1<br>0<br>2<br>1<br>3<br>3<br>4<br>5<br>5<br>8<br>6<br>11<br>2 p. - za poprawne uzupełnienie wartości funkcji w tabeli<br>1 p. - za uzupełnienie wartości funkcji w tabelce z jednym błędem<br>0 p. - za wypełnioną tabelę z więcej niż jednym błędem albo brak odpowiedzi<br>( )<br>4<br>sklej<br>( )<br>3<br>sklej<br>( )<br>2<br>sklej<br>( )1<br>sklej<br>( )<br>2<br>sklej<br>( )1<br>sklej<br>( )<br>7<br>sklej<br>( )<br>1<br>sklej<br>Kryteria oceniania odpowiedzi<br>3<br>Zadanie 1. c) (0-4)<br>Korzystanie z informacji<br>Dobranie najlepszego algorytmu i odpowiednich struktur<br>danych (w tym struktury dynamicznej) do rozwiązania<br>postawionego problemu<br>Przykładowy algorytm<br>#include &lt;iostream&gt;<br>using namespace std;<br>int main()<br>{<br>int n;<br>int * s;<br>cin &gt;&gt; n;<br>s = new int[n+1];<br>s[1] = 0;<br>for(int i=2;i&lt;=n;++i)<br>{<br>if(i%2 == 0)<br>s[i] = i-1+2*s[i/2];<br>else<br>s[i] = i-1+s[(i-1)/2]+s[(i+1)/2];<br>}<br>}<br>4 p. - za w pełni poprawny algorytm, w tym:<br>za poprawną inicjację zmiennych - 1 p.<br>za poprawne obliczanie elementów parzystych - 1 p.<br>za poprawne obliczanie elementów nieparzystych - 1 p.<br>za poprawne podstawienia w tablicy - 1 p.<br>0 p. - za błędny algorytm albo brak odpowiedzi<br>Kryteria oceniania odpowiedzi<br>4</p>","solutions":[]}