Egzamin z "Podstaw Informatyki i Programowania" 2006/2007
1
2
3
4
5
6
7
8
9
10
11
12
13
suma
imię i nazwisko: .............................................
kierunek:..................................
1. Zdefiniuj rekurencyjną funkcję o nagłówku
3. Podaj definicję funkcji o nagłówku
bool Podzielna(int n, int k);
double Min(double t[], int n);
która zwraca wartość prawda, jeśli liczba n ma
zwracającą najmniejszą liczbę występującą w
przynajmniej jeden dzielnik w, k≤w<n i fałsz n elementowej tablicy liczb rzeczywistych t.
w przeciwnym wypadku.
4. Zdefiniuj strukturę TPomiary przechowującą
informacje o wysokości temperatury w ciągu
doby
(wartość
rzeczywista,
pomiary
wykonywane co godzinę). Struktura powinna
przechowywać
następujące
dane:
dzień,
2. Podaj definicję funkcji o nagłówku
miesiąc, rok (liczby całkowite) oraz tablica 24
int Pierwsze(int tab[], int n,
pomiarów.
int& nr);
której wartością jest ilość liczb pierwszych
w n elementowej tablicy tab. W parametrze
nr zwracamy indeks pierwszego elementu
tablicy będącego liczbą pierwszą lub wartość
–1, jeśli w tablicy nie ma liczb pierwszych.
Wykorzystaj funkcję Podzielna z zadania 1.
5. Korzystając
ze
struktury
zdefiniowanej
w zadaniu 4 oraz z funkcji Min z zadania 3,
napisz funkcję o nagłówku
void Nizsza(TPomiary& p1,
TPomiary& p2);
wyświetlającą ten dzień, w którym wystąpiła
niższa temperatura. Jeśli najniższe temperatury
są takie same, to należy wyświetlić obydwie
daty.
6. Napisz deklarację klasy TMieszkanie 7. Podaj definicję konstruktora ustawiającego
z polami prywatnymi:
pola klasy zgodnie ze swoimi parametrami
-
adres – napis określający adres
oraz
metod:
Wyswietl,
Wartosc,
mieszkania;
z klasy TMieszkanie, zdefiniowanej w
-
cena – liczba rzeczywista określająca
poprzednim zadaniu.
cenę podstawową metra kwadratowego;
-
pietro – liczba całkowita określająca
piętro, wartość 0 oznacza parter;
-
mtr – liczba rzeczywista określająca
powierzchnię mieszkania.
Klasa powinna posiadać następujące funkcje
publiczne:
-
konstruktor bezparametrowy, ustawiający
pole adres na napis pusty, pozostałe pola
na wartość 0;
-
konstruktor ustawiający pola na podstawie
swoich parametrów;
-
Wyswietl – wyświetla informacje o
mieszkaniu – jego adres, powierzchnię i
numer piętra;
-
Wartosc – o wyniku rzeczywistym,
oblicza wartość mieszkania mnożąc
powierzchnię mieszkania przez cenę
jednego metra kwadratowego. Cena metra
kwadratowego na piętrach 0, 1, 2, 3 jest
iloczynem odpowiedniego współczynnika
oraz ceny metra kwadratowego na
piętrach wyższych, zob. poniższą tabelę.
Piętro
Cena
0
0.85*cena
8. Zdefiniuj dwa obiekty klasy
1
1.2*cena
TMieszkanie.
Pierwsze mieszkanie położone jest w Lublinie
2,3
1.1*cena
na ul. Ametystowej 12/23, na drugim piętrze,
ma powierzchnię 72 mkw, cena podstawowa
metra kwadratowego w tym bloku wynosi
4200 pln.
Parametry drugiego mieszkania podawane są
przez użytkownika.
Wyświetl informacje o mieszkaniu o większej
wartości.
11. Dane są typy rekordowe:
struct TPrzesylka{
string skad, dokad;
float waga;
bool priorytet; //wartość prawda dla
//przesyłki priorytetowej
};
struct TListaPrzesylek{
int ile_p; //ilość przesyłek,
//ile_p<=100
TPrzesylka tab_p[100]; //tablica
//zawiera dane o wszystkich przesylkach
};
Napisz funkcję o nagłówku
int
zapiszP(TListaPrzesylek& L,
string npl);
która zapisze do pliku o nazwie przekazanej w
9. Zdefiniuj rekurencyjną funkcję o nagłówku
parametrze
bool JednaCyfra(int n, int p);
npl
pełną
informacje
o
która zwraca wartość prawda, jeśli zapis liczby
przesyłkach priorytetowych ze struktury L.
n w systemie o podstawie p składa się jedynie
Wartością funkcji jest ilość zapisanych
z wystąpień jednej cyfry i fałsz w przeciwnym
przesyłek. Jeśli w strukturze brak jest
wypadku.
przesyłek
priorytetowych,
to
w
pliku
zapisujemy komunikat "Brak przesylek
priorytetowych". Jeśli nie uda się otwarcie
pliku o zadanej nazwie, wartością funkcji ma
być –1.
10. Rozważmy następujący fragment programu:
void funkcja(int & x, int y);
int main(){
int a=32;
int b=24;
funkcja(a,b);
cout<<a<<'\t'<<b;
return 0;
}
void funkcja(int& x, int y){
cout<<x<<'\t'<<y<<endl;
if(y>0)
funkcja (y,x%y);
}
Co zostanie wyświetlone na ekranie jako
wynik programu?
12. Napisz funkcję, która wczyta z klawiatury dane
dotyczące
przesyłki.
Wczytane
informacje mają być zwrócone w jedynym
parametrze funkcji. Wykorzystaj strukturę
TPrzesylka z zadania 8.
13. Dana jest funkcja o nagłówku
char PrzesunZ(char zn, int k);
której wartością jest znak powstały po
przesunięciu znaku zn o wartość k (mod 255).
Napisz funkcję o nagłówku
int Szyfruj(string nazwa_WE,
string nazwa_WY);
Funkcja ta ma zaszyfrować zawartość pliku o
nazwie nazwa_WE szyfrem Cezara, a wynik
umieścić w pliku o nazwie nazwa_WY. Szyfr
Cezara jest to szyfr o przesunięciu 3.
Uwaga:
struktura
pliku
ma
zostać
niezmieniona – nie szyfrujemy znaków spacji
(' '), tabulacji ('\t'), znaków końca linii
('\n').
Wartością
funkcji
jest
ilość
zaszyfrowanych znaków, lub –1 jeśli nie udały
się operacje otwarcia plików.