Vous êtes sur la page 1sur 3

Dorota Aniszewska, Wojciech Myszka

PROGRAMOWANIE W JZYKU C
Lista nr 4. Tablice. Algorytmy: sortowanie, wyszukiwanie binarne.
Tablica jednowymiarowa moe mie stay rozmiar; najlepiej wwczas jest okreli go uywajc
#dene. Rozmiar tablicy moe by rwnie dynamiczny, czyli by ustalany w trakcie dziaania
programu - moe by on wylosowany lub nadany przez uytkownika. Naley wwczas zarezerwowa
odpowiedni ilo pamici uywajc funkcji malloc(), a na kocu programu j zwolni uywajc
funkcji free().
Program tablice.c zawiera przykadow deklaracj i funkcje dla tablicy o staym rozmiarze. Program
tablicedynamicznie.c zawiera przykadow deklaracj i funkcje dla tablicy o rozmiarze ustalanym
w trakcie dziaania programu.
1. Napisz program, ktry dla tablicy liczb cakowitych o staym rozmiarze:
a) znajduje warto najwiksz i najmniejsz,
b) oblicza redni arytmetyczn,
c) oblicza standardowe odchylenie wedug wzoru: =

n
i=1
(a
i
s)
2
n
, gdzie a
i
to i-ty element
tablicy, n - liczba elementw tablicy, s - rednia arytmetyczna.
2. Napisz funkcj, ktra nadaje wartoci losowe wszystkim elementom tablicy typu int:
void LosujTablice(int*, int, int, int) - pierwszy parametr to adres tablicy, drugi liczba elementw
tablicy, trzeci to najmniejsza moliwa warto, jak moe mie element tablicy, czwarty parametr
to najwiksza moliwa warto, jak moe mie element tablicy. Wywoaj j w funkcji main.
3. Napisz funkcj wywietlajc wszystkie elementy tablicy na ekranie:
void WyswietlTablice(int *, int, int) - pierwszy parametr to adres tablicy, drugi to liczba ele-
mentw tablicy, trzeci parametr to liczba elementw tablicy w jednym wierszu, Wywoaj j w
funkcji main.
4. Napisz funkcj obliczajc warto redniej (nie wywietlajca jej na ekranie!). Wywoaj j w
funkcji main i wywietl warto redniej.
5. Napisz funkcj, ktra odwrci tablic, czyli pierwszy element zostanie ostatnim, a ostatni
pierwszym.
6. Napisz funkcj, ktra zamieni miejscami wartoci dwch wskazanych elementw tablicy.
7. Napisz program, ktry podaje, na ktrym miejscu w tablicy liczb cakowitych znajduje si
element o najmniejszej wartoci. Jeli jest wicej ni jeden elementw tablicy o tej wartoci,
program ma poda liczb tych elementw i wszystkie ich pozycje w tablicy.
8. Napisz funkcj, ktry przesuwa elementy tablicy o jedno miejsce w prawo albo w lewo (wybiera
uytkownik) wolne miejsca uzupeniajc zerami, np. tablica (5,4,3,2,1) przesunita w prawo to
(0,5,4,3,2).
Lista nr 4. Tablice. Dorota Aniszewska, Wojciech Myszka
9. Napisz funkcj rekurencyjn, ktra oblicza sum elementw tablicy.
10. Zaprogramuj nastpujcy algorytm: Utwrz tablic jednowymiarow T1 o podanym przez uyt-
kownika rozmiarze i nadaj jej losowe wartoci z przedziau do 100.
krok 1. Oblicz redni warto elementw tablicy T1 i utwrz now tablic T2, ktra bdzie
zawieraa tylko wiksze od redniej elementy z tablicy T1,
krok 2. Przepisz wartoci z tablicy T2 do T1 oraz usu T2,
krok 3. Jeli liczba elementw tablicy T1 > 1, przejd do kroku 1, w przeciwnym razie zakocz
program.
11. Napisz funkcj, ktry zrealizuje dodawanie wylosowanych liczb binarnych. Liczby binarne ska-
daj si z wartoci 1 i 0 zapisanych do tablicy liczb cakowitych typu unsigned char o staym
rozmiarze 8 lub parzystej wielokrotnoci liczby 8. Wynik ma by zapisywany w tablicy o tym
samym rozmiarze. Program ma obsugiwa overow. Na ekranie dwie liczby oraz wynik wywie-
tlane s uytkownikowi jako cig 1 i 0. Dodatkowo mona zaprogramowa konwersj do systemu
dziesitnego, tylko i wycznie w celu prezentacji liczb na ekranie.
12. Napisz funkcj, ktry zrealizuje mnoenie wylosowanych liczb binarnych. Liczby binarne ska-
daj si z wartoci 1 i 0 zapisanych do tablicy liczb cakowitych typu unsigned char o staym
rozmiarze 8 lub parzystej wielokrotnoci liczby 8. Wynik zapisywany jest w tablicy o dwa razy
wikszym rozmiarze. Na ekranie dwie liczby oraz wynik wywietlane s uytkownikowi w sys-
temie binarnym. Dodatkowo mona zaprogramowa konwersj do systemu dziesitnego, tylko i
wycznie w celu prezentacji liczb na ekranie.
13. Sortowanie bbelkowe. Napisz funkcj, ktry posortuje tablic liczb losowych rosnco we-
dug podanego algorytmu: sortowanie bbelkowe polega na porwnywaniu dwch kolejnych
elementw i zamianie ich kolejnoci, jeeli zaburza ona porzdek, w jakim si sortuje tablic.
Sortowanie koczy si, gdy podczas kolejnego przejcia (porwnania kadego elementu tablicy
z nastpnym) nie dokonano adnej zmiany.
Przykad dziaania dla tablicy (4,2,1,7,5):
1 przejcie tablicy:
(4,2,1,7,5)zamiana miejscami 2 i 4 (2,4,1,7,5) zamiana miejscami 4 i 1 (2,1,4,7,5)
(2,1,4,7,5) zamiana miejscami 7 i 5 (2,1,4,5,7)
2 przejcie tablicy:
(2,1,4,5,7) zamiana miejscami 2 i 1 (1,2,4,5,7) (1,2,4,5,7) (1,2,4,5,7)
3 przejcie tablicy:
(1,2,4,5,7) (1,2,4,5,7) (1,2,4,5,7) (1,2,4,5,7)
Koniec dziaania algorytmu, poniewa tablica jest posortowana.
14. Sortowanie przez wybieranie. Napisz funkcj, ktry posortuje tablic liczb losowych rosnco
wedug podanego algorytmu: jeli sortujemy tablic n-elementow rosnco, to na i-tym miejscu
ma znale si najmniejszy element znaleziony wrd elementw od i do n tablicy, co oznacza, e
porwnujemy i-ty element z minimum znalezionym wrd elementw od i+1 do n i zamieniamy
miejscami te wartoci, jeli i-ty element jest wikszy ni znalezione minimum.
Przykad dziaania dla tablicy (4,5,3,7,2) (n=5, algorytm bdzie mia 4 kroki);
1 krok:
(4,5,3,7,2) zamieniamy warto 4 z wartoci 2 (2,5,3,7,4)
2 krok:
(2,5,3,7,4) zamieniamy warto 5 z wartoci 3 (2,3,5,7,4)
3 krok:
(2,3,5,7,4) zamieniamy warto 5 z wartoci 4 (2,3,4,7,5)
4 krok:
(2,3,4,7,5) zamieniamy warto 7 z wartoci 5 (2,3,4,5,7).
2
Lista nr 4. Tablice. Dorota Aniszewska, Wojciech Myszka
15. Sortowanie przez wstawianie. Napisz funkcj, ktry posortuje tablic liczb losowych ro-
snco wedug podanego algorytmu: wybieramy po kolei elementy (zaczynamy od drugiego),
porwnujemy go z kolejnymi elementami zbioru ju posortowanego (w pierwszym kroku zbir
posortowany zawiera tylko jeden element), pki nie napotkamy elementu rwnego lub elementu
wikszego (jeli chcemy otrzyma cig rosncy) lub nie znajdziemy si na pocztku/kocu zbioru
uporzdkowanego. Wycignity element wstawiamy w miejsce gdzie skoczylimy porwnywa-
nie.
Przykad dziaania dla tablicy (4,10,3,7,1) (5 elementw, wic 4 kroki s potrzebne):
1 krok:
(4,10,3,7,1) warto 10 jest na waciwym miejscu, bo jest wiksza ni 4
2 krok:
(4,10,3,7,1) warto 3 trzeba wstawi w odpowiednie miejsce, porwnujemy t warto z
elementami j poprzedzajcymi, ma by na pierwszym miejscu, wic elementy drugi i trzeci
przesuwamy w prawo i na miejsce pierwsze wstawiamy warto 3 (3,4,10,7,1)
3 krok:
(3,4,10,7,1) warto 7 trzeba wstawi w odpowiednie miejsce, porwnujemy t warto z
elementami j poprzedzajcymi, ma by na trzecim miejscu, wic element czwarty przesuwamy
w prawo i na miejsce trzecie wstawiamy warto 7 (3,4,7,10,1)
4 krok:
(3,4,7,10,1) warto 1 trzeba wstawi w odpowiednie miejsce, porwnujemy t warto z
elementami j poprzedzajcymi, ma by na pierwszym miejscu, wic pozostae elementy prze-
suwamy w prawo i na miejsce pierwsze wstawiamy warto 1 (1,3,4,7,10).
16. Sortowanie szybkie (quicksort): algorytm jest rekurencyjny. W kadym kroku w tablicy wy-
biera si element rozdzielajcy, po czym do lewej przenoszone s wszystkie elementy nie wiksze
od wartoci elementu rozdzielajcego (rwnie element rozdzielajcy, na kocu lewej czci),
w prawej czci tablicy zostaj wszystkie elementy wiksze. Powtrzy naley te czynnoci dla
dwch czci tablicy. Rekurencja koczy si, gdy kolejny fragment uzyskany z podziau zawiera
pojedynczy element, poniewa tablica jednoelementowa nie wymaga sortowania.
Uwaga: najlepszym elementem rozdzielajcym jest mediana, ale prociej wybra rodkowy z
trzech (wybieramy losowo trzy elementy i rozdzielajcym bdzie element, ktrego warto ley
pomidzy wartociami pozostaych dwu), mona te warto elementu rozdzielajcego wyloso-
wa.
17. Napisz funkcj, ktra realizuje wyszukiwanie binarne zadanej wartoci w posortowanej tablicy
liczb cakowitych i jeli si ona w tablicy znajduje, zwraca numer elementu o tej wartoci.
Wyszukiwanie binarne polega na dzieleniu tablicy na coraz mniejsze przedziay do momentu,
gdy szukany element zostanie znaleziony, bd przedzia osignie dugo zero, co oznacza brak
szukanego elementu. W kadym kroku wyznaczany jest rodek przedziau i sprawdzane jest,
czy element zapisany na rodku przedziau jest poszukiwanym elementem (wwczas algorytm
koczy dziaanie), czy jest on niego mniejszy (albo wikszy): wwczas przedzia jest odpowiednio
zawany.
18. Napisz funkcj, ktra oblicza pochodn wielomianu. Stopie wielomianu oraz wspczynniki
mog by wylosowane. Wynik dziaania, czyli pochodn, funkcja powinna zapisa do tablicy.
Wywoaj t funkcj w funkcji main i wywietl wielomian i jego pochodn.
19. Napisz program (funkcj), ktra oblicza iloczyn dwch wielomianw. Stopnie obu wielomia-
nw oraz wspczynniki mog by wylosowane. Iloczyn powinien by zapisany do tablicy o
odpowiedniej wielkoci. Wywoaj t funkcj w funkcji main i wywietl wielomiany i ich iloczyn.
3

Vous aimerez peut-être aussi