Egzamin z Podstaw Algorytmiki i Programowania 2010/2011
1
2
3
4
5
6
7
8
9
10
11
12
13
Razem
Imię i Nazwisko .............................................. Kierunek ..............................
1. (2 pkt.) Napisz definicję funkcji rekurencyjnej 3. (3 pkt.) Mając następujące typy: float Hermite(int n,float x);
struct TPomieszczenie
{
obliczającej wartość, w punkcie x ∈ R, wielo-float dlugosc;
mianu Hermite’a Hn (x) stopnia n określonego float szerokosc;
wzorem rekurencyjnym
};
H0 (x) = 1, H1 (x) = x,
oraz
n − 1
Hn (x) = xHn−1 (x) −
Hn−2 (x) ,
struct TMieszkanie
2
n = 2, 3, . . . .
{
string adres;
int liczba_pomieszczen;
TPomieszczenie pom[10];
};
napisz definicję funkcji
void Metraz(TMieszkanie m);
która wyświetla adres mieszkania i jego po-wierzchnię.
2. (2 pkt.) Zdefiniuj rekurencyjną funkcję o na-główku
bool CyfryPodzielnePrzez3(int d);
która zwraca wartość true, jeśli każda cyfra liczby nieujemnej całkowitej d dzieli się przez 3 oraz false, w przeciwnym wypadku.
1
4. (3 pkt.) Mając dany typ 6. (2 pkt.) Podaj definicję funkcji o nagłówku struct TStudent
int Max(int x, int &ile);
{
string imie;
która zwraca maksymalną cyfrę występującą string nazwisko;
w zapisie dziesiętnym liczby x, zaś w parame-int oceny[5];
trze ile przekazuje liczbę wystąpień tej cy-
};
fry. Na przykład, jeżeli x=-7076 to wynikiem napisz funkcję
funkcji ma być 7, zaś wartością parametru ile void ZaliczonaSesja(int n,TStudent s[]); 2.
która wyświetla listę studentów, którzy zali-czyli wszystkie 5 egzaminów.
5. (2 pkt.) Podaj definicję funkcji o nagłówku 7. (3 pkt.)
Napisz definicję funkcji, która dla
tablicy t zawierającej n liczb rzeczywistych void NazwyPlikow(string naz[],int ile); która dla zadanej tablicy nazw plików wraz
- obliczy średnią arytmetyczną,
z rozszerzeniami wyświetli nazwy plików bez
- poprzestawia elementy tablicy t tak, rozszerzeń oraz w nawiasach liczbę znaków żeby elementy mniejsze lub równe od
nazwy.
średniej poprzedzały elementy od niej Przykład: Jeżeli
większe (wsk. Quicksort),
naz = ["dane.txt", "art.tex",
- zwróci liczbę elementów mniejszych lub
"zdjecie.jpg", "strona.html"]; równych od średniej.
ile = 4;
to należy wyświetlić:
dane (4)
art (3)
zdjecie (7)
strona (6)
2
8. (2 pkt.) Napisz deklarację klasy TBilet o po-9. (4 pkt.) Zdefiniuj metody klasy TBilet.
lach prywatnych:
string skad;
//stacja poczatkowa,
string dokad; //stacja koncowa
float km;
//odleglosc wyrazona
//w kilometrach
double cenaJ; //cena przejazdu
//za jeden kilometr
int znizka;
//obnizka ceny biletu
//w procentach
oraz publicznych metodach:
- konstruktor bezparametrowy inicjujący pola skad i dokad pustymi łańcuchami oraz zerujący pozostałe pola,
- funkcja ustaw ustawiająca pola na pod-stawie swoich parametrów,
- funkcja oblicz zwracająca cenę biletu z uwzględnieniem przysługującej zniżki,
- funkcja drukuj wyświetlająca na ekranie stację początkową i końcową, zniżkę oraz cenę biletu.
10. (2 pkt.)
Zadeklaruj obiekty b1 i b2 typu
TBilet dla matki z dzieckiem w wieku szkolnym jadącej z Lublina do Warszawy.
Wy-
świetl na ekranie bilet osoby dorosłej i bilet dziecka oraz łączny koszt biletów.
Odległość między Lublinem i Warszawą wynosi 175 km, opłata za przejazd jednego kilometra jest równa 0.2 zł, zaś zniżka przysługująca dziecku w wieku szkolnym wynosi 33%.
3
11. (2 pkt.) Podaj definicję funkcji o nagłówku 12. (2 pkt.) W pliku tekstowym "srednie.txt"
zapisane są w kolejnych liniach dane studen-void LosujElem(int tab[], int n,
tów: numer indeksu, nazwisko, imię i średnia.
int a, int b);
która wypełni n pierwszych elementów tablicy 12233
Jan
Kowalski
3.5
tab losowo wybranymi liczbami całkowitymi 14263
Weronika
Nowak
3.85
z przedziału [a, b].
13267
Monika
Kwiatek
4.05
Uwaga. W rozwiązaniu należy użyć funkcji 12325
Marek
Malik
4.33
int losuj(int limit);
Napisz ciąg instrukcji wyświetlający ponume-która zwraca losowo wybraną liczbę z prze-rowaną listę osób, które mają średnią większą działu [0, limit].
lub równą 4.0.
13. (3 pkt.) Napisz definicję funkcji o nagłówku bool K(string zrodlo,string kopia);
która kopiuje zawartość pliku o nazwie przekazanej przez parametr zrodlo do pliku o nazwie przekazanej przez parametr kopia.
Podczas kopiowania zastąp wszystkie wielo-krotne spacje pojedynczą spacją.
Funkcja
ma zwracać true, gdy powiodły się wszystkie operacje plikowe lub false, w przeciwnym przypadku.
4