Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9 po wykonaniu programu ma mieć wartość t[i-2], element t[0] wartość t[8], a element t[1] wartość t[9]. Program ma używać tylko jednej tablicy i stosować pętlę for. 2. apisz program, który przesuwa w lewo o jedną pozycję zawartość tablicy 10-cio elementowej liczb całkowitych tzn. dla elementów i=0,..,8 t[i] po wykonaniu programu ma mieć wartość t[i+1], a element t[9] wartość t[0]. Program ma używać tylko jednej tablicy. Program ma używać tylko jednej tablicy i stosować pętlę for. 3. apisz program, który w tablicy liczb całkowitych 10-cio elementowej wypisuje liczbę, która najczęściej występuje w tej tablicy oraz podaje krotność jej występowania i indeks w tablicy, pod którym liczba ta występuje po raz pierwszy. 4. apisz program, który z dwóch 10-cio elementowych tablic znakowych tworzy trzecią złożoną na zmianę z elementów to jednej, to drugiej tablicy. 5. apisz program, który z dwóch 10-cio elementowych posortowanych rosnąco tablic liczb całkowitych tworzy trzecią (20-elementową) również posortowaną rosnąco. ależy wykorzystać fakt posortowania tablic 10-cio elementowych (do trzeciej tablicy, kolejne elementy mają być wstawiane od razu we właściwym miejscu tej tablicy). 6. apisz program, który z dwóch 10-cio elementowych tablic znakowych tworzy trzecią zawierającą następujące samogłoski: a, e, i z tych tablic. Rozmiar trzeciej tablicy powinien być sumą rozmiarów dwóch pozostałych tablic na wypadek, gdyby w tablicach znajdowały się same wymienione samogłoski. 7. apisz program, który oblicza iloczyn tylko tych elementów całkowitoliczbowej tablicy 10-cio elementowej, które są liczbami parzystymi (chodzi o wartości elementów w tablicy). 8. apisz program, który posortowaną tablicę liczb całkowitych (do programu należy wczytać z klawiatury już posortowane liczby) sortuje w kierunku przeciwnym (jeżeli tablica posortowana jest malejąco program sortuje ją rosnąco, jeżeli rosnąco, program sortuje malejąco). ależy wykorzystać początkowe posortowanie tablicy. W programie można użyć tylko jedną tablicę. Uwaga: Zadanie należy zrealizować zamieniając kolejno element o indeksie 0 z elementem ostatnim w tablicy, o indeksie 1 z przedostatnim itd. Program powinien działać poprawnie zarówno dla tablic o rozmiarze parzystym jak i nieparzystym. 9. apisz program, który wpisuje do kolejnych elementów tablicy 20-elementowej kolejne potęgi liczby n, począwszy od n^0. Liczbę n należy wczytać z klawiatury. Potęgowanie należy zrealizować za pomocą wielokrotnego mnożenia. 10. apisz program, który oblicza i wypisuje kolejne (od 0) potęgi dowolnej ( wczytanej z klawiatury) liczby całkowitej. Zakładamy, że wykładnik jest liczbą całkowitą (dodatnią lub ujemną) i w programie nie wykorzystujemy
funkcji potęgowej dostępnej w języku C. 11. apisz program, który zamienia liczbę całkowitą dziesiętną na system dwójkowy (bez użycia funkcji matematycznych dostępnych w C i formatu binarnego). 12. apisz program, który wstawia dowolną liczbę zmiennoprzecinkową (wczytana z klawiatury)do posortowanej tablicy 10-cio elementowej o elementach -5,5; -1,2; 0; 0; 1,4; 3,5; 6,8; 10; 10; 14,5 tak, aby tablica była nadal posortowana bez sortowania całego wektora. ależy zadeklarować tablicę 11-to elementową, żeby wstawiany element się zmieścił. Uwaga: należy znaleźć miejsce (indeks) elementu w tablicy, gdzie powinna być wstawiona wczytana liczba, a następnie rozsunąć elementy tzn. przesunąć o jedną pozycję w prawo wszystkie elementy w pierwotnej tablicy poczynając od znalezionego indeksu do ostatniego elementu tablicy, a następnie w wolne miejsce wstawić wczytaną wartość. Program ma używać tylko jednej tablicy i stosować pętlę for. 13. apisz program, który wczytuje dowolną liczbę całkowitą x oraz indeks całkowity i z przedziału <0;9>, a następnie wstawia do elementu tablicy o indeksie i wartość x w ten sposób, że aby nie stracić zawartości elementu o indeksie i należy elementy od i do 9 "rozsunąć" w prawo (analogicznie jak w zadaniu 10). ależy zadeklarować jedną 11-elementową tablicę. Program ma używać tylko jednej tablicy i stosować pętlę for. 14. apisz program, który oblicza średnią arytmetyczną elementów podzielnych przez 15 w 10-cio elementowej tablicy liczb całkowitych. 15. apisz program, który oblicza iloczyn elementów podzielnych przez 8 w 10-cio elementowej tablicy liczb całkowitych. 16. apisz program, który z dwóch 10-cio elementowych tablic liczbowych tworzy trzecią w ten sposób, że jej kolejne elementy zawierają na zmianę dwa elementy z jednej tablicy i dwa z drugiej. Uwagi do zadań: Zadanie 1 (zadanie 2 należy wykonać analogicznie, z tym że należy przesunąć elementy w lewo): a) cv cv cv cv cv cv cv 21-3 15 5 0-13 -4 20 6-16 b) 6-16 21-3 15 5 0-13 4 20 Rys. 1. Graficzna ilustracja zadania 1 a)przykładowa tabela przed modyfikacją; b) tabela po przesunięciu jej elementów w prawo o dwie pozycje.
Uwagi: Pierwszym krokiem w programie (po deklaracji potrzebnych zmiennych) musi być wypełnienie konkretnymi liczbami tablicy. Jest to konieczne, gdyż po deklaracji zmiennej (również tablicy) jej wartość jest nieokreślona. W programie proszę wczytać kolejne wartości elementów tablicy z klawiatury. Zadanie 1 można zrealizować stosując różne algorytmy np. można przesunąć każdy element od razu o dwie pozycje w prawo (poza dwoma ostatnimi, które należy potraktować indywidualnie), ale można również osiągnąć ten sam cel przesuwając kolejne elementy tablicy o jedną pozycję w prawo (ostatni element wstawić do elementu o indeksie 0), a następnie powtórzyć tą procedurę drugi raz. a pierwszy rzut oka druga propozycja wydaje się bardziej pracochłonna i skomplikowana, jednak wbrew pozorom jest on prostsza do zrealizowania w programie i bardziej uniwersalna. Jej uniwersalność polega na tym, że po zdefiniowaniu w programie zmiennej lub stałej krok (określającej liczbę pozycji, o którą chcemy przesunąć elementy wektora w prawo) w programie wystarczy jedynie zmienić jej wartość, aby uzyskać program, który poprawnie będzie działał dla dowolnej wartości przesunięcia. Zadanie 5: Załóżmy, że posortowane rosnąco tablice i są następujące: [10]={-3,-2,-1,0,1,4,4,7,11,22} [10]={-7,-5,0,1,3,7,10,12,20,25} SAR L[10], [10], L3[20],,, i3 =0; =0; i3=0; i3<20 <10 && <10 [] < L[] >=10 L3[i3]=[]; L3[i3]=[]; L3[i3]=[]; L3[i3]=[]; = +1; = +1; = +1; = +1; i3 = i3+1; SOP
Rys.2. Schemat blokowy algorytmu z zadania 5. Graficzna interpretacja pierwszych kilku kroków algorytmu z zadania 5: Krok1: L3 i3-7 Początkowo wszystkie zmienne indeksujące:,, i3 mają wartość 0, gdyż analiza tablic, i L3 rozpoczyna się od elementów o indeksie 0. Po porównaniu elementów o indeksie i wybierana jest wartość mniejsza (w tym wypadku jest to wartość -7 z tablicy ) i wpisywana do tablicy L3 o indeksie i3. Po wykonaniu podstawienia do tablicy L3 inkrementowana jest wartość indeksów (gdyż w wyniku porównania wybrano element z tablicy ) i i3 (gdyż w następnym kroku będzie nadawana wartość kolejnemu elementowi w tablicy L3). Krok2: L3 i3-7 -5 Porównanie wartości elementów z tablicy i, na które wskazują odpowiednio indeksy i (-3 i -5) i wstawienie mniejszej (-5 z tablicy ) do elementu o indeksie i3 tablicy L3. astępnie przesunięcie o 1 indeksów i i3. Krok3: L3 i3-7 -5-3
Porównanie wartości elementów z tablicy i, na które wskazują odpowiednio indeksy i (-3 i 0) i wstawienie mniejszej (-3 z tablicy ) do elementu o indeksie i3 tablicy L3. astępnie przesunięcie o 1 indeksów (gdyż z tablicy wybrano wartość) i i3 itd. W każdym kroku sprawdzane są indeksy i, czy nie są większe niż maksymalny dopuszczalny indeks w tablicach i (czyli 9). Po osiągnięciu maksymalnego indeksu przypisanego jednej z tablic, w pozostałych krokach przepisywane są do tablicy L3 pozostałe wartości elementów tablicy drugiej. Rys.3. Fragment okna z uruchomionym programem z zadania 5 (dla przykładowych danych). Zadanie 11: ależy przypomnieć sobie algorytm zamiany całkowitej liczby dziesiętnej na system dwójkowy i na jego podstawie napisać program.