Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

1 Bölüm 5 Döngü Komutları Alıştırmalar Bu bölümdeki problemler “C Dersi Çözümlü Problem Kitabı”, N. E. Ça ğ ıltay, C. E. Selbes, G. Tokdemir, ve Ç. Turhan,

Benzer bir sunumlar


... konulu sunumlar: "1 Bölüm 5 Döngü Komutları Alıştırmalar Bu bölümdeki problemler “C Dersi Çözümlü Problem Kitabı”, N. E. Ça ğ ıltay, C. E. Selbes, G. Tokdemir, ve Ç. Turhan,"— Sunum transkripti:

1 1 Bölüm 5 Döngü Komutları Alıştırmalar Bu bölümdeki problemler “C Dersi Çözümlü Problem Kitabı”, N. E. Ça ğ ıltay, C. E. Selbes, G. Tokdemir, ve Ç. Turhan, 2. Baskı, Ada Matbaacılık Ltd. Şti., 2009 kitabındaki problemlerdendir.

2 Örnek 1: 2 Aşa ğ ıdaki atama komutlarını, bileşik atama operatörlerini kullanarak yeniden yazınız. yar*=5; alfa+=n+3; has-=42*t; beta/=25+k; yar=yar*5; alfa=(n+3)+alfa; has=has-42*t; beta=beta/(25+k); vay*=(st+3)*(st/4); vay=vay*(st+3)*(st/4);

3 Örnek 2: 3 Aşa ğ ıda verilen program parçalarının çıktılarını bulunuz. 6 -5 3 0 2 2 2 4 1 6 -10 i=5; m=-i++; printf(“%d %d”,i,m); i=5; m=-i++; printf(“%d %d”,i,m); i=2;k=1; m=i++ + --k; printf(“%d %d %d”,i,k,m); i=2;k=1; m=i++ + --k; printf(“%d %d %d”,i,k,m); i=1;k=1;m=1; m+=++i + k++; printf(“%d %d %d”,i,k,m); i=1;k=1;m=1; m+=++i + k++; printf(“%d %d %d”,i,k,m); i=1;k=5;m=2; m*=-i * k++; printf(“%d %d %d”,i,k,m); i=1;k=5;m=2; m*=-i * k++; printf(“%d %d %d”,i,k,m);

4 Örnek 3: 4 Aşa ğ ıda verilen program parçalarının çıktılarını bulunuz. 1 2 3 1 0 -1 -2 -3 1 4 7 10 13 3 0 6 -6 18 st=1; while(st<4) { printf(“%3d”,st); st++; } st=1; while(st<4) { printf(“%3d”,st); st++; } st=1; while(st>-4) { printf(“%3d”,st); st--; } st=1; while(st>-4) { printf(“%3d”,st); st--; } st=1; while(st<14) { printf(“%3d”,st); st=st+3; } st=1; while(st<14) { printf(“%3d”,st); st=st+3; } st=1; while(st>=-18) { printf(“%3d”,st+2); st=st*(-2); } st=1; while(st>=-18) { printf(“%3d”,st+2); st=st*(-2); }

5 Örnek 4: Aşa ğ ıda verilen program parçalarının çıktılarını bulunuz. 25 22 19 16 13 25 22 19 16 13 a=25; bayrak=1; while(bayrak) { if(a>10) { printf("%d\n",a); a=a-3; } else bayrak=0; } a=25; bayrak=1; while(bayrak) { if(a>10) { printf("%d\n",a); a=a-3; } else bayrak=0; } 5 5 8 13 21 34 55 5 8 13 21 34 55 a=2; b=3; while(a+b<41) { a=a+b; b=b+a; printf("%2d %2d\n",a,b); } a=2; b=3; while(a+b<41) { a=a+b; b=b+a; printf("%2d %2d\n",a,b); }

