podstawy informatyki zadania dodatkowe z rozwiazaniami


1. Napisac funckcje odwracajaca liste (ja tego nie pisalem i nie jestem pewien ze to dobrze jest)

list_revers(list &stara)

{

list *nowa;

for(link *current=stara; current != 0; current=current -> next)

nowa.add(current -> value);

return nowa;

}

2.Co wydrukuje kompilator

int a=5 , b=6;

int *z , *u;

z= &a ; u= &b; z=u;

cout<<z<<" "<<u;

cout<<*z<<" "<<*u;

odp. adres adres 6 6

3. dlaczego program jest zly gdy umiescimy w funkcji (x,2)

double power(int x, int n)

{

if(n==0) return 1;

if(n%2) return x*power(x*x , n/2)

return power (x*x , n\2)

}

dla power (x,2) bedzie wywolywac sie w nieskonczenosc

prawidlowa funkcja

double power(int x, int n)

{

if(n==0) return 1;

if(n%2==0) return power(x*x , n/2)

else return x*power (x*x , n\2)

}

4. Ile gwiazdek sie wydrukuje.

a. for(int i=0; i<5; i++)

for(int j=5; j>0; j--)

cout<<"*";

25 gwiazdek

b. for(int i=0; i<5; i++)

for(int j=0; j < i; j++)

cout<<"*";

10 gwiazdek

c. for(int i=12; i>0; i=i/2)

cout<<"*";

4 gwiazdki

d. for(int i=0; i<10; i++)

for(int j=0; j*j<10; j++)

cout<<"*";

40 gwiazdek

e. for(int i=21; i>0; i=i>>1)

for(int j=0; j<4; j++)

cout<<"*";

20 gwiazdek ( i=i>>1 oznacza ze i dzielimy przez 2 , i=i<<1 oznacza ze i mnozymy przez 2)

f. for(i=1,z=0; i<15; i++)

for(j=5; j>0; j--) z++;

z= 70

g. for(i=5; z=5; i ; i/2)

z<<=0;

z=5

h. for ( i=0, z=50; i<4; i++)

for ( j=0 ; j<i; j++) --z;

z= 44

i. z=0; i= 16;

while( i )

{

z+=i; i>>=1;

}

z= 31

6. podaj wartosc kazdej zmiennej zapisaenj w prawej czesci tabeli po wykonaniu programu. zakladamy ze zmienne sa calkowite zajmuja 4 bajty, zas zmienna m jest zapamietana pod adresem 0x3FFFDOO

int m=44; m=44

int *p = &m *p=44 ; p-adres

int &r= m; r=44; &r - adres

int n= (*p)++; n=44;

int *q = p -1; q-adres; *q- jakas liczba

r= *(--p)+1; r- jakas liczba

++*p; *q=jakas liczba; q=adres

7. Zdefiniuj kompletna klase Stack tworzaca srodowisko operpwania na stosie liczb calkowitych. Jako reprezentacje wlasicwego stosu przyjmij tablice.Definicja klasy powinna zawierac: konstrukor, destruktor, def. funkcji pop (odloz) , def. f. push (pobierz) sprawdzenie czy is Empty , isFull .

Nie mam definicji funkcji pop i push

class stack {

private:

int tablica[10];

int ile;

public:

int pop( )

int push( int )

bool isEmpty( ){

if (ile==0) return true;

else return false;

}

bool isFull ( ){

if(ile == 10) return true;

else return false;

}

stack ( ): ile=0

{

}

~stack( )

};

8. Co bedzie po podaniu na wejscie BAROKX

viod EchoA( ) {

char c; cin>>c;

if( c !='x') { cout<<c;

EchoA( )}

}

odp. BAROK

viod EchoB( ) {

char c; cin>>c;

if( c !='x') { EchoA( );

cout<<c;}

}

odp. KORAB

9. Co program wypisze na ekranie

int a=5;

cout<<((--a)--);

cout<<a;

odp. 4 3

int a = 5;

a=(++a+(a++)+8)

cout<<a;

odp. 21

10. Napisz funkcje ktora sumuje elementy na obrzezy macierzy

