Podstawy Programowania C 02


W S K A Ź N I K I



0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31





5




7





4




8



















x




y





wx




wy



















zmienna




zmienna





adres x




adres y
















#include <stdio.h>

#include <conio.h>

int main() {


int x,y,pom;

int *wx, *wy;


x=5;

y=7;

printf("\nx=%d\ty=%d\n",x,y);

wx=&x;

wy=&y;

printf("\n\tWydruk przez adres\n");

printf("\nx=%d\ty=%d\n",*wx,*wy);

printf("x?=");

scanf("%d",wx);

printf("y?=");

scanf("%d",wy);

printf("\nx=%d\ty=%d\n",x,y);

printf("\n\tWydruk przez adres\n");

printf("\nx=%d\ty=%d\n",*wx,*wy);

printf("\n\tZamiana przez adres\n");

pom=*wx;

*wx=*wy;

*wy=pom;

printf("\nx=%d\ty=%d\n",x,y);

printf("\n\tWydruk przez adres\n");

printf("\nx=%d\ty=%d\n",*wx,*wy);


fflush(stdin);

getch();

return 0;

}



x=5 y=7


Wydruk przez adres


x=5 y=7

x?=9

y?=2


x=9 y=2


Wydruk przez adres


x=9 y=2


Zamiana przez adres


x=2 y=9


Wydruk przez adres


x=2 y=9

//rysuje linię 10 gwiazdek

#include <stdio.h>

#include <conio.h>

int main() {

int i;

i=1;

while(i<=10) {

printf("*");

i++;

}

fflush(stdin);

getch();

return 0;

}

//rysuje linię x gwiazdek

#include <stdio.h>

#include <conio.h>

int main() {

int i,x;

i=1;

printf("ile gwiazdek ? :");

scanf("%d",&x);

while(i<=x) {

printf("*");

i++;

}


return 0;

}

//rysuje przekątną z x gwiazdek

#include <stdio.h>

#include <conio.h>

int main() {

int i,j,x;

i=1;

printf("ile gwiazdek ? :");

scanf("%d",&x);

while(i<=x) {

j=1;

while(j<i) {

printf(" ");

j++;

}

printf("*\n");

i++;

}


return 0;

}

//rysuje pusty trójkąt prostokątny z x gwiazdek

#include <stdio.h>

#include <conio.h>

//***************************************

int main() {

int i,j,x;


i=1;


printf("ile gwiazdek ? :");

scanf("%d",&x);


printf("*\n");

while(i<=x) {

j=1;

printf("*");

while(j<i) {

printf(" ");

j++;

}

printf("*\n");

i++;

}


i=1;

while(i<=x+2) {

printf("*");

i++;

}


return 0;

}

















// rysuje odwrócony pusty trójkąt prostokątny

// z x gwiazdek


#include <stdio.h>

#include <conio.h>

//***************************************

int main() {

int i,j,x;


i=1;


printf("ile gwiazdek ? :");

scanf("%d",&x);

j=x;

while(j>=0) {

printf(" ");

j--;

}

printf("*\n");


while(i<=x) {

j=x;

while(j>=i) {

printf(" ");

j--;

}

j=1;

printf("*");

while(j<i) {

printf(" ");

j++;

}

printf("*\n");

i++;

}


i=1;

while(i<=x+2) {

printf("*");

i++;

}


return 0;

}





//oblicza sumę k liczb

//***************************************

#include <stdio.h>

#include <conio.h>

//***************************************

int main() {

int i,k,suma,pom;


printf("ile liczb ? :");

scanf("%d",&k);


i=1;

suma=0;


while(i<=k) {

printf("podaj liczbe nr %d :",i);

scanf("%d",&pom);

i++;

suma+=pom;

}


printf("\n\nsuma %d liczb wynosi %d",k,suma);


return 0;

}

//oblicza sumę liczb zakończonych znakiem

//***************************************

#include <stdio.h>

#include <conio.h>

//***************************************