6 Örnek 5: 6 Aşa ğ ıdaki while döngülerini inceleyerek “Merhaba” sözcü ğ ünün kaç kere çıktıda görüntülendi ğ ini belirtiniz. Sonsuz kere 6 kere s=10; while(s==10) printf(“Merhaba”); s=10; while(s==10) printf(“Merhaba”); s=10; while(s<=15) { printf(“Merhaba”); s++; } s=10; while(s<=15) { printf(“Merhaba”); s++; } 1 kere s=10; while(s<=10) { printf(“Merhaba”); s++; } s=10; while(s<=10) { printf(“Merhaba”); s++; } Hiç basılmaz s=10; while(s<10) { printf(“Merhaba”); s++; } s=10; while(s<10) { printf(“Merhaba”); s++; } 1 kere s=10; while(s>9) { printf(“Merhaba”); s--; } s=10; while(s>9) { printf(“Merhaba”); s--; }

7 Örnek 6: Aşa ğ ıda verilen matematiksel ifadeleri while, for ve do-while döngülerini kullanarak hesaplayacak olan program parçacıklarını yazınız. a.1+2+3+...+1000 b.2+4+6+...+1000 c.1+1/2+1/3+...+1/100 d.1-1/2+1/3-1/4+...-1/100 Aşa ğ ıda verilen matematiksel ifadeleri while, for ve do-while döngülerini kullanarak hesaplayacak olan program parçacıklarını yazınız. a.1+2+3+...+1000 b.2+4+6+...+1000 c.1+1/2+1/3+...+1/100 d.1-1/2+1/3-1/4+...-1/100 7

8 8

9 Örnek 7: 9 Aşa ğ ıda verilen program parçalarının çıktılarını bulunuz. 123123 123123 1 0 -2 -3 1 0 -2 -3 1 4 7 10 13 1 4 7 10 13 3 0 6 -6 18 3 0 6 -6 18 for (st=1;st<4;st++) printf("%d\n",st); for (st=1;st<4;st++) printf("%d\n",st); for (st=1;st>-4;st--) printf("%d\n",st); for (st=1;st>-4;st--) printf("%d\n",st); for (st=1;st<14;st=st+3) printf("%d\n",st); for (st=1;st<14;st=st+3) printf("%d\n",st); for (st=1;st>=-18;st=st*(-2)) printf("%d\n",st+2); for (st=1;st>=-18;st=st*(-2)) printf("%d\n",st+2);

10 Örnek 8: 10 Aşa ğ ıdaki for döngülerini inceleyerek “Merhaba” sözcü ğ ünün kaç kere çıktıda görüntülendi ğ ini belirtiniz. 1 kere Hiç basılmaz for (s=10;s==10;s++) printf(“Merhaba”); for (s=10;s==10;s++) printf(“Merhaba”); for (s=10;s>=15;s++) printf(“Merhaba”); for (s=10;s>=15;s++) printf(“Merhaba”); 1 kere for (s=10;s<=10;s++) printf(“Merhaba”); for (s=10;s<=10;s++) printf(“Merhaba”); Hiç basılmaz for (s=10;s<10;s++) printf(“Merhaba”); for (s=10;s<10;s++) printf(“Merhaba”); 4 kere for (s=13;s>9;s--) printf(“Merhaba”); for (s=13;s>9;s--) printf(“Merhaba”);

11 Örnek 9: Aşa ğ ıda verilen program parçasını for ve do-while döngülerini kullanarak tekrar yazınız. printf(“Pozitif bir sayi giriniz:”); scanf(“%d”,&sayi); sayi_hane=0; while(sayi>0) { sayi=sayi/10; sayi_hane++; } Aşa ğ ıda verilen program parçasını for ve do-while döngülerini kullanarak tekrar yazınız. printf(“Pozitif bir sayi giriniz:”); scanf(“%d”,&sayi); sayi_hane=0; while(sayi>0) { sayi=sayi/10; sayi_hane++; } 11 sayi_hane=0; printf(“Pozitif bir sayi giriniz:”); for(scanf(“%d”,&sayi);sayi>0;sayi=sayi/10) sayi_hane++; sayi_hane=0; printf(“Pozitif bir sayi giriniz:”); for(scanf(“%d”,&sayi);sayi>0;sayi=sayi/10) sayi_hane++; printf(“Pozitif bir sayi giriniz:”); scanf(“%d”,&sayi); sayi_hane=0; do { sayi=sayi/10; sayi_hane++; }while(sayi>0); printf(“Pozitif bir sayi giriniz:”); scanf(“%d”,&sayi); sayi_hane=0; do { sayi=sayi/10; sayi_hane++; }while(sayi>0);

