Bil 105 Laboratuvar (1. Hafta Problemleri) Aşağıdaki problemler, C programları ile çözülmüştür. Ancak istenen algoritmalarıdır. Aşağıdaki çözümlere bakarak algoritmalarını başka türlü yazmayı ve akış çizeneklerini oluşturmayı deneyiniz. Bir problemin birden çok çözüm yolu olabilir. O yolların her birisi bir algoritmadır.) 20 / 1.Problem 1 den 10 kadar sayıları ekrana yazan bir algoritma tasarlayınız.. Algoritma: main() int i; for (i=1;i <=10; i=i+1) printf("%d \n",i); 1 yaz 2 yaz 3 yaz 4 yaz 5 yaz 6 yaz 7 yaz 8 yaz 9 yaz 10 yaz
20 / 2.Problem Eğer verilen a,b,c tam sayılarının toplamı 50 den büyükse ortalamasını, küçükse karelerinin ortalamasını hesaplayan bir algoritma tasarlayınız. main(void) int a; // ilk sayı int b; // ikinci sayı int c; // üçüncü sayı int ort ; // aritmetik ortalama int kort ; // karelerinin ortalaması printf( "İlk sayıyı giriniz\n" ); // prompt scanf( "%d", &a ); // sayı oku Gir : a Gir: b Gir :c Ort = (a+b+c)/3 Kort = (a*a + b*b + c*c)/3 Eğer ort > 50 ise ort yaz Değilse kort yaz printf( "İkinci sayıyı giriniz\n" ); // prompt scanf( "%d", &b ); //sayı oku printf( "Üçüncü syıyı giriniz\n" ); // prompt scanf( "%d", & ); // sayı oku printf("\n \n"); ort = (a+b+c)/3 ; // printf("%d\n", ort); kort = (a*a + b*b + c*c)/3 // printf("%d \n",kort); if (ort > 50) printf("%d \n", ort); else printf("%d \n", kort);
21 / 3.Problem 1 Dakikada 10 adım, her 10 adımda 2 adım artırarak koşan bir sporcu 100 dakikada kaç adım atmış olur? int main(void) int i = 0, adim = 0; for(i=1 ; i <=100; i = i+1) adim = adim + (10+2*(i-1)); printf(" %d. dakikada ADIM SAYISI : %d \n", i, adim ); Algoritma 1.dk toplam_adım_sayısı = 10 + 0 2.dk toplam_adım_sayısı = 10 + 12 adım = 22 adım = 10 + (10 +2*1) 3.dk toplam_adım_sayısı = 22 + 14 adım = 36 adım = 22 + (10 + 2*2) 4.dk toplam_adım_sayısı = 36 + 16 adım = 52 adım = 36 + (10 + 2*3) 5.dk toplam_adım_sayısı = 52 + 18 adım = 70 adım = 52 + (10 + 2*4) i.dk toplm_adım_sayısı = önceki adım sayısı + (10 + 2*(i-1)) Dakika 1 den 100 e kadar artarken her dakikadaki toplam_adım_sayısını yazdır
21 / 4.Problem Verilen 2 basamaklı iki tamsayının faktöriyellerinin toplamını bulmak? Agoritma int i,j; // girilecek sayılar int n; // sayaç int faktoryel( n) if (n <=0) return 1; else return (n * faktoryel(n-1)); Girilecek sayıları bildir: i, j Sayaç bildir : n faktoryel(0) = 1 faktoryel(1) = 1 faktoryel(2) = 2* faktoryel(1) faktoryel(3) = 3* faktoryel(2) faktoryel(4) = 4* faktoryel(3) faktoryel(n) = n* faktoryel(n-1) Son satır her n tamsayısının faktoyelini bulur printf("%d \n", faktoryel(i)+ faktoryel(j)); int main(void) printf( "İlk sayıyı giriniz\n" ); scanf( "%d", &i ); printf( "İkinci sayıyı giriniz\n" ); scanf( "%d", &j ); printf("%d \n", faktoryel(i)+ faktoryel(j));
21 / 5.Problem Bilgisayarın tutuğu 2 basamaklı tam sayıyı en çok 5 denemede bulabilen başarılı ve eğer 5 denemede bulamaz ise başarısız sonucunu veren bir algoritma tasarlayınız. int main(void) int tutulan; // tutulan sayı int tahmin; // tahmin edilen sayı int i; printf( "Tutulacak sayıyı giriniz\n" ); scanf( "%d", &tutulan ); // sayı oku for (i =1; i <=5; i = i+1) printf( "Tahmininizi giriniz :\n", &tahmin ); scanf( "%d", &tahmin ); // tahmin edilen sayı if (tahmin == tutulan) printf("bravo bildiniz!\n"); else if (tahmin < tutulan) printf("%d, tutulan sayıda küçüktür\n", tahmin); else printf("%d, tutulan sayıdan büyüktür\n", tahmin); Agoritma Tutulan sayıyı, tahmin edilen sayıyı ve ençok beş tekrar yaptıracak sayacı bildiriniz Tutulan sayıyı gir Tahmin edilen sayıyı gir Aşağıdaki deyimleri en çok 5 kez çalıştır Tutulan == tahmin ise bravo yaz Tutulan < tahmin ise tahmininiz büyüktür yaz Tutulan > tahmin ise tahmininiz küçüktür yaz
22/ 6.Problem 1990 Yılında dikilen Kavak ağacı dikildiğinde 1 metre ve çam ağacı 1.50 metredir. Kavak yalnız çift sayılı yıllarda 0.50 ve cam ise tek sayılı yıllarda 0.35 m büyüyorsa kavak çama hangi yıl yetişir? Algoritma Kavak, çam ve yıl bildirimi yap ve ilk değerlerini ver Aşağıdaki bloku kavak <= cam olduğu sürece tekrarla yıl = yıl +1 int main() Yıl tek ise int kavak = 100; int cam = 150; int yil = 1990; printf("yıllar Çam Kavak \n"); kavak =kavak + 50 değilse cam = cam +35 Yıllara gre kavak ve çamın uzunluklarını yazdır while (kavak <=cam) yil = yil + 1; if (yil%2==0) kavak = kavak + 50 ; else cam = cam + 35; printf("%d, %d, %d \n",yil, cam, kavak);
25 / 1. Problem int main() printf( " ******* *** * * \n"); printf( "* * * * **** * * \n"); printf( "* * * * ****** * * \n"); printf( "* * * * * * * \n"); printf( "* * * * * * * \n"); printf( "******** * * * * \n"); return(0); Algoritma Yıldızlar verilen şekle benzeyecek biçinde prinf() fonksiyonu içine string yaz.