int main() {

int i,k,suma,pom;


printf("podaj liczbe nr 1 :",i);

k=scanf("%d",&pom);


i=2;

suma=pom;


while(k!=0) {

printf("podaj liczbe nr %d :",i);

k=scanf("%d",&pom);

i++;

if(k!=0) suma+=pom;

}


i-=2;


printf("\n\nsuma %d liczb wynosi %d",i,suma);


return 0;

}



//oblicza sumę liczb zakończonych znakiem !

//***************************************

#include <stdio.h>

#include <conio.h>

//***************************************

int main(){

int i,k,suma,pom;

char pp;


pp='a';


printf("podaj liczbe nr 1 :",i);

k=scanf("%d",&pom);


i=2;


if(k==0)

scanf("%c",&pp);

suma=pom;


while(pp!='!') {

printf("podaj liczbe nr %d :",i);

k=scanf("%d",&pom);

if(k!=0) {

suma+=pom;

i++;

}

else

scanf("%c",&pp);

}


i--;


printf("\n\nsuma %d liczb wynosi %d",i,suma);


return 0;

}





//znajduje max z liczb zakończonych znakiem !

//***************************************

#include <stdio.h>

#include <conio.h>


int main() {


int i,k,max,pom;

char pp;


pp='a';


printf("podaj liczbe nr 1 :",i);

k=scanf("%d",&pom);


i=2;


if(k==0)

scanf("%c",&pp);

max=pom;


while(pp!='!') {

if(k==0)

printf("\n");

printf("podaj liczbe nr %d :",i);

k=scanf("%d",&pom);

if(k!=0) {

if(max<pom)

max=pom;

i++;

}

else

scanf("%c",&pp);

}

i--;


printf("\n\nmaximum z %d liczb ”,i); printf("wynosi %d",max);


return 0;

}









Zadanie 1.

Algorytm Euklidesa służy do wyznaczania NWD dwóch liczb.

Działa on w następujący sposób:

Mamy 2 liczby a oraz b.

Jeżeli a=b to NWD(a,b)=b,

Jeżeli ab to NWD(a,b)=NWD(min(a,b),|a-b|).

Proszę zaimplementować powyższy algorytm.

UWAGA: proszę nie używać rekurencji ale pętli while.

Zadanie 2.

Szybki Algorytm Euklidesa jest modyfikacją Algorytmu Euklidesa.

Działa on w następujący sposób:

Mamy 2 liczby a oraz b.

Jeżeli b=0 to NWD(a,b)=a,

Jeżeli b0 to NWD(a,b)=NWD(b, (a mod b))

Proszę zaimplementować powyższy algorytm.

UWAGA: proszę nie używać rekurencji ale pętli while.

Zadanie 3.

Algorytm rosyjskich wieśniaków służy do obliczania iloczynu dwóch liczb.

Działa on w następujący sposób:

Mamy 2 liczby a oraz b.

Tworzymy dwie kolumny. Następnie w kolejnych wierszach wpisujemy :

w pierwszym wierszu :

w kolumnie a wartość a,

w kolumnie b wartość b,

w następnych wierszach:

w kolumnie a część całkowitą uzyskaną z podzielenia liczby z poprzedniego wiersza przez 2,

w kolumnie b liczbę uzyskaną z pomnożenia liczby z poprzedniego wiersza przez 2.

Postępujemy tak dopóki liczba w kolumnie a jest większa od 1.

Następnie sumujemy liczby z kolumny b, dla których ich odpowiedniki w kolumnie a są nieparzyste.





a=11


b=6

11


6

5


12

2


24

1


48




6+12+48



66




















//NWD - algorytm Euklidesa

#include <stdio.h>

#include <conio.h>

int main(){

int x, y, p1, p2,p3;

printf("podaj a :");

scanf("%d",&x);

printf("podaj b :");

scanf("%d",&y);

p1=x;

p2=y;

while(p2!=p1) {

if(p1>p2)

p1=p1-p2;

else

p2=p2-p1;

}

printf("\n\nNWD(%d,%d)=%d",x,y,p1);

fflush(stdin);

getch();

return 0;

}

//NWD - szybki algorytm Euklidesa

#include <stdio.h>

#include <conio.h>

int main(){

int x, y, p1, p2,p3;

printf("podaj a :");

scanf("%d",&x);

printf("podaj b :");

scanf("%d",&y);

p1=x;

p2=y;

while(p2!=0) {

p3=p2;

p2=p1%p2;

p1=p3;

}

printf("\n\nNWD(%d,%d)=%d",x,y,p1);

fflush(stdin);

getch();

return 0;

}

//mnożenie - algorytm rosyjskich wieśniaków

#include <stdio.h>

#include <conio.h>

int main(){

int x, y, p1, p2,p3;

printf("podaj a :");

scanf("%d",&x);

printf("podaj b :");

scanf("%d",&y);

p1=x;

p2=y;

p3=0;

while(p1!=1) {

if(p1%2)

p3+=p2;

p1=p1/2;

p2*=2;

}

p3+=p2;

printf("\n\n%d*%d=%d",x,y,p3);

fflush(stdin);

getch();

return 0;

}

//mnożenie - algorytm rosyjskich wieśniaków

//wersja wielokrotna

#include <stdio.h>

#include <conio.h>

int main(){

int x, y, p1, p2,p3,stop;

stop=1;

while(stop!=0) {

printf("\n\npodaj a :");

stop=scanf("%d",&x);

if(stop!=0) {

printf("podaj b :");

scanf("%d",&y);

p1=x;

p2=y;

p3=0;

while(p1!=1) {

if(p1%2)

p3+=p2;

p1=p1/2;

p2*=2;

}

p3+=p2;

printf("\n\n%d*%d=%d",x,y,p3);

fflush(stdin);

getch();

system("cls");

}

else

getchar();

}

system("cls");

printf("\n\nK O N I E C");

fflush(stdin);

getch();

return 0;

}


Zadanie 1. Proszę napisać program, który

1.wczyta z klawiatury liczbę linii

2.wydrukuje obrazek:

*

**

***

****

*****

******

Zadanie 2. Proszę napisać program, który

1.wczyta z klawiatury:

a)liczbę elementów w 1 wierszu