12 Örnek 10: 12 Aşa ğ ıda verilen program parçalarının çıktılarını bulunuz. 123123 123123 1 0 -2 -3 1 0 -2 -3 1 4 7 10 13 1 4 7 10 13 3 0 6 -6 18 3 0 6 -6 18 st=1; do { printf("%d\n",st); st++; }while (st<4); st=1; do { printf("%d\n",st); st++; }while (st<4); st=1; do { printf("%d\n",st); st--; }while (st>-4); st=1; do { printf("%d\n",st); st--; }while (st>-4); st=1; do { printf("%d\n",st); st=st+3; }while (st<14); st=1; do { printf("%d\n",st); st=st+3; }while (st<14); st=1; do { printf("%d\n",st+2); st=st*(-2); }while (st>=-18); st=1; do { printf("%d\n",st+2); st=st*(-2); }while (st>=-18);

13 Örnek 11: 13 Aşa ğ ıdaki do-while döngülerini inceleyerek “Merhaba” sözcü ğ ünün kaç kere çıktıda görüntülendi ğ ini belirtiniz. Sonsuz kere 1 kere s=10; do { printf(“Merhaba”); }while(s==10); s=10; do { printf(“Merhaba”); }while(s==10); s=10; do { printf(“Merhaba”); s++; }while(s>=15); s=10; do { printf(“Merhaba”); s++; }while(s>=15); 3 kere s=8; do { printf(“Merhaba”); s++; }while(s<=10); s=8; do { printf(“Merhaba”); s++; }while(s<=10); 1 kere s=10; do { printf(“Merhaba”); s++; }while(s<10); s=10; do { printf(“Merhaba”); s++; }while(s<10); 1 kere s=10; do { printf(“Merhaba”); s--; }while(s>9); s=10; do { printf(“Merhaba”); s--; }while(s>9);

14 Örnek 12: Aşa ğ ıda verilen program parçalarının çıktılarını bulunuz. a=0; while(a<15) { for(b=1;b<3;b++) printf("%3d %3d\n",a,b); a++; printf("%3d %3d\n",a,b); } a=0; while(a<15) { for(b=1;b<3;b++) printf("%3d %3d\n",a,b); a++; printf("%3d %3d\n",a,b); } 0 1 0 2 1 3 1 1 1 2 2 3 2 1 2 2 3 3 3 1 3 2 4 3 4 1 4 2 5 3 5 1 5 2 6 3 6 1 6 2 7 3 7 1 7 2 0 1 0 2 1 3 1 1 1 2 2 3 2 1 2 2 3 3 3 1 3 2 4 3 4 1 4 2 5 3 5 1 5 2 6 3 6 1 6 2 7 3 7 1 7 2 8 3 8 1 8 2 9 3 9 1 9 2 10 3 10 1 10 2 11 3 11 1 11 2 12 3 12 1 12 2 13 3 13 1 13 2 14 3 14 1 14 2 15 3 8 3 8 1 8 2 9 3 9 1 9 2 10 3 10 1 10 2 11 3 11 1 11 2 12 3 12 1 12 2 13 3 13 1 13 2 14 3 14 1 14 2 15 3 14

