Egzamin ze "Wstępu do Informatyki" 2005 / 2006r
Grupa A
Imię i nazwisko:
.................................................................
Ocena z ćwiczeń
...........................
1A
1) (1 pkt) Podać
8
-bitową reprezentację
uzupełnieniową liczby
–90
.
........................................................................................
2) (1pkt) Podać reprezentację dwójkową ułamka
dziesiętnego
0,625
.
........................................................................................
3) (3 pkt) Dokończyć ciąg instrukcji, który dla
wczytywanej liczby całkowitej dodatniej
x
tworzy liczbę
y
według następującej reguły:
y
jest liczbą
x
czytaną od tyłu, przy czym każda z
cyfr
1
,
2
,...,
9
jest pomniejszona o
1
, cyfrę
0
zastępujemy cyfrą
9
. Np. dla
x=230456
,
y=543921
.
int x,y;
do
{
cout<<"Podaj liczb
ę
całkowit
ą
"
<<"dodatni
ą
";
cin>>x;
}while(
…………………………………
);
4) (2 pkt) Napisać ciąg instrukcji równoważny
poniższemu, zastępując pętlę
do while
pętlą
while
.
do
{
cin>>x;
if (x>=10)
cout<<"co najmniej"
<<"dwucyfrowa";
else if(x>=0)
cout<<"jednocyfrowa";
}while (x>=0);
cout<<”|”<<x<<”|=”<<-x;
5) (2 pkt) Dla danej liczby
h
wyświetlić na ekranie
używając zagnieżdżonej pętli
for
następujący
ciąg liczb, poprzedzony odpowiednią ilością
gwiazdek, np. dla
h=5
ciąg gwiazdek i liczb
wygląda następująco:
5
*4
**3
***2
****1
2A
6) (2 pkt) W programie zadeklarowana jest
całkowita zmienna
n
:
int n;
i nadana jest jej już jakaś dodatnia, parzysta
wartość z zakresu od
2
do
20
.
Ponadto dane są dwie tablice:
double a[20],b[10];
z których pierwsza, w kolejnych wyrazach
zaczynając od początku, zawiera już
n
liczb.
Napisać fragment programu, który oblicza
ś
rednie arytmetyczne kolejnych par liczb
z tablicy
a
i wpisuje je do kolejnych wyrazów
tablicy
b
.
7) (4 pkt) W programie jest zadeklarowana
zmienna całkowitoliczbowa
n
. Jest już do niej
wpisana pewna wartość z zakresu od
1
do
25
.
Zadeklarowana jest także tablica
tab
dwudziestu pięciu liczb całkowitych. Jej n
pierwszych kolejnych wyrazów zaczynając od
początku wypełnione jest liczbami.
Napisać fragment programu, który odrzuca
spośród tych
n
liczb wszystkie większe lub
równe
6
, przesuwa pozostałe do początku
tablicy nie zmieniając ich kolejności, i wpisuje
do zmiennej
n
ile liczb pozostało.
8) (3 pkt) Napisać funkcję
int sumdziel(int n)
,
która zwraca sumę liczb naturalnych będących
dzielnikami liczby całkowitej podanej jako
argument. Należy uwzględnić
1
i
n
jako dzielniki
liczby
n
.
9) (2 pkt) Napisać ciąg instrukcji, który:
a) pobiera od użytkownika liczbę całkowitą do
zmiennej
x
;
b) jeśli pobrana liczba jest mniejsza lub równa
0
,
próbuje ją pobrać ponownie;
c) w przypadku trzech nieudanych prób przerywa
dalsze pobieranie liczb i ustawia wartość
zmiennej
x
na
1
.
W zadaniu należy wykorzystać pętlę
do while
i
instrukcję warunkową
if
, zaś można pominąć
instrukcje wypisujące komunikaty dla
użytkownika wprowadzającego liczby.
3A
10) (2 pkt) Napisać funkcję, która oblicza i zwraca
wartość funkcji
f(x)
dla liczby rzeczywistej
x
podanej jako parametr, według wzoru:
>
≤
<
+
−
≤
+
−
=
2
dla
,
2
2
2
-
dla
,
1
2
1
2
dla
,
4
)
(
2
x
x
x
x
x
x
f
11) (2 pkt) Napisać instrukcję selekcji
if
, która dla
okręgu S o środku w punkcie o współrzędnych
s1
,
s2
i promieniu
r
oraz dla danego punktu P
o współrzędnych
x
,
y
wyświetli jedną
z poniższych informacji:
a) "Punkt P jest środkiem okręgu S"
b) "Punkt P leży na okręgu S"
c) "Punkt P leży wewnątrz okręgu S i nie jest
jego środkiem"
d) "Punkt P leży na zewnątrz okręgu S."
12) (4 pkt) Napisać funkcję o nagłówku
float Horner(float x, int n, int a[]);
która oblicza przy pomocy schematu Hornera
wartość sumy
∑
=
−
n
k
k
k
k
x
a
0
2
)
1
(
.
13) (3 pkt) Dana jest reprezentacja binarna liczby
zapisana w tablicy
b
:
b[n-1]b[n-2]...b[0]
.
Napisać ciąg instrukcji obliczający reprezentację
szesnastkową tej liczby i zapisujący ją w wektorze
h
o wyrazach całkowitych, np. jeżeli
b[0]=1
,
b[1]=0
,
b[2]=0
,
b[3]=1
,
b[4]=1
,
b[5]=1
,
b[6]=0
,
b[7]=1
, to
h[0]=9
,
h[1]=11.
Założyć, że n jest liczbą podzielną przez
4
.
4A
14) (3 pkt) Napisać funkcję
ReprHex
, która dla
zadanej liczby całkowitej podanej w
pierwszym parametrze umieści w tablicy
podanej jako drugi parametr jej reprezentację
szesnastkową, przy czym
tab[0]
jest najmniej
znaczącą cyfrą. Funkcja ma wykorzystywać
instrukcję
switch
postaci:
switch(x%16)
{
case 15: tab[i]=’F’;
…
case 9: tab[i]=’9’;
…
}
Wartością funkcji ma być liczba cyfr
heksadecymalnych liczby
x
.
int ReprHex(int x,char tab[])
{
15) (3 pkt) Dokończyć funkcję
DataPoprawna
, która
zwraca wartość
true
dla poprawnej daty z XX i
XXI wieku, zaś wartość
false
w przeciwnym
przypadku.
bool DataPoprawna(int d, int m, int r)
{
if(d<1
…………………………………………………………)
return false;
switch(