int Border (int A[ ] [ ], int wiersz, int kolumna) {

int s=0;

for(int i=0;i<kolumna;i++)

{

s=s+A[0][i] ;

s=s+A[wiersz-1][i];

};

for (int j=0;j<wiersz;j++)

{

s=s+A[j][0] ;

s=s+A[j][kolumna-1];

};

s=s-A[0][0]-A[wiersz-1][0]-A[0][kolumna-1]-A[wiersz-1][kolumna-1];

return s;

}

11. W wezlach kopca binarnego przechowywane sa int . Narysowac w formie drzewa strukture kopca jaki powstanie do poczatkowo pustego kopca (drzewa) liczb calkowitych w nastepujacej kolejnosci: 15,7,11,3,10,10,8,12,5

po wstawieniu

15

/ \

7 11

/ \ / \

3 10 10 8

/ \

12 5

po posortowaniu zgodnie z def. kopca

15

/ \

12 11

/ \ / \

10 7 10 8

/ \

3 5

12. Zakladajc ze uzycie inst. switch (a takze wyraznia warunkowego W ? T:F) nie jest dozwolone napisz w C++ fragment programu rownowazny poznizszej instrukcji.

switch (x){

case 10: y = 'a' ; break;

case 20:

case 30:y='b' ; break;

default: y='c' ;

}

To nie wiem czy jest dobrze bo nie wiem czy W? T:F mial na mysli instrukcje warunkowa if

if(x==10)
y='a';
else if ((x==20)||(x==30))
y='b';
else y='c';

13. Nowa lista w odwrotnej kolejnosci (to tez nie wiem czy dobrze jest...nie pisalem tego )

template <class T> list<T> *diverse(list<T> *aLista, list<T> *nowalista)

{

ITERATOR<T> iter (*aLista);

while( !iter)

{

nowalista -> add ( iter( ) );

++ iter;

}

return nowalista;

}

14. Podaj przyklady konstruktora kopiujacego ( o tym jest w symfonii w drugim tomie ...nie bede pisac )

15. Jednokierunkowe klasy ( list oraz link ). Wykorzystujac mechanizmy tych klas napisz konstruktor kopiujacy klasy list

Odp. template<class T> list < T > :: list ( const list <T> &source )

16. Podaj wartosci zmiennych a b c

viod Modifty ( int x , int &y , int &z )

{

z=y;

y=z;

z=x;

}

viod test( int a , int b , int c )

{

Modfity(a,b,c)

}

cout <<a <<b<<c;

jakie warotosci beda wydrukowane dla test(1,2,3)

odp. a=1, b=2, c=1

17.Podano def. funkcji Minimum. Co nalezy wstawic w miejsce value i statement aby f. znajdowala wartosc najmniejsza

int minumum ( int Vector[ ] ,int N ){

int final = value;

for(int k=N-1 ; k>=0; k--)

if(Vector[k]<final) statement

return final

odp value - Vector[ N-1] , statement - final = Vector[k]

18. Niech Couple bedzie klasa o nastepujaej definicji

class Couple{

public:

Couple(int A) : parA { }

Couple(int A, double B) : parA(A),parB(B){ };

viod Display ( ) {

cout<<"("<<parA <<" , "<<parB<<")\n";

}

private:

int parA ; double parB;

}

Ktore deklaracje sa poprawne

a. Couple C1 ( 4, 5.0)

b. Couple C2

c. Couple C3(3)

d. Couple C4 = {1, 2.0}

odp. a i c poprawne

19. Zdefinoiowane funkcje printstars. podaj wynik dla wywolania z paremetren 4

viod Printstars ( int k ) {

if ( k > 0 ) {

Printstars(k-1);

for(int j=1 ; j<=k; j=j+2) cout<<"*";

cout<<"\n";

}

odp. *

*

**

**

20. Wezly drzewa posz. bin. oraz f. na nich operujaca sa zdef. nastepujaco

class TreeNode { int dara; Treenode *left , *right)

int Mystery (TreeNode *T){

if( T -> left == NULL) return ( T -> data);

else return Mystery ( T -> left)

}

Co robi ta funkcja??

Odp. Znajduje najmniejszy element w drzewie

21. Petle for zamien na petle while

a.

for ( ; h>=0 ; )

music;

while(1) {

if(h<0) break;

music;

}

b.

for( ; ; h + = 3 )

music;

while( 1 ){

h+=3;

music;

}

22.Napisz def. f. shift ktora 31-bitowe slowo danych przesuwa cyklicznie o B bitow w lewo ( przesuniecie w kierunku pozycji bardziej znaczacej) np. dla B=3 slowa postaci

01111000000000000000000011110000 wynik jest nastepujacy 01000000000000000000011110000111 . Parametrami funkcji sa slowa danych oraz wartosc przesuniecia B . Nie uzywac petli .

int shift ( dword v , int B )

{

dword a = ( v>>(32-B));

dword b= (v<<B);

return a | b ;

}

23. Napisz f. ktora jako swoj argument przyjmuje wartosc int a zwraca odbicie lustrzane tej liczby np.1234 a zwraca 4321 .

int mirror (int n)
{
int x,y,z=0,rzad;
for (int i=10 ;i; i=i*10)
{
x=fmod(n,i);
if(x==n)
{
rzad=i/10;
break;
}
}

for (int i=1;i<100;i++)
{
y=fmod(n,10);
z=z+rzad*y;
n=n/10;
rzad=rzad/10;
if(rzad<1) break;
}

return z;
}

24. Opisac nastepujacy rysunek ( sorka za ten rysunek ;))))

