ZADANIE 1

Transkrypt

ZADANIE 1
©2002 gajdaw
http://www.gajdaw.pl
IMPLEMENTACJA UNIWERSALNEJ PROCEDURY SORTUJĄCEJ
WYMIANA WARTOŚCI ZMIENNYCH
ZADANIE 13.1.1.a
Napisz funkcję WymianaInt. Parametrami funkcji mają być dwa wskaźniki do zmiennych typu int.
Zadaniem funkcji jest wymiana wartości zmiennych.
UWAGA: program ma fizycznie przesunąć z jednego miejsca pamięci w drugie wartości zmiennych!
Napisz program, który stosując funkcję WymianaInt wymienia wartościami dwie zmienne automatyczne
oraz dwie zmienne dynamiczne. Wartości wszystkich zmiennych wczytaj z klawiatury. Po dokonaniu wymiany
wydrukuj wartości zmiennych na ekranie.
ZADANIE 13.1.1.b
Napisz funkcję WymianaWskInt. Parametrami funkcji mają być dwa wskaźniki do wskaźników do
zmiennych typu int. Zadaniem funkcji jest wymiana wartości zmiennych.
UWAGA: funkcja ma wymienić wskaźniki do zmiennych a nie wartości zmiennych!
Napisz program, który stosując funkcję WymianaWskInt wymienia wartościami dwie zmienne dynamiczne.
Wartości wszystkich zmiennych wczytaj z klawiatury. Po dokonaniu wymiany wydrukuj wartości zmiennych na
ekranie. Czy funkcja WymianaWskInt może zostać użyta do wymiany wartości zmiennych statycznych?
UWAGI:
Funkcja WymianaInt z zadania 13.1.1.a jest identyczna z napisaną w zeszłym semestrze funkcją
void zmien(int &p1, int &p2){
int ptmp;
}
ptmp = p1;
p1
= p2;
p2
= ptmp;
Funkcje te różnią się jedynie nagłówkiem. W przypadku, gdy parametry p1 oraz p2 są dużymi strukturami
wówczas kopiowanie całych struktur może być czasochłonne. Wtedy funkcja te jest nieefektywna (niewydajna).
Funkcja WymianaWskInt z zadania 13.1.1.b wymienia jedynie wskaźniki do danych. Zatem wymiana
danych (bez względu na ich wielkość) zawsze będzie równie wydajna. Niestety funkcji nie można użyć do
zmiennych automatycznych. Co więcej, ponieważ wskaźniki są faktycznie zmiennymi typu unsigned long,
zatem zamiast tej funkcji możemy stosować powyższą funkcję zmien (stosując odpowiednio operator
rzutowania). Ponadto funkcja zmien może być użyta do wymiany wskaźników do dowolnego typu!
Ewentualna pułapka polega na tym, że nie w każdym kompilatorze C++ wskaźnik musi być zgodny z typem
unsigned long.
ZADANIE 13.1.2.a
Napisz funkcję WymianaTData. Parametrami funkcji mają być dwa wskaźniki do zmiennych typu TData.
Zadaniem funkcji jest wymiana wartości zmiennych.
Napisz program, który stosując funkcję WymianaTData wymienia wartościami dwie zmienne statyczne oraz
dwie zmienne automatyczne. Wszystkie dane wczytaj z klawiatury. Po dokonaniu wymiany wydrukuj wartości
zmiennych na ekranie.
ZADANIE 13.1.2.b
Napisz funkcję WymianaWskTData. Parametrami funkcji mają być dwa wskaźniki do wskażników do
zmiennych typu TData. Zadaniem funkcji jest wymiana wartości zmiennych.
Napisz program, który stosując funkcję WymianaWskTData wymienia wartościami dwie zmienne
dynamiczne. Wszystkie dane wczytaj z klawiatury. Po dokonaniu wymiany wydrukuj wartości zmiennych na
ekranie.
W programie użyj również funkcji zmien oraz operatora rzutowania do wymiany zmiennych.
-
1
-
©2002 gajdaw
http://www.gajdaw.pl
ZADANIE 13.1.3.a
Napisz funkcję WymianaTStudent. Parametrami funkcji mają być dwa wskaźniki do zmiennych typu
TStudent. Zadaniem funkcji jest wymiana wartości zmiennych.
Napisz program, który stosując funkcję WymianaTStudent wymienia wartościami dwie zmienne
automatyczne oraz dwie zmienne dynamiczne. Wszystkie dane wczytaj z klawiatury. Po dokonaniu wymiany
wydrukuj wartości zmiennych na ekranie.
ZADANIE 13.1.3.b
Napisz funkcję WymianaWskTStudent. Parametrami funkcji mają być dwa wskaźniki do wskaźników do
zmiennych typu TStudent. Zadaniem funkcji jest wymiana wartości zmiennych.
Napisz program, który stosując funkcję WymianaWskTStudent wymienia wartościami dwie zmienne
dynamiczne. Wszystkie dane wczytaj z klawiatury. Po dokonaniu wymiany wydrukuj wartości zmiennych na
ekranie.
W programie użyj również funkcji zmien oraz operatora rzutowania do wymiany zmiennych.
ZADANIE 13.1.4.a
Napisz funkcję WymianaTSamochod. Parametrami funkcji mają być dwa wskaźniki do zmiennych typu
TSamochod. Zadaniem funkcji jest wymiana wartości zmiennych.
Napisz program, który stosując funkcję WymianaTSamochod wymienia wartościami dwie zmienne
automatyczne oraz dwie zmienne dynamiczne. Wszystkie dane wczytaj z klawiatury. Po dokonaniu wymiany
wydrukuj wartości zmiennych na ekranie.
ZADANIE 13.1.4.b
Napisz funkcję WymianaWskTSamochod. Parametrami funkcji mają być dwa wskaźniki do wskaźników do
zmiennych typu TSamochod. Zadaniem funkcji jest wymiana wartości zmiennych.
Napisz program, który stosując funkcję WymianaWskTSamochod wymienia wartościami dwie zmienne
dynamiczne. Wszystkie dane wczytaj z klawiatury. Po dokonaniu wymiany wydrukuj wartości zmiennych na
ekranie.
W programie użyj również funkcji zmien oraz operatora rzutowania do wymiany zmiennych.
-
2
-
©2002 gajdaw
http://www.gajdaw.pl
FUNKCJE PORÓWNUJĄCE ZMIENNE PRZEKAZYWANE PRZEZ WSKAŹNIK
ZADANIE 13.2.1
Napisz funkcję PorownajInt porównującą wartości dwóch liczb całkowitych. Parametrami funkcji mają być
dwa wskaźniki do zmiennych typu int, zaś jej wartością liczba całkowita. Wynik funkcji ma być liczbą mniejszą
od zera jeśli pierwsza z liczb jest mniejsza od drugiej, równy zero jeśli liczby są sobie równe lub większa od zera
w przypadku, gdy pierwsza liczba jest większa od drugiej.
Napisz program, który wykorzystując funkcję PorownajInt dokona porównania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania obydwu porównań wydrukuj na ekranie.
ZADANIE 13.2.2
Napisz funkcję PorownajTData porównującą wartości dwóch zmiennych typu TData. Parametrami funkcji
mają być dwa wskaźniki do zmiennych typu TData, zaś jej wartością liczba całkowita. Wynik funkcji ma być
liczbą mniejszą od zera jeśli pierwsza z dat jest wcześniejsza mniejsza od drugiej, równy zero jeśli daty są sobie
równe lub większa od zera w przypadku, gdy pierwsza data jest późniejsza od drugiej.
Napisz program, który wykorzystując funkcję PorownajTData dokona porównania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania obydwu porównań wydrukuj na ekranie.
ZADANIE 13.2.3.a
Napisz funkcję PorownajTStudent porównującą wartości dwóch zmiennych typu TStudent. Parametrami
funkcji mają być dwa wskaźniki do zmiennych typu TStudent, zaś jej wartością liczba całkowita. Wynik funkcji
ma nas informować o kolejności umieszczenia studentów na liście. Przyjmujemy, że porządek nazwisk na liście
jest leksykograficzny. W przypadku identycznych nazwisk bierzemy pod uwagę imiona.
Wynik funkcji ma być liczbą mniejszą od zera, jeśli pierwszy ze studentów powinien się znaleźć na liście
alfabetycznej przed drugim, równy zero, jeśli imiona i nazwiska studentów są sobie równe lub większa od zera w
przypadku, gdy pierwszy ze studentów powinien być umieszczony na liście po drugim studencie.
Napisz program, który wykorzystując funkcję PorownajTStudent dokona porównania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania obydwu porównań wydrukuj na ekranie.
ZADANIE 13.2.3.b
Napisz funkcję PorownajTStudent2 porównującą wartości dwóch zmiennych typu TStudent. Parametrami
funkcji mają być dwa wskaźniki do zmiennych typu TStudent, zaś jej wartością liczba całkowita. Wynik funkcji
ma nas informować o wieku studentów.
Wynik funkcji ma być liczbą mniejszą od zera, jeśli pierwszy ze studentów jest młodszy od drugiego, równy
zero, jeśli studenci urodzili się tego samego dnia lub większa od zera w przypadku, gdy pierwszy ze studentów
jest starszy od drugiego.
Napisz program, który wykorzystując funkcję PorownajTStudent2 dokona porównania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania obydwu porównań wydrukuj na ekranie.
ZADANIE 13.2.4.a
Napisz funkcję PorownajTSamochod porównującą wartości dwóch zmiennych typu TSamochod.
Parametrami funkcji mają być dwa wskaźniki do zmiennych typu TSamochod, zaś jej wartością liczba
całkowita. Wynik funkcji ma nas informować o porządku leksykograficznym marek samochodów.
Wynik funkcji ma być liczbą mniejszą od zera, jeśli marka pierwszego samochodu jest leksykograficznie
mniejsza od marki drugiego samochodu. Jeśli marki są identyczne to funkcja powinna zwracać zero. Jeśli
pierwsza marka jest leksykograficznie większa od drugiej, wówczas funkcja powinna zwracać wartość większą
od zera.
Napisz program, który wykorzystując funkcję PorownajTSamochod dokona porównania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania obydwu porównań wydrukuj na ekranie.
ZADANIE 13.2.4.b
Napisz funkcję PorownajTSamochod2 porównującą wartości dwóch zmiennych typu TSamochod.
Parametrami funkcji mają być dwa wskaźniki do zmiennych typu TSamochod, zaś jej wartością liczba
całkowita. Wynik funkcji ma nas informować o wieku aut.
-
3
-
©2002 gajdaw
http://www.gajdaw.pl
Wynik funkcji ma być liczbą mniejszą od zera, jeśli pierwszy z samochodów jest młodszy od drugiego,
równy zero, jeśli samochody są z tego samego rocznika lub większa od zera w przypadku, gdy pierwszy z
samochodów jest starszy.
Napisz program, który wykorzystując funkcję PorownajTSamochod dokona porównania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania obydwu porównań wydrukuj na ekranie.
-
4
-
©2002 gajdaw
http://www.gajdaw.pl
SORTOWANIE DWÓCH ZMIENNYCH
ZADANIE 13.3.1
Napisz funkcję Sort2Int porządkującą rosnąco dwie zadane liczby typu int. Parametrami funkcji mają być
dwa wskaźniki do zmiennych typu int. Funkcja ma za zadanie umieścić w pierwszym parametrze mniejszą z
dwóch wartości, zaś w drugim – większą.
Napisz program, który wykorzystując funkcję Sort2Int dokona sortowania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania (w obydwu przypadkach!) wydrukuj na ekranie.
Wykorzystaj funkcje WymianaInt (zadanie 13.1.1) oraz PorownajInt (zadanie 13.2.1).
ZADANIE 13.3.2
Napisz funkcję Sort2TData porządkującą rosnąco dwie zadane daty. Parametrami funkcji mają być dwa
wskaźniki do zmiennych typu TData. Funkcja ma za zadanie umieścić w pierwszym parametrze mniejszą z
dwóch wartości, zaś w drugim – większą.
Napisz program, który wykorzystując funkcję Sort2TData dokona sortowania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania (w obydwu przypadkach!) wydrukuj na ekranie.
Wykorzystaj funkcje WymianaTData (zadanie 13.1.2) oraz PorownajTData (zadanie 13.2.2).
ZADANIE 13.3.3.a
Napisz funkcję Sort2TStudent porządkującą rosnąco (tj. alfabetycznie wg nazwisk oraz imion) dwie
zmienne zawierające informacje o studentach. Parametrami funkcji mają być dwa wskaźniki do zmiennych typu
TStudent. Funkcja ma za zadanie umieścić w pierwszym parametrze mniejszą z dwóch wartości, zaś w drugim –
większą.
Napisz program, który wykorzystując funkcję Sort2TStudent dokona sortowania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania (w obydwu przypadkach!) wydrukuj na ekranie.
Wykorzystaj funkcje WymianaTStudent (zadanie 13.1.3) oraz PorownajTStudent (zadanie 13.2.3.a).
ZADANIE 13.3.3.b
Napisz funkcję Sort2TStudent2 porządkującą rosnąco (pod względem wieku) dwie zmienne zawierające
informacje o studentach. Parametrami funkcji mają być dwa wskaźniki do zmiennych typu TStudent. Funkcja
ma za zadanie umieścić w pierwszym parametrze mniejszą z dwóch wartości, zaś w drugim – większą.
Napisz program, który wykorzystując funkcję Sort2TStudent2 dokona sortowania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania (w obydwu przypadkach!) wydrukuj na ekranie.
Wykorzystaj funkcje WymianaTStudent (zadanie 13.1.3) oraz PorownajTStudent2 (zadanie 13.2.3.b).
ZADANIE 13.3.4.a
Napisz funkcję Sort2TSamochod porządkującą rosnąco (tj. alfabetycznie pod wg nmarki) dwie zmienne
zawierające informacje o samochodach. Parametrami funkcji mają być dwa wskaźniki do zmiennych typu
TSamochod. Funkcja ma za zadanie umieścić w pierwszym parametrze mniejszą z dwóch wartości, zaś w
drugim – większą.
Napisz program, który wykorzystując funkcję Sort2TSamochod dokona sortowania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania (w obydwu przypadkach!) wydrukuj na ekranie.
Wykorzystaj funkcje WymianaTSamochod (zadanie 13.1.4) oraz PorownajTSamochod (zadanie 13.2.4.a).
ZADANIE 13.3.4.b
Napisz funkcję Sort2TSamochod2 porządkującą rosnąco pod względem wieku dwie zmienne zawierające
informacje o samochodach. Parametrami funkcji mają być dwa wskaźniki do zmiennych typu TSamochod.
Funkcja ma za zadanie umieścić w pierwszym parametrze mniejszą z dwóch wartości, zaś w drugim – większą.
Napisz program, który wykorzystując funkcję Sort2TSamochod2 dokona sortowania dwóch zmiennych
automatycznych oraz dwóch zmiennych dynamicznych. Potrzebne informacje wczytaj z klawiatury, zaś wynik
działania (w obydwu przypadkach!) wydrukuj na ekranie.
Wykorzystaj funkcje WymianaTSamochod (zadanie 13.1.4) oraz PorownajTSamochod2 (zadanie 13.2.4.b).
-
5
-
©2002 gajdaw
http://www.gajdaw.pl
SORTOWANIE TABLICY WSKAŹNIKÓW
ZADANIE 13.4.1
Napisz funkcję SortTabWsk porządkującą rosnąco tablicę wskaźników. Parametrami funkcji mają być:
• tablica do posortowania,
• liczba elementów tablicy
• wskaźnik do procedury porównującej dwa elementy tablicy
ZADANIE 13.4.2
Napisz program, który wykorzystując funkcję SortTabWsk posortuje tablicę wskaźników liczb całkowitych.
Potrzebne dane wczytaj z klawiatury, zaś wynik działania wydrukuj na ekranie.
ZADANIE 13.4.3
Napisz program, który wykorzystując funkcję SortTabWsk posortuje tablicę wskaźników do zmiennych
typu TData. Potrzebne dane wczytaj z klawiatury, zaś wynik działania wydrukuj na ekranie.
ZADANIE 13.4.4
Napisz program, który wykorzystując funkcję SortTabWsk posortuje tablicę wskaźników do zmiennych
typu TStudent. Potrzebne dane wczytaj z klawiatury, zaś wynik działania wydrukuj na ekranie.
ZADANIE 13.4.5
Napisz program, który wykorzystując funkcję SortTabWsk posortuje tablicę wskaźników do zmiennych
typu TSamochod. Potrzebne dane wczytaj z klawiatury, zaś wynik działania wydrukuj na ekranie.
-
6
-
©2002 gajdaw
http://www.gajdaw.pl
SORTOWANIE TABLICY STRUKTUR
ZADANIE 13.4.1
Napisz funkcję SortTab porządkującą rosnąco tablicę elementów. Parametrami funkcji mają być:
• tablica do posortowania,
• liczba elementów tablicy
• rozmiar elementu tablicy
• wskaźnik do procedury porównującej dwa elementy tablicy
ZADANIE 13.4.2
Napisz program, który wykorzystując funkcję SortTab posortuje tablicę liczb całkowitych. Potrzebne dane
wczytaj z klawiatury, zaś wynik działania wydrukuj na ekranie.
ZADANIE 13.4.3
Napisz program, który wykorzystując funkcję SortTab posortuje tablicę zmiennych typu TData. Potrzebne
dane wczytaj z klawiatury, zaś wynik działania wydrukuj na ekranie.
ZADANIE 13.4.4
Napisz program, który wykorzystując funkcję SortTab posortuje tablicę zmiennych typu TStudent.
Potrzebne dane wczytaj z klawiatury, zaś wynik działania wydrukuj na ekranie.
ZADANIE 13.4.5
Napisz program, który wykorzystując funkcję SortTab posortuje tablicę zmiennych typu TSamochod.
Potrzebne dane wczytaj z klawiatury, zaś wynik działania wydrukuj na ekranie.
-
7
-