4.Hafta BİL 105-02-06 Soruların Çözümleri SORU1. Kullanıcının girdiği bir sayının tek mi, yoksa çift mi olduğunu bulan bir C programı yazınız. Yazdığınız programın algoritmasını yazınız ve akış çizeneğini çiziniz. main() { int n,a,b,x,z ; printf(" \n\ta ve b tamsayilarini giriniz : "); scanf("%d %d", &a, &b); z=(a>b)? a : b ; printf("%d\n",z); n = z ; (((n/2)*2) == n )? printf("%d cift bir sayidir.\n") : printf("%d tek bir sayidir.\n"); x = n%3 ; x = (x < 12 )? x : -1 ; printf("%d\n",x) ;
1. SORU2. a,b,c katsayılarını kullanıcının girdiği ikinci dereceden bir denklemin köklerini bulan bir C programını ve algoritmasını yazınız. Programın akış çizeneğini iziniz. A) Katsayıların tamsayı olması durumu: #include <math.h> main() { int a,b,c; float x1; float x2; float diskriminant; printf(" \n Denklemin a,b,c tamsayi katsayilarini giriniz : \n"); scanf("%d%d%d", &a,&b,&c); printf("denklem %dx^2 + %dx +%d = 0 dir \n", a,b,c); diskriminant = b*b -4*a*c; if (diskriminant < 0) printf("denklemin gercel kokleri yoktur. \n"); else { x1 = (-b + sqrt(diskriminant) ) / (2*a); x2 = (-b - sqrt(diskriminant) ) / (2*a); printf("kokler: \n"); printf("x1 = %f ve x2 = %f dir. \n", x1,x2);
SORU2. Katsayıların float olması durumu: #include <math.h> float a,b,c,x1,x2,d,dsq; printf("ax^2 + bx + c = 0 "); printf("\n a,b,c katsayılarini virgulle ayirark giriniz : \n"); scanf("%f,%f,%f",&a,&b,&c); d = b*b-(4*a*c); if(d>=0) { dsq=sqrt(d); x1 = (-b+dsq)/(2*a); x2 = (-b-(dsq))/(2*a); printf("\nroot 1 : %f\nroot 2 : %f",x1,x2); if(d<0) { d = ((4*a*c)-pow(b,2))/(2*a); printf("\nroot 1 : %f+%fi",((-b)/(2*a)),d); printf("\nroot 2 : %f-%fi",((-b)/(2*a)),d);
SORU3. Kullanıcının gireceği iki tam sayının maksimumunu bulan bir C programını ve algoritmasını yazınız. Akış çizeneğini çiziniz. Çözüm 1: #include<stdio.h> #include<math.h> int a,b,max,min; printf("iki tamsayı giriniz. "); scanf("%d%d",&a,&b); (a > b)? max = a : max = b ; printf("grdiğiniz sayıların maksimumu %d dir \n", max); Çözüm 2: #include <math.h> main() { int n ; printf(" \n\t Bir tamsayi giriniz : "); scanf("%d", &n); (((n/2)*2) == n )? printf("%d cift bir sayidir.\n",n) : printf("%d tek bir sayidir.\n",n); Çözüm 2: Fonksiyon ile Çözüm even(n) int n; { if (n%2) else return 1;
1. SORU4. Aşağıdaki programı çözümleyiniz ve çıktılarını yazınız. int x = 11,y = 11,z = 11; char a = 40,b = 40,c = 40; float r = 12.987,s = 12.987,t = 12.987; if (x == y) z = -13; if (x > z) a = 'A'; if (!(x > z)) a = 'B'; if (b <= c) r = 0.0; if (r!= s) t = c/2; printf("a = %i\n ", a); printf("a = %i\n ", a); printf("r = %f\n ", r); printf("t = %f\n ", t); if (x == y) z = -13; /* bu satir z = -13 konumunu yapar*/ if (x > z) a = 'A'; /* a = 65 yapar */ if (!(x > z)) a = 'B'; /* bu satir bir sey degistirmez */ if (b <= c) r = 0.0; /* r = 0.0 yapar */ if (r!= s) t = c/2; /* t = 20 yapar */ Çıktılar: z = -13 a = 65 a = 65 r = 0.000000 t = 20.000000
1. SORU 5 Aşağıdaki programı çözümleyiniz ve çıktılarını yazınız. int x = 11,y = 11,z = 11; char a = 40,b = 40,c = 40; float r = 12.987,s = 12.987,t = 12.987; if (x = (r!= s)) z = 1000; if (x = y) z = 222; if (x!= 0) z = 333; if (x) z = 444; if (x = (r!= s)) z = 1000; /* x = positif bir sayi ve z = 1000 yapar */ if (x = y) z = 222; /* x = y, ve z = 222 yapar */ if (x!= 0) z = 333; /* z = 333 yapar */ if (x) z = 444; /* z = 444 yapar */ Çıktılar: z = 11 z = 222 z = 333 z = 444
1. SORU 6. Aşağıdaki programı çözümleyiniz ve çıktılarını yazınız. İnt main() { int x = 11,y = 11,z = 11; char a = 40,b = 40,c = 40; float r = 12.987,s = 12.987,t = 12.987; x = y = z = 77; if ((x == y) && (x == 77)) z = 33; if ((x > y) (z > 12)) z = 22; if (x && y && z) z = 11; if ((x = 1) && (y = 2) && (z = 3)) r = 12.00; if ((x == 2) && (y = 3) && (z = 4)) r = 14.56; x = y = z = 77; if ((x == y) && (x == 77)) z = 33; /* z = 33 yapar */ if ((x > y) (z > 12)) z = 22; /* z = 22 yapar */ if (x && y && z) z = 11; /* z = 11 yapar */ if ((x = 1) && (y = 2) && (z = 3)) r = 12.00; /* bu satir x = 1, y = 2, z = 3, r = 12.00 yapar */ if ((x == 2) && (y = 3) && (z = 4)) r = 14.56; /* bu satir hiçbir şey degistirmez */ Çıktılar: z = 33 z = 22 z = 11 z = 3
SORU 7. Aşağıdaki programı çözümleyiniz ve çıktılarını yazınız. int x = 11,y = 11,z = 11; char a = 40,b = 40,c = 40; float r = 12.987,s = 12.987,t = 12.987; if (x == x); z = 27.345; if (x!= x) z = 27.345; if (x = 0) z = 27.345; if (x == x); z = 27.345; /* z her zaman degisir */ if (x!= x) z = 27.345; /* hicbir sey degismez */ if (x = 0) z = 27.345; /* x = 0 yapar, ama z 'yi degistirmez */ Çıktılar: z = 27 z = 27 z = 27
8. Kullanıcının gireceği üç float sayının maksimumunu bulan bir C programı ve algoritmasını yazınız. Çözüm 1. Yalnız if kullanarak float a, b, c; printf("3 sayi giriniz: "); scanf("%f %f %f", &a, &b, &c); if(a>=b && a>=c) printf("girilen 3 sayinin en buyugu = %.2f", a); if(b>=a && b>=c) printf("girilen 3 sayinin en buyugu = %.2f", b); if(c>=a && c>=b) printf("girilen 3 sayinin en buyugu = %.2f", c); Çözüm 2. if-else kullanarak float a, b, c; printf("enter three numbers: "); scanf("%f %f %f", &a, &b, &c); if (a>=b) { if(a>=c) printf("girilen 3 sayinin en buyugu = %.2f",a); else printf("girilen 3 sayinin en buyugu = %.2f",c); else { if(b>=c) printf("girilen 3 sayinin en buyugu = %.2f",b); else printf("girilen 3 sayinin en buyugu = %.2f",c); Çözüm 3. if-else kullanarak float a, b, c; printf("3 float sayi giriniz: "); scanf("%f %f %f", &a, &b, &c); if(a>=b && a>=c) printf("girilen 3 sayinin en buyugu = %.2f", a); else if(b>=a && b>=c) printf("girilen 3 sayinin en buyugu = %.2f", b); else printf("girilen 3 sayinin en buyugu = %.2f", c);
9. Kullanıcının gireceği iki tamsayının en büyük ortak bölenini (ebob) bulan bir C programı yazınız. Çözüm 1: int num1, num2, i, ebob; printf("iki tamsayı giriniz: "); scanf("%d %d", &num1, &num2); for(i=1; i<=num1 i<=num2; ++i) { if(num1%i==0 && num2%i==0) /* i 'nin bir çarpan olup olmadığı denetleniyor */ ebob=i; printf("%d ve %d nin ebob = %d", num1, num2, ebob); Çözüm 2: int num1, num2, min,i; printf("iki tam sayı giriniz: "); scanf("%d %d", &num1, &num2); min=(num1>num2)?num2:num1; /* girilen sayıların minimumuna min denildi */ for(i=min; i>=1; --i) { if(num1%i==0 && num2%i==0) { printf("%d ve %d nin ebob = %d", num1, num2, i); break;
10. ax + by = m ve cx + dy = n doğrusal denklemlerinin tek çözümü olası için a*d-b*c!= 0 olmalıdır. Bu durumda çözüm x = (m * d) - (b * n)) / ((a * d) - (c * b); y = ((n * a) - (m * c)) / ((a * d) - (c * b)); dir. Değilse sonsuz çözüm vardır. Katsayılarını kullanıcının gireceği bir dnklem sisteminin çözümünü bulan bir C programı yazınız. #include<stdio.h> int main() { int a,b,c,d,m,n; float x, y printf("katsayi giniz : a \n"); scanf("%d",&a); printf("katsayi giniz : b \n"); scanf("%d",&b); printf("katsayi giniz : c \n"); scanf("%d",&c); printf("katsayi giniz : scanf("%d",&d); \n"); printf("katsayi giniz : m \n"); scanf("%d",&m); printf("katsayi giniz : n \n"); scanf("%d",&n); if((a*d)-(c*b) == 0) printf("\nsonsuz cozum var \n"); else { x = (float)((m * d) - (b * n)) / ((a * d) - (c * b)); printf("\nx = %f ",x); y = (float)((n * a) - (m * c)) / ((a * d) - (c * b)); printf("\ny = %f ",y);