C ile Uygulamalar 4 - Cevaplar Cevap-1: //Soru 1 #include <stdlib.h> //Standart kütüphane başlık dosyası. #include <time.h> //Tarih ve saat fonksiyonlarının yer aldığı başlık dosyası. int dizidensil(int *,int,int); //Fonksiyonun prototipi tanımlanmaktadır. srand( time(null) ); //Rastgele üretilen sayının zamana bağlı olarak sürekli farklı olması sağlanmaktadır. int dizi[20]; int boyut=20; int silinen,indis=-1; short kosul=0; int i,j; for(i=0;i<boyut;i++) dizi[i]=rand()%100+1; //1-100 arasında rastgele üretilen sayılar diziye atanmaktadır. for(j=0;j<boyut;j++) printf(" %d ",dizi[j]); printf("\n\ndiziden Silmek Istediginiz Sayiyi Giriniz:"); scanf("%d",&silinen); for(i=0;i<boyut;i++) //Silinmek istenen sayının dizideki konumu tespit edilmektedir. if(silinen==dizi[i]) indis=i; break; if(indis==-1) printf("%d Sayisi Dizide Bulunmamaktadir.",silinen); exit(0); //Program sonlandırılmaktadır. kosul=dizidensil(dizi,indis,boyut); omeryucel.wordpress.com 1
if(kosul==1) printf("\n%d Sayisi Diziden Basariyla Silinmistir.\n\n",silinen); for(j=0;j<boyut-1;j++) printf(" %d ",dizi[j]); int dizidensil(int *dizi,int indis,int boyut) //Sayının diziden silindiği fonksiyon. int i; for(int i=indis;i<boyut;i++) dizi[i]=dizi[i+1]; return 1; omeryucel.wordpress.com 2
Cevap-2: //Soru 2 int recursivetopla(int *,int); //Fonksiyonun prototipi tanımlanmaktadır. int dizi[5]=1,2,3,4,5; printf( "Dizideki Sayilarin Toplami: %d",recursivetopla(dizi,5) ); int recursivetopla(int dizi[],int elemansayisi) //Dizideki sayıların toplandığı fonksiyon. if(elemansayisi==1) return dizi[0]; return dizi[elemansayisi-1]+recursivetopla(dizi,elemansayisi-1); omeryucel.wordpress.com 3
Cevap-3: //Soru 3 int uzunluk,genislik; int i,j; printf("uzunluk:"); scanf("%d",&uzunluk); printf("genislik:"); scanf("%d",&genislik); for(i=1;i<=genislik;i++) //Dikdörtgen oluşturulmaktadır. for(j=1;j<=uzunluk;j++) if(i==1) printf("* "); else if(i==genislik) printf("* "); else if(j==1 j==uzunluk) printf("* "); else printf(" "); printf("\n"); omeryucel.wordpress.com 4
Cevap-4: //Soru 4 #include <string.h> //String ifadelerle (katar) işlem yapan fonksiyonların bulunduğu başlık dosyası. #include <ctype.h> //Karakterler ile işlem yapan fonksiyonların bulunduğu başlık dosyası. void kisaltma(char *); //Fonksiyonun prototipi tanımlanmaktadır. char kelime[100]; printf("bir Cumle Giriniz:"); gets(kelime); kisaltma(kelime); void kisaltma(char *ifade) //Kelimenin kısaltıldığı fonksiyon. int i; short kosul=1; printf("kelimenin Kisaltilmis Sekli: "); for(i=0;ifade[i]!=null;i++) //ifade'nin string sonu karakterine gelinmediği müddetçe döngü devam etmektedir. if(kosul==1 && ifade[i]!=' ') ifade[i]=toupper(ifade[i]); kosul=0; printf("%c",ifade[i]); else if(ifade[i]==' ') kosul=1; omeryucel.wordpress.com 5
Cevap-5: //Soru 5 int sayi,yenisayi=0; printf("sayiyi Giriniz:"); scanf("%d",&sayi); while(sayi>=1) //Sayı 1'den büyük eşit olduğu müddetçe döngü devam etmektedir. yenisayi=(yenisayi*10)+(sayi%10); sayi=sayi/10; printf("sayinin Tersi: %d",yenisayi); omeryucel.wordpress.com 6
Cevap-6: //Soru 6 int gsaat,gdakika,gsaniye,eklsaniye; int saat,dakika,saniye; printf("zamani Giriniz (Saat-Dakika-Saniye):\n"); scanf("%d %d %d",&gsaat,&gdakika,&gsaniye); printf("\neklenecek Saniyeyi Giriniz:"); scanf("%d",&eklsaniye); saniye=gsaniye+eklsaniye; //Girilen saniyeye göre yeni zaman oluşturulmaktadır. gdakika=gdakika+(saniye/60); gsaat=gsaat+(gdakika/60); dakika=gdakika%60; saniye=saniye%60; saat=gsaat; if(saat==0 saat<10) //Zaman uygun formatta ekrana yazdırılmaktadır. if( dakika>9 && (saniye==0 saniye<10) ) printf("yeni Zaman= 0%d:%d:0%d",saat,dakika,saniye); else if( (dakika==0 dakika<10) && saniye>9 ) printf("yeni Zaman= 0%d:0%d:%d",saat,dakika,saniye); else if(dakika>9 && saniye>9) printf("yeni Zaman= 0%d:%d:%d",saat,dakika,saniye); else printf("yeni Zaman= 0%d:0%d:0%d",saat,dakika,saniye); else if( dakika>9 && (saniye==0 saniye<10) ) printf("yeni Zaman= %d:%d:0%d",saat,dakika,saniye); else if( (dakika==0 dakika<10) && saniye>9 ) printf("yeni Zaman= %d:0%d:%d",saat,dakika,saniye); else if(dakika>9 && saniye>9) printf("yeni Zaman= %d:%d:%d",saat,dakika,saniye); else printf("yeni Zaman= %d:0%d:0%d",saat,dakika,saniye); omeryucel.wordpress.com 7
omeryucel.wordpress.com 8
Cevap-7: //Soru 7 int sayi,sayac=1; int birler,onlar,yuzler,binler; do //do-while döngüsünde koşula bakılmaksızın döngüye en az bir kere girilmektedir. printf("dort Basamakli Bir Tam Sayi Giriniz:"); scanf("%d",&sayi); while(sayi<1000 sayi>9999); //Girilen sayı dört basamaklı bir sayı olduğunda döngüden çıkılmaktadır. binler=sayi/1000; //Sayı basamaklarına ayrılmaktadır. yuzler=( sayi-(binler*1000) )/100; onlar=( sayi-(binler*1000)-(yuzler*100) )/10; birler=( sayi-(binler*1000)-(yuzler*100)-(onlar*10) ); if(binler!=yuzler && binler!=onlar && binler!=birler) //Sayının basamak değerleri birbirleriyle karşılaştırılmaktadır. sayac++; if(yuzler!=onlar && yuzler!=birler) sayac++; if(onlar!=birler) sayac++; printf("bu Sayida %d Farkli Rakam Bulunmaktadir.",sayac); omeryucel.wordpress.com 9
Cevap-8: //Soru 8 int sayi=1000; int ilkikihane,sonikihane,sonuc; while(sayi<10000) ilkikihane=sayi/100; //Sayının ilk iki hanesi ile son iki hanesi elde edilmektedir. sonikihane=sayi%100; sonuc=(ilkikihane+sonikihane)*(ilkikihane+sonikihane); if(sonuc==sayi) printf(" %d ",sayi); //Koşulu sağlayan sayılar ekrana yazdırılmaktadır. sayi=sayi+1; omeryucel.wordpress.com 10
Cevap-9: //Soru 9 int sayi1,sayi2; int s1toplam=1,s2toplam=1; int gecici,i=2; printf("sayilari Giriniz:\n"); scanf("%d %d",&sayi1,&sayi2); if(sayi2>sayi1) //Girilen 2.sayı 1.sayıdan büyük ise if yapısına girilmekte ve sayılar aralarında yer değiştirilmektedir. gecici=sayi1; sayi1=sayi2; sayi2=gecici; while( i<=(sayi1/2) ) if(sayi1%i==0) //i sayısının sayi1'in tam böleni olduğu durumda if yapısına girilmektedir. s1toplam=s1toplam+i; if(sayi2%i==0) //i sayısının sayi2'nin tam böleni olduğu durumda if yapısına girilmektedir. s2toplam=s2toplam+i; i=i+1; if(sayi1==s2toplam && sayi2==s1toplam) printf("\narkadas Sayilardir."); else printf("\narkadas Sayi Degillerdir."); omeryucel.wordpress.com 11
Cevap-10: //Soru 10 #define BOYUT 30 void bellolustur(int [BOYUT][BOYUT],int); //Fonksiyonların prototipleri tanımlanmaktadır. void bellyazdir(int [BOYUT][BOYUT],int); int bell[boyut][boyut]; int satir; bell[0][0]=1; bell[1][0]=1; bell[1][1]=2; do //do-while döngüsünde koşula bakılmaksızın döngüye en az bir kere girilmektedir. printf("bell Ucgeninin Satir Sayisini Giriniz (1-30):"); scanf("%d",&satir); while(satir<=0 satir>30); //Girilen sayı 1-30 arasında bir sayı olduğunda döngüden çıkılmaktadır. bellolustur(bell,satir); bellyazdir(bell,satir); void bellolustur(int bell[boyut][boyut],int satir) //Bell üçgeninin oluşturulduğu fonksiyon. int i,j; for(i=2;i<satir;i++) bell[i][0]=bell[i-1][i-1]; for(j=0;j<i+1;j++) bell[i][j+1]=bell[i][j]+bell[i-1][j]; void bellyazdir(int bell[boyut][boyut],int satir) //Bell üçgeninin ekrana yazdırıldığı fonksiyon. omeryucel.wordpress.com 12
int i,j; for(i=0;i<satir;i++) for(j=0;j<i+1;j++) printf("%5d",bell[i][j]); printf("\n"); omeryucel.wordpress.com 13