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.