Zestaw 3.
Transkrypt
Zestaw 3.
Wstęp do programowania Zestaw 1: Napisać: • procedurę Pobierz pobierającą zawartość niezawężonej tablicy liczb rzeczywistych podanej jako parametr; • procedurę Wypisz wypisująca zawartość niezawężonej tablicy liczb rzeczywistych podanej jako parametr; • funkcję Zlicz, której parametrem jest niezawężona tablica liczb rzeczywistych T. Funkcja ma zwrócić liczbę różnych wartości znajdujących się w tablicy przekazanej w parametrze (przykład: dla tablicy 1,3,2,1,1,1,4,2 funkcja zwraca wartość 4); Napisać program tworzący tablicę liczb rzeczywistych o podanej przez użytkownika długości, pobierający i wypisujący jej zawartość oraz wypisujący liczbę różnych wartości znajdujących się w tablicy. W programie wykorzystać wymienione wyżej procedury i funkcje. Rozszerzyć program o: • funkcję CzyZblizone przyjmującą jako parametry dwie tablice liczb rzeczywistych. Funkcja korzystając z funkcji Zlicz liczy liczbę różnych wartości znajdujących się w każdej z tablic, tworzy dwie tablice o wyliczonych długościach i wypełnia je różnymi wartościami z odpowiednio pierwszej i drugiej tablicy przekazanej do funkcji z zachowaniem oryginalnego porządku. Funkcja zwraca wartość true gdy krótsza z dwóch w ten sposób powstałych tablic jest podtablicą dłuższej (jeżeli są one równej długości muszą być identyczne), w przeciwnym wypadku zwraca false (przykład: dla tablic wejściowych 3,3,2,3,2,4,2,2,2 i 1,3,2,1,1,1,4,2 liczymy liczbę ich różnych wartości i otrzymujemy odpowiednio 3 i 4; tworzymy tablice różnowartościowe z zachowaniem porządku: 3,2,4 i 1,3,2,4; krótsza z tych tablic jest podtablicą dłuższej, więc funkcja zwraca wartość true). Dodaną funkcję wykorzystać w programie, tworząc dodatkową tablicę liczb rzeczywistych o podanej przez użytkownika długości i sprawdzając czy jest on „zbliżona” do tablicy utworzonej wcześniej. Zestaw 2: Napisać funkcję SumaCyfr zwracającą sumę cyfr liczby naturalnej podanej jako parametr. Funkcja działa w następujący sposób: • jeżeli liczba jest różna od 0, to dodajemy to aktualnej sumy jej cyfrę jedności (resztę z dzielenia przez 10), w przeciwnym wypadku wynikiem jest aktualna suma; • pozbywamy się uwzględnionej cyfry jedności zmniejszając liczbę o jeden rząd wielkości (dzieląc ją przez 10) i przechodzimy ponownie do kroku 1. Wykorzystać funkcję w programie pobierającym od użytkownika liczbę naturalną i wypisującym sumę jej cyfr. Rozszerzyć program o następujące elementy: • deklarację niezawężonego typu tablicowego Liczby indeksowanego typem całkowitym i przechowującego liczby naturalne; • funkcję CyfraUrodzenia przyjmującą jako parametry trzy liczby naturalne D, M, R takie, że D<31 i M<12, tj. odpowiednio dzień, miesiąc i rok urodzenia. Funkcja zwraca „cyfrę urodzenia” odpowiadającą danej dacie, tj. sumuje poszczególne cyfry liczb D, M i R korzystając z funkcji SymaCyfr, jeśli uzyskany wynik nie jest liczbą jednocyfrową, to sumuje cyfry tej liczby, jeśli uzyskany wynik nie jest liczbą jednocyfrową, to znów sumuje cyfry tej liczby itd. – aż do uzyskania liczby jednocyfrowej stanowiącą szukaną „cyfrę urodzenia”; • funkcję Uporzadkuj przyjmującą jako parametry trzy tablice typu Liczby tej samej długości zawierające odpowiednio dni, miesiące i lata urodzenia pewnych osób, obliczającą dla każdej daty (rozumianej jako trzy odpowiadające sobie pozycją w tablicach wejściowych wartości) „cyfrę urodzenia” z wykorzystaniem funkcji CyfraUrodzenia. Funkcja zwraca tablicę typu Liczby zawierającą pozycje dat podanych w tablicach wejściowych, w takiej kolejności jaką uzyska się po posortowaniu tych dat niemalejąco wg ich „cyfry urodzenia”. Wykorzystując powyższe konstrukcje rozszerzyć program tak, aby pobierał trzy tablice liczb naturalnych o podanej przez użytkownika długości (dni, miesiące i lata urodzenia osób), a następnie korzystając z funkcji Uporzadkuj wypisywał je w kolejności uporządkowanej niemalejąco wg „cyfry urodzenia”.