_______ ______ _______ _______

| --- | ---------- >| --- | ---------- >| ----- |-------> | "z" |

|_______| | | | | | |

------------ --------------- --------------

ppp* pp* p*

char z;

char *ppp , pp, p ;

main ( ){

p = &z ;

pp= p;

ppp=pp;

}

25. Napisz funkcje traingular ktora jako wynik zwraca wartosc true jesli podana liczba jest trojkatna lub false w przeciwnym wypadku. Liczba n jest trojkatna jesli reprezentowane przez nia zetony mozna ulozyc w formie trojkata np. 1,3,6,10

1 dla n=6

1 1

1 1 1

bool traingular (int n ){

int suma = 0 ;

for ( int i = 1; ; i++ )

{

suma=suma + i ;

if(suma == n ) return true;

if(suma>n) return false;

}

}

26. Wezly drzewa zdefiniowane sa nastepujaco class TreeNode { int dara; Treenode *left , *right)

. Napisz funkcje rekurencyjna ktora zwraca sume wszytkich elementow drzewa i jaka jest zlozonosc obliczeniowa tego procesu.

odp. zloznosc obliczeniowa log n

s=0;

double tree_sum ( TreeNode *T ){

s= s + T -> data ;

if ( T -> left != NULL ) tree_sum (T-> left)

if(T->right !=NULL) tree_sum (T ->right)

return s;

}

27. A teraz funkcja rekurencyjna ktora drukuje elementy drzewa w dowolnej kolejnosci.

viod traverse ( TreeNode *T )

{

cout<<T -> data <<endl;

if ( T -> left != NULL ) traverse (T-> left)

if(T->right !=NULL) traverse (T ->right)

}

28. Ponizej podano def. f. Count ktora powinna udostepniac liczbe elementow umieszczonych w uporzadkowanej tablicy Vector i majacych wartosci mniejsze od zadanego progu limit . Rozmiar N tablicy podaje trzeci parametr. niestety w pewnych wywolaniach pojawia sie blad. Na czym on polega i jak go usunac.

int Count ( int Vector [ ] , int limit , int N ) {

int index = 0 ;

while (( Vector[ index] < limit) && (index < N )) index ++

return index;

}

Blad polega na tym ze jesli limit bedzie wiekszy niz najwiekszy element tablicy to funkcja zaindeksuje nieistniejacy element tablicy. Aby tego uniknac wystarczy przestawic warunki w petli while .

jesli f. jest uporzadkowana rosnaco....

int Count ( int Vector [ ] , int limit , int N ) {

int index = 0 ;

while ( (index < N) && ( Vector[ index] < limit) ) index ++

return index;

}

Jeszcze taka mala dygresja....bo nasz kochany Jurek troszke niejasno sprecyzowal zadanie i nie wiemy czy elementy sa uporzadkowane rosnaco czy malejaco....wiec ta funkcja bedzie uniwersalna.

