Podstawy Programowania C 02 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 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); x=5 y=7 x=5 y=7 x?=9 y?=2 x=9 y=2 x=9 y=2 x=2 y=9 x=2 y=9 Wydruk przez adres Wydruk przez adres Zamiana przez adres Wydruk przez adres
//rysuje linię 10 gwiazdek int i; while(i<=10) { //rysuje linię x gwiazdek int i,x; printf("ile gwiazdek? :"); while(i<=x) { //rysuje przekątną z x gwiazdek int i,j,x; printf("ile gwiazdek? :"); while(i<=x) { j=1; while(j<i) { j++; printf("\n"); //rysuje pusty trójkąt prostokątny z x gwiazdek int i,j,x; printf("ile gwiazdek? :"); printf("\n"); while(i<=x) { j=1; while(j<i) { j++; printf("\n"); while(i<=x+2) { //rysuje odwrócony pusty trójkąt prostokątny z x gwiazdek int i,j,x; printf("ile gwiazdek? :"); j=x; while(j>=0) { j--; printf("\n"); while(i<=x) { j=x; while(j>=i) { j--; j=1; while(j<i) { j++;
printf("\n"); while(i<=x+2) { //oblicza sumę k liczb int i,k,suma,pom; printf("ile liczb? :"); scanf("%d",&k); suma=0; while(i<=k) { printf("podaj liczbe nr %d :",i); scanf("%d",&pom); suma+=pom; printf("\n\nsuma %d liczb wynosi %d",k,suma); //oblicza sumę liczb zakończonych znakiem int i,k,suma,pom; printf("podaj liczbe nr 1 :",i); i=2; suma=pom; while(k!=0) { printf("podaj liczbe nr %d :",i); if(k!=0) suma+=pom; i-=2; printf("\n\nsuma %d liczb wynosi %d",i,suma); //oblicza sumę liczb zakończonych znakiem! int i,k,suma,pom; char pp; pp='a'; printf("podaj liczbe nr 1 :",i); i=2; if(k==0) scanf("%c",&pp); suma=pom; while(pp!='!') { printf("podaj liczbe nr %d :",i); if(k!=0) { suma+=pom; else scanf("%c",&pp); i--; printf("\n\nsuma %d liczb wynosi %d",i,suma); //znajduje max z liczb zakończonych znakiem! int i,k,max,pom; char pp; pp='a'; printf("podaj liczbe nr 1 :",i); i=2; if(k==0) scanf("%c",&pp); max=pom; while(pp!='!') { if(k==0) printf("\n"); printf("podaj liczbe nr %d :",i); if(k!=0) { if(max<pom) max=pom; else scanf("%c",&pp);
i--; printf("\n\nmaximum z %d liczb wynosi %d",i,max); 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 a b 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 b 0 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 int x, y, p1, p2,p3; printf("podaj a :"); 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); //NWD - szybki algorytm Euklidesa int x, y, p1, p2,p3; printf("podaj a :"); 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); //mnożenie - algorytm rosyjskich wieśniaków int x, y, p1, p2,p3; printf("podaj a :"); 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); //mnożenie - algorytm rosyjskich wieśniaków //wersja wielokrotna int x, y, p1, p2,p3,stop; stop=1; while(stop!=0) { printf("\n\npodaj a :"); stop= 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); system("cls"); else getchar(); system("cls"); printf("\n\nk O N I E C");
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ć: a 0 =1 a 1 =1 a n =a n-1 +a n-2 Proszę napisać program obliczjący iteracyjnie n-ty wyraz ciągu Fibonacciego. Zadanie 4. Proszę napisać program, który wczyta z klawiatury podzielniki a 1 i a 2 oraz liczby x 1 i x 2, a następnie wczyta dane z klawiatury. Wczytywanie kończy się gdy liczba danych podzielnych przez a 1 jest równa x 1 lub liczba danych podzielna przez a 2 jest równa x 2. Program ma wyliczyć i wydrukować różnicę sumy wszystkich danych pomniejszoną o iloczyn danych podzielnych przez a 1 i podwojoną sumę danych podzielnych przez a 2. 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ć: a 0 =1 a 1 =1 a 2 =2 a n =2a n-1 +3a n-2 +a n-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 ).