b)liczbę wierszy

c)różnicę pomiędzy ilością elementów pomiędzy kolejnymi wierszami

2.policzy sumę elementów tak zdefiniowanej struktury danych, wczytywanych z klawiatury


Przykład 1:

Liczba elementów w 1 wierszu:

3

liczba wierszy:

5

różnica:

2

Wygląd danych

5, 7, 3

8, 6, 4, 5, 9

13,21, 2, 5, 6, 8, 7


Suma=109


Przykład 2:

Liczba elementów w 1 wierszu:

7

liczba wierszy:

5

różnica:

-2

Wygląd danych

13,21, 2, 5, 6, 8, 7

8, 6, 4, 5, 9

5, 7, 3

Suma=109





Zadanie 3.

Rekurencyjna definicja ciągu Fibonacciego ma postać:

a0=1

a1=1

an=an-1+an-2

Proszę napisać program obliczjący iteracyjnie n-ty wyraz ciągu Fibonacciego.


Zadanie 4. Proszę napisać program, który

wczyta z klawiatury podzielniki a1 i a2 oraz liczby x1 i x2, a następnie wczyta dane z klawiatury. Wczytywanie kończy się gdy liczba danych podzielnych przez a1 jest równa x1 lub liczba danych podzielna przez a2 jest równa x2. Program ma wyliczyć i wydrukować różnicę sumy wszystkich danych pomniejszoną o iloczyn danych podzielnych przez a1 i podwojoną sumę danych podzielnych przez a2.

Zadanie 5. Proszę napisać program, który

1.wczyta z klawiatury liczbę linii

2.liczbę gałęzi

3.wydrukuje obrazek dla 3 linii i 4 gałęzi:


*

***

*****

*

***

*****

*

***

*****

*

***

*****


Zadanie 6*.

Rekurencyjna definicja ciągu ma postać:

a0=1

a1=1

a2=2

an=2an-1+3an-2 +an-3- n dla n>2

Proszę napisać program obliczjący iteracyjnie n-ty wyraz tego ciągu.


Zadanie 7*.

Proszę napisać program, który wykonuje operację szybkiego potęgowania na dwóch liczbach całkowitych (modyfikacja algorytmu rosyjskich wieśniaków ).








































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































11