int Count ( int Vector [ ] , int limit , int N ) {

int index = 0; int x = 0;

while (index < N)

if (Vector[index++] < limit) x++

return x;

}

29. Dziesietna liczba automorficzna to liczba calkowita ktora znajduje sie na koncu swego kwadratu

np. 5^2 = 25 , 25^2 = 625 . Napisz program ktory drukuje liczby automorficzne od 1 do 1000

for ( i = 1; i <=1000; i++ )

{

if ( i*i % 10 == i ) cout<<i;

if ( i*i % 100 == i ) cout<<i;

if ( i*i % 1000 == i ) cout<<i;

}

30. podano fragment definicji klasy rational umozliwiajacej operowanie na ulamkach wlasciwych

class rational {

int top , bottom ; //licznik i mianownik

public:

rational ( int , int );

.........................

}X,Y,Z ; X = Y + Z

Podaj nizbedne oprogramowanie, które gwarantuje poprawnosc instrukcji X=Y+Z.

rational operator+(rational Z) {
rational i(0,1);
i.top=Y.top*bottom + top*Y.bottom;
i.bottom = Y.bottom*bottom;
return i;
}

31. Napisz tresc funkcji void tree_sort (mode<T> *root) ktora drukuje w porzadku niemalejacym od najmniej. do najwiek. elementy drzewa poszukiwan binarncych.

viod tree_sort ( mo<T> *root)

{

if (root -> left !=NULL) tree_sort (root -> left);

else {

cout<<root -> data ;

if ( root ->right !=NULL) tree_sort (root -> right)

return;

}

cout<<root -> data;

if ( root ->right !=NULL) tree_sort(root ->right);

}

chyba dobrze ale glowy nie daje....

32. Wskaz bledny zapis

a. int test ( int x )

{

x=4;

return 5;

}

b. int test (int & x)

{

x=4;

return 5;

}

c. int test (const int &x){

x=4;

return 5;

}

Odp . zapis c jest bledny bo do przydomka const nie mozna nic przypisac.

co zostanie wydrukowane

int i = 1 ; j = 2 ;

i = test ( j );

cout<<"i:"<<i<<"j:"<<j

odp . dla funkcji a i=5 j = 2

dla funkcji b i=5 j=4

33. W jednokierunkowej liscie cyklicznej wskaznik ostatnim elemencie skazuje na pierwszy element listy. Wykorzystujac mechanizmy klas list oraz link napisz definicje funkcji (bez uzywania klasy interator), która jako element liste cykliczna (nie wskaznik) oraz zwraca jako wynik liczbe elementow tej listy

int funkcja ( list &stara){

list *lista = stara;

link *First, *wezel;

int suma = 0;

if ( lista -> First = = NULL) return 0;

wezel = First = lista -> First ;

suma ++ ;

for ( ; ; ){

if (wezel = wezel ->next != First ) suma++ ;

else break ;

}

return suma ;

}



Wyszukiwarka

Podobne podstrony:
mathcad, Podstawy Informatyki - zadania z programu Mathcad
Zadanie dodatkowe- WOS kl. III gimnazjum, WOS- kl. III gimnazjum nowa podstawa
ZADANIA do rozwiązania, Dziennikarstwo, Podstawy ekonomii
ZADANIA Z EGZAMINU PODSTAWY INFORMATYKI, ZiIP, 2 sem, Informatyka, Egzaminy
zbi r5~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, zadania
zbi rt~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, zadania
Informator zadania Matematyka 2015 poziom podstawowy
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Podstawy Informatyki Wykład XIX Bazy danych
Podstawy Informatyki Wykład V Struktury systemów komputerowych
1 Epidemiologia i podstawowe informacje o NSid 8500 ppt
Dydaktyka jako nauka podstawowe informacje
Podstawowe informacje o planowa Nieznany (4)
Podstawy Telekomunikacji zadania, problemy
Podstawowe informacje na temat zasad przylaczenia farm wiatrowych
w 1 - wartość pieniądza w czasie - zadania dodatkowe, wszop ZZIP, II semestr, finanse i rachunkowość
PRZYSZLOSC KOMPUTEROW, ^v^ UCZELNIA ^v^, ^v^ Pedagogika, promocja zdrowia z arteterapią i socjoterap

więcej podobnych podstron