15 Örnek 12 (Devam): for(a=10;a>1;a-=2) { b=1; while(b<3) { printf("%3d %3d\n",a,b); ++b; } a++; printf("%3d %3d\n",a,b); } for(a=10;a>1;a-=2) { b=1; while(b<3) { printf("%3d %3d\n",a,b); ++b; } a++; printf("%3d %3d\n",a,b); } 10 1 10 2 11 3 9 1 9 2 10 3 8 1 8 2 9 3 7 1 7 2 8 3 6 1 6 2 7 3 5 1 5 2 6 3 4 1 4 2 5 3 3 1 3 2 4 3 2 1 2 2 3 3 10 1 10 2 11 3 9 1 9 2 10 3 8 1 8 2 9 3 7 1 7 2 8 3 6 1 6 2 7 3 5 1 5 2 6 3 4 1 4 2 5 3 3 1 3 2 4 3 2 1 2 2 3 3 15

16 Örnek 12 (Devam): a=10; do { b=1; do { printf("%3d %3d\n",a,b); ++b; }while(b<=5); printf("%3d %3d\n",a,b); a=a+2; }while(a!=16); a=10; do { b=1; do { printf("%3d %3d\n",a,b); ++b; }while(b<=5); printf("%3d %3d\n",a,b); a=a+2; }while(a!=16); 10 1 10 2 10 3 10 4 10 5 10 6 12 1 12 2 12 3 12 4 12 5 12 6 14 1 14 2 14 3 14 4 14 5 14 6 10 1 10 2 10 3 10 4 10 5 10 6 12 1 12 2 12 3 12 4 12 5 12 6 14 1 14 2 14 3 14 4 14 5 14 6 16

17 Örnek 13: Aşa ğ ıda verilen programın çıktısını bulunuz. 10 20 35 65 130 45 85 10 20 35 65 130 45 85 #include int main(void) { int i, j,k=4; for(i =1; i<8; i++) { if(k>=100) k=k/3; else k=k*2; j=k; while (j%5>0) j++; printf(“%5d/n”,j); } return (0); } #include int main(void) { int i, j,k=4; for(i =1; i<8; i++) { if(k>=100) k=k/3; else k=k*2; j=k; while (j%5>0) j++; printf(“%5d/n”,j); } return (0); } 17

18 Örnek 14: Aşa ğ ıda verilen şekli ekranda görüntüleyen program parçasını yazınız. *** Aşa ğ ıda verilen şekli ekranda görüntüleyen program parçasını yazınız. *** 18 int i,j; for(i=1;i<=6;i++) { for(j=6-i;j>=1;j--) printf("%c",' '); printf("***\n"); }

19 Örnek 15: m ve n pozitif tamsayılarını girdi olarak alan ve bu iki sayı arasındaki (m ve n dahil) tek sayıların toplamını ve ortalamasını çift sayıların toplamını ve ortalamasını hesaplayan bir C programı yazınız. Bu problemde n de ğ eri m’den büyük olmalıdır, aksi durumda program hata mesajı vermelidir. Örnek Çıktı: m ve n pozitif tamsayılarını girdi olarak alan ve bu iki sayı arasındaki (m ve n dahil) tek sayıların toplamını ve ortalamasını çift sayıların toplamını ve ortalamasını hesaplayan bir C programı yazınız. Bu problemde n de ğ eri m’den büyük olmalıdır, aksi durumda program hata mesajı vermelidir. Örnek Çıktı: 19

20 Örnek 15 (Devam): #include int main(void) { int i,m,n; int tek_toplam=0,cift_toplam=0; int tek_sayac=0,cift_sayac=0; printf("Iki tamsayi giriniz: "); scanf("%d%d",&m,&n); if (m<n) { for (i=m;i<=n;i++) { if(i%2==0) { cift_toplam+=i; cift_sayac++; } else { tek_toplam+=i; tek_sayac++; } printf("Tek sayilarin toplami: %d\n",tek_toplam); printf("Tek sayilarin ortalamasi: %f\n",(float)tek_toplam/tek_sayac); printf("Cift sayilarin toplami: %d\n",cift_toplam); printf("Cift sayilarin ortalamasi: %f\n",(float)cift_toplam/cift_sayac); } else printf("n degeri m'den buyuk degildir!!\n"); return 0; } 20

21 Örnek 16: 1,1,2,3,5,8,13,21,34,... serisi bir Fibonacci serisidir. Bu serinin başlangıç de ğ erleri 1 ve 1 olup, takip eden sayılar kendinden önce gelen iki sayının toplamıyla oluşturulur. İ lk 20 Fibonacci sayısını bulup ekranda görüntüleyecek C programını yazınız. 21

22 Örnek 16 (Devam): #include int main(void) { int fib1,fib2,sayac,fibyeni; fib1=1; fib2=1; printf("%5d\n%5d\n",fib1,fib2); sayac=2; while(sayac<20) { fibyeni=fib1+fib2; sayac++; printf("%5d\n",fibyeni); fib1=fib2; fib2=fibyeni; } system("pause"); return 0; } 22

23 Örnek 17: Tamsayı n’i girdi olarak alan ve n’nin de ğ erine göre g(n) fonksiyonunu hesaplayan bir C programı yazınız. E ğ er n negatif bir sayı ise program hata mesaji vermelidir. 1+2+3+...+n n≥10 g(n)= n! 0≤n≤9 Bu programda her hesaplama sonunda kullanıcının yeni bir n de ğ eri girip girmeyece ğ i sorulmalıdır. Tamsayı n’i girdi olarak alan ve n’nin de ğ erine göre g(n) fonksiyonunu hesaplayan bir C programı yazınız. E ğ er n negatif bir sayı ise program hata mesaji vermelidir. 1+2+3+...+n n≥10 g(n)= n! 0≤n≤9 Bu programda her hesaplama sonunda kullanıcının yeni bir n de ğ eri girip girmeyece ğ i sorulmalıdır. 23

24 Örnek 17 (Devam): #include int main(void) { int n,i,carpim,toplam; int cevap; do { printf("n degerini giriniz: "); scanf("%d",&n); if (n>=0) { if(n<=9) { carpim=1; for(i=2;i<=n;i++) carpim*=i; printf("g(%d)=%d\n",n,carpim); } else { toplam=0; for(i=1;i<=n;i++) toplam+=i; printf("g(%d)=%d\n",n,toplam); } else printf("n degeri negatif olamaz!!\n"); printf("Yeni bir n degeri girmek istiyor musunuz? (1- Evet / 2- Hayir): "); scanf("%d",&cevap); }while(cevap==1); system("pause"); return 0; } 24

25 Örnek 18: Bir cümledeki karakter sayısını ve kelime sayısını bulacak olan programı yazınız. Cümlenin sonu nokta ile sonlanırken kelimeler arasında bir boşluk bulunmaktadır. Örnek Çıktı: Cumle giriniz: Tunca eve git. Karakter sayisi: 14 Kelime sayisi: 3 Bir cümledeki karakter sayısını ve kelime sayısını bulacak olan programı yazınız. Cümlenin sonu nokta ile sonlanırken kelimeler arasında bir boşluk bulunmaktadır. Örnek Çıktı: Cumle giriniz: Tunca eve git. Karakter sayisi: 14 Kelime sayisi: 3 25

26 Örnek 18 (Devam): #include int main(void) { int karakter_sayi,kelime_sayi; char karakter; kelime_sayi=0; karakter_sayi=0; printf("Cumle giriniz: "); scanf("%c",&karakter); while(karakter!='.') { karakter_sayi++; if(karakter==' ') kelime_sayi++; scanf("%c",&karakter); } printf("Karakter sayisi: %d\n",karakter_sayi+1); printf("Kelime sayisi: %d\n",kelime_sayi+1); system("pause"); return 0; } 26

27 Örnek 19: m ve n pozitif tamsayılarını girdi olarak alan ve bu iki sayı arasındaki (m ve n dahil) bütün asal sayıları ekranda gösterecek C programını yazınız. 27

28 Örnek 19 (Devam): #include int main(void) {int m,n; int num,bayrak,i; printf("Pozitif iki tamsayi giriniz: "); scanf("%d%d",&m,&n); printf("\n %d-%d arasindaki butun asal sayilar:",m,n); printf("\n-------------------------------------\n"); for (num=m ; num<=n ; num=num+1) { bayrak=1; i=2; while ((i<num) && (bayrak==1)) { if((num%i)==0) bayrak=0; i=i+1; } if (bayrak==1 && num!=1) printf("%3d",num); } printf("\n"); system("pause"); return 0; } 28 Eğer kullanıcı m için 1 değeri girmişse ekrana 1 rakamının yazılmasını engellemek gerekir. Çünkü 1 asal sayı değildir.

29 Örnek 20: Bir pozitif tamsayı olan n de ğ eri ile bir reel sayı olan x de ğ erini girdi olarak alan ve serisini birden fazla n ve x çiftleri için hesaplayan programı yazınız. Programda her seri hesaplamasından sonra kullanıcıya devam edilip edilmeyece ğ i sorulmalıdır. Kullanıcı devam etmek istiyorsa evet anlamında “E” veya “e” girmelidir. Di ğ er karakter girişlerinde ise program sonlandırılmalıdır. Örnek Çıktı: Pozitif tamsayi: 3 Reel sayi: 1.0 Seri: 9.00 Devam edecek misiniz: E Pozitif tamsayi: 2 Reel sayi: 1.5 Seri: 1.04 Devam edecek misiniz: t Hoscakalin! Bir pozitif tamsayı olan n de ğ eri ile bir reel sayı olan x de ğ erini girdi olarak alan ve serisini birden fazla n ve x çiftleri için hesaplayan programı yazınız. Programda her seri hesaplamasından sonra kullanıcıya devam edilip edilmeyece ğ i sorulmalıdır. Kullanıcı devam etmek istiyorsa evet anlamında “E” veya “e” girmelidir. Di ğ er karakter girişlerinde ise program sonlandırılmalıdır. Örnek Çıktı: Pozitif tamsayi: 3 Reel sayi: 1.0 Seri: 9.00 Devam edecek misiniz: E Pozitif tamsayi: 2 Reel sayi: 1.5 Seri: 1.04 Devam edecek misiniz: t Hoscakalin! 29

30 Örnek 20 (Devam): #include int main(void) { int n,i; float x, seri; char devam; do { printf("\nPozitif tamsayi: "); scanf("%d",&n); printf("Reel sayi: "); scanf("%f",&x); seri=0; for (i=1;i<=2*n-1; i+=2) seri+= i/pow(x,i+1); printf("Seri:%6.2f\n", seri); printf("Devam edecek misiniz: "); scanf("%c",&devam); }while ((devam=='E')||(devam=='e')); printf("Hoscakalin!\n"); system("pause"); return(0); } 30

31 Örnek 21: Yazaca ğ ınız C programında pozitif bir tamsayıyı girdi olarak alınız. Bu sayının basamaklarını çarparak yeni bir sayı elde ediniz. Bu yeni sayı tek basamaklı de ğ ilse tekrar basamakları çarpınız ve başka bir sayı elde ediniz. Basamakların çarpılarak yeni sayı elde etme işlemi, tek basamaklı bir sayı elde edinceye kadar devam etmelidir. Örne ğ in; girilen sayı 9838 ise basamakların çarpımı 9x8x3x8 olan 1728 sayısı elde edilir. 1728 sayısının basamakları tekrar çarpılarak (1x7x2x8) 112 sayısı elde edilir. 112 sayısının basamakları çarpıldı ğ ında ise (1x1x2) tek basamaklı bir sayı olan 2 elde edilir ve program sonlandırılır. Örnek Çıktı: Pozitif sayi giriniz: 9838 1.sayi:1728 2.sayi: 112 3.sayi: 2 Yazaca ğ ınız C programında pozitif bir tamsayıyı girdi olarak alınız. Bu sayının basamaklarını çarparak yeni bir sayı elde ediniz. Bu yeni sayı tek basamaklı de ğ ilse tekrar basamakları çarpınız ve başka bir sayı elde ediniz. Basamakların çarpılarak yeni sayı elde etme işlemi, tek basamaklı bir sayı elde edinceye kadar devam etmelidir. Örne ğ in; girilen sayı 9838 ise basamakların çarpımı 9x8x3x8 olan 1728 sayısı elde edilir. 1728 sayısının basamakları tekrar çarpılarak (1x7x2x8) 112 sayısı elde edilir. 112 sayısının basamakları çarpıldı ğ ında ise (1x1x2) tek basamaklı bir sayı olan 2 elde edilir ve program sonlandırılır. Örnek Çıktı: Pozitif sayi giriniz: 9838 1.sayi:1728 2.sayi: 112 3.sayi: 2 31

32 Örnek 21 (Devam): #include int main(void) { int no,carpim, i; printf("Pozitif sayi giriniz: "); scanf("%d",&no); i=1; do { carpim=1; /*Basamaklarin carpimi*/ while(no>0) { carpim*=(no%10); no/=10; } printf("%d. sayi: %d\n", i++, carpim); no=carpim; /*Tek basamak kontrolu*/ }while(no>9); system("pause"); return(0); } 32

33 Örnek 22: Bir ö ğ rencinin genel not ortalaması (GNO), toplam sayısal not de ğ erinin, toplam kredi saatine bölünmesiyle bulunmaktadır. Derslere ait kredi saatini ve harf notlarını girdi olarak alıp, ö ğ rencinin genel not ortalamasını hesaplayan bir program yazınız. Harf notlarına ait katsayılar: A’nın 4; B’nin 3; C’nin 2; D’nin 1 ve F’nin 0’dır. Programınız derslere ait bilgi girişinin yapılıp yapılmayaca ğ ını kullanıcıya sormalıdır. Aşa ğ ıdaki örnekte ö ğ rencinin genel not ortalamasının nasıl hesaplandı ğ ı gösterilmiştir. DersKredi SaatiHarf NotuSayısal Not Ders1 5 C 5*2=10 Ders2 3 A 3*4=12 Ders3 4 D 4*1=4 Toplam 12 26 Dolayısıyla, ö ğ rencinin genel not ortalaması 26/12 olarak hesaplanır ve 2.17 sonucu elde edilir. Örnek Çıktı: Bir ö ğ rencinin genel not ortalaması (GNO), toplam sayısal not de ğ erinin, toplam kredi saatine bölünmesiyle bulunmaktadır. Derslere ait kredi saatini ve harf notlarını girdi olarak alıp, ö ğ rencinin genel not ortalamasını hesaplayan bir program yazınız. Harf notlarına ait katsayılar: A’nın 4; B’nin 3; C’nin 2; D’nin 1 ve F’nin 0’dır. Programınız derslere ait bilgi girişinin yapılıp yapılmayaca ğ ını kullanıcıya sormalıdır. Aşa ğ ıdaki örnekte ö ğ rencinin genel not ortalamasının nasıl hesaplandı ğ ı gösterilmiştir. DersKredi SaatiHarf NotuSayısal Not Ders1 5 C 5*2=10 Ders2 3 A 3*4=12 Ders3 4 D 4*1=4 Toplam 12 26 Dolayısıyla, ö ğ rencinin genel not ortalaması 26/12 olarak hesaplanır ve 2.17 sonucu elde edilir. Örnek Çıktı: 33 Ders 3: Kredi saatini giriniz: 4 Harf notunu giriniz: D Yeni ders bilgisi girecekseniz (E/e) giriniz: H Toplam kredi saati: 12 Toplam not: 26.00 Genel Not Ortalamasi: 2.17 Ders 3: Kredi saatini giriniz: 4 Harf notunu giriniz: D Yeni ders bilgisi girecekseniz (E/e) giriniz: H Toplam kredi saati: 12 Toplam not: 26.00 Genel Not Ortalamasi: 2.17 Ders 1: Kredi saatini giriniz: 5 Harf notunu giriniz: C Yeni ders bilgisi girecekseniz (E/e) giriniz: E Ders 2: Kredi saatini giriniz: 3 Harf notunu giriniz: A Yeni ders bilgisi girecekseniz (E/e) giriniz: e Ders 1: Kredi saatini giriniz: 5 Harf notunu giriniz: C Yeni ders bilgisi girecekseniz (E/e) giriniz: E Ders 2: Kredi saatini giriniz: 3 Harf notunu giriniz: A Yeni ders bilgisi girecekseniz (E/e) giriniz: e

34 Örnek 22 (Devam): #include int main(void) { int kredi, derssayi=1, kreditoplam=0; char not, cevap,enter; float gno, toplam=0; do{ printf("\nDers %d:\n", derssayi++); printf("Kredi saatini giriniz: "); scanf("%d",&kredi); scanf("%c", &enter); /*Kredilerin toplami */ kreditoplam += kredi; printf("Harf notunu giriniz: "); scanf("%c",&not); scanf("%c", &enter); 34 /*Harf katsayilarinin toplami */ if (not=='A') toplam+= kredi *4; else if (not=='B') toplam+= kredi *3; else if (not=='C') toplam+= kredi *2; else if (not=='D') toplam+= kredi; else toplam+= kredi *0; printf("Yeni ders bilgisi girecekseniz (E/e) giriniz: "); scanf("%c",&cevap); /*Devam kontrolu */ }while( cevap=='e' || cevap=='E'); /*Ortalama hesabi */ gno= (float) toplam / kreditoplam; printf("\nToplam kredi saati: %d\n", kreditoplam); printf("Toplam not: %5.2f\n", toplam); printf("Genel Not Ortalamasi: %5.2f\n", gno); system("pause"); return(0); }

35 EV ÖDEV İ : E ğ er kullanıcı yanlış bir harf notu girerse programda ne gibi bir aksaklık oluşur. Bu aksaklı ğ ı gidermek için programda gerekli düzeltmeleri yaparak önlem alınız. Örnek 22 (Devam):

36 Örnek 23: Yazaca ğ ınız C programı ile pozitif bir tamsayı olan n’yi girdi olarak alınız. Daha sonra program eşitli ğ ini sa ğ layan ve n’den küçük veya eşit olan a, b, ve c tamsayı de ğ erlerini bulup ekranda göstermelidir. Örnek Çıktı: Pozitif bir tamsayi giriniz :15 a b c --- ---- ---- 3 4 5 4 3 5 5 12 13 6 8 10 8 6 10 9 12 15 12 5 13 12 9 15 Yazaca ğ ınız C programı ile pozitif bir tamsayı olan n’yi girdi olarak alınız. Daha sonra program eşitli ğ ini sa ğ layan ve n’den küçük veya eşit olan a, b, ve c tamsayı de ğ erlerini bulup ekranda göstermelidir. Örnek Çıktı: Pozitif bir tamsayi giriniz :15 a b c --- ---- ---- 3 4 5 4 3 5 5 12 13 6 8 10 8 6 10 9 12 15 12 5 13 12 9 15 36

37 Örnek 23 (Devam): #include int main(void) { int n,a,b,c; printf("Pozitif bir tamsayi giriniz: "); scanf("%d",&n); printf(" a b c\n"); printf("---- ---- ----\n"); /*a,b,c degerleri */ for(a=1;a<=n;a++) for(b=1;b<=n;b++) for(c=1;c<=n;c++) /*Esitlik kontrolu */ if (pow(a,2.0)+pow(b,2.0)==pow(c,2.0)) printf("%4d%5d%5d\n",a,b,c); system("pause"); return(0); } 37


"1 Bölüm 5 Döngü Komutları Alıştırmalar Bu bölümdeki problemler “C Dersi Çözümlü Problem Kitabı”, N. E. Ça ğ ıltay, C. E. Selbes, G. Tokdemir, ve Ç. Turhan," indir ppt

Benzer bir sunumlar


Google Reklamları