*** REKURSİF FONKSİYONLU VE bazı ALGORİTMALAR ***ASAGİDA DERLENMİŞ KODLARI KULLANARAK C DİLİNİN BAZI İNCELİKLERİ VE GÜZELLİKLERİNİ GÖRMEK İÇİN İNCELEMENİZİ TAVSİYE EDERİMC de kısa işlevli hesap makinesi——————————————————————————————-#include#include //getch için#include //system (pause) için#include //türkçe karakterler içinint a,b,sonuc,c;int main(){setlocale(LC_ALL,”Turkish”);printf(“yapmak istediğiniz işlemi seçinizn1:toplaman2:çıkarman3:çarpman4:bölmen5:kareleri toplamın6:tam karen”);scanf(“%d”,&c);switch(c){case 1:{ printf(“1. sayıyı giriniz”);scanf(“%d”,&a);printf(“2. sayıyı giriniz”);scanf(“%d”,&b);printf(“sonuc=”);sonuc=a+b;printf(“%dna”, sonuc); break;}case 2: {printf(“1. sayıyı giriniz:”);scanf(“%d”,&a);printf(“2. sayıyı giriniz:”);scanf(“%d”,&b);printf(“sonuc=”);sonuc=a-b;printf(“%dna”, sonuc); break;}case3:{ printf(“1. sayıyı giriniz:”);scanf(“%d”,&a);printf(“2. sayıyı giriniz:”);scanf(“%d”,&b);printf(“sonuc=”);sonuc=a*b;printf(“%dna”, sonuc); break;}case 4:{printf(“1. sayıyı giriniz:”);scanf(“%d”,&a);printf(“2. sayıyı giriniz:”);scanf(“%d”,&b); printf(“sonuc=”);sonuc=a/b;printf(“%dna”, sonuc); break;}case 5:{printf(“1. sayıyı giriniz:”);scanf(“%d”,&a);printf(“2. sayıyı giriniz:”);scanf(“%d”,&b); printf(“sonuc=”);sonuc=a*a+b*b;printf(“%dna”, sonuc); break;}case 6:{printf(“1. sayıyı giriniz:”);scanf(“%d”,&a);printf(“2. sayıyı giriniz:”);scanf(“%d”,&b); printf(“sonuc=”);sonuc=a*a+2*a*b+b*b;printf(“%dna”, sonuc); break;}default: {printf(“nyanliş işlemn”);}getch();return 0;}}C de enk,enb….——————————————————————————————-#include#includeint i,N,enk,enb,enkyer,enbyer,A[100];int main(){printf(“dizi eleman sayisi:”);scanf(“%d”,&N);printf(“n”);for(i=1;i<=N;i++){printf("A[%u]=",i);scanf("%d",&A[i]);}printf("n");enk=A[1];enkyer=1;enb=A[1];enbyer=1;for(i=2;i<=N;i++){if(A[i]enb){enb=A[i];enbyer=i;}}printf(“dizinin enk=%d ve %i. sıradadır.n”,enk,enkyer);printf(“dizinin enb=%d ve %i.sıradadır.n”,enb,enbyer);getch();return 0;}C de üçgen alani hesaplama——————————————————————————————-#include#include#includefloat a,b,c,u,Alan;int main(){printf(“birinci kenar:”);scanf(“%f”,&a);printf(“ikinci kenar:”);scanf(“%f”,&b);printf(“ucuncu kenar:”);scanf(“%f”,&c);u=(a+b+c)/2;Alan=sqrt(u*(u-a)*(u-b)*(u-c)); //sqrt kok almak için kullanilirprintf(“n”);printf(“ucgenin alani=%0.2f”,Alan);getch();return 0;}C de tek boyutlu dizi elemanlarını toplama——————————————————————————————-#include#includeint i,N,T,A[100];int main(){T=0;printf(“dizinin eleman sayisini giriniz:”);scanf(“%d”,&N);printf(“n”);for(i=0;i<=N;i++){printf("A[%d]",i);scanf("%d",&A[i]);}for(i=0;i<=N;i++) T=T+A[i];printf("n");printf("toplam=%d",T);getch();}==>>c KOLAYLIGIYLA iki boyutlu dizi(MATRİS) ornegiC de matris örneği——————————————————————————————-#include#include#includeint main(){int m,n,b,k,i,j,A[100][100];setlocale(LC_ALL,”Turkish”);printf(“satir sayısını giriniz:”);scanf(“%d”,&m);printf(“sutun sayısını giriniz:”);scanf(“%d”,&n);printf(“matrisin elemanlarını giriniz:”);for(i=1;i<=m;i++)for(j=1;j<=n;j++)scanf("%d",&A[i][j]);for(i=1;iA[j][1]){ for(k=1;k<=n;k++){b=A[i][k];A[i][k]=A[j][k];A[j][k]=b;}}}}for(i=1;i<=m;i++){for(j=1;j<=n;j++)printf("%3d",A[i][j]);printf("na");}system(0);}*****************************************==>>İşte rekursif fonksiyonlarla hesaplanabilen faktöriyel kodları kes kopyala yapıştır İSTEDİGİN SAYİNİN FAKTORİYELİNİ HESAPLARekursif Fonksiyon İle Faktöriyel Hesaplama——————————————————————————–//faktöriyel#include #include main(){int faktoriyel(intn)int m;printf(“bır sayı girin”);scanf(“%d”,&m);printf(“sayının faktoriyeli=%d”,faktoriyel(m));getch();}int faktoriyel(int n){int i,f;f=1;for(i=0;i<=n;i++)f=f*f;return f;}==>>Asagidaki kodlarla kombinasyon hesplamamak artık cok kolay…c de kombinasyon hesabı——————————————————————————————-//kombinasyon#include#include#includeint i,n,r;int f1,f2,f3,k;char x,y;void ozyineleme(int x){printf(” nkodaman.org %dn”,x);if(x==1) {}else ozyineleme(x-1);}int main(){ setlocale(LC_ALL,”Turkish”);printf(“n=”);scanf(“%d”,&n);printf(“r=”);scanf(“%d”,&r);f1=1;f2=1;f3=1;for(i=1;i<=n;i++){f1=f1*i;if(i<=r) f2=f2*i;if(i<=(n-r)) f3=f3*i;}k=f1/(f2*f3);printf("nsonuç=%daaa",k);ozyineleme(5);getch();return 0;}==>>Rekursif fonksiyon yardımıyla sizde binom hesabi yapabilirsiniz…rekursif fonksiyonlu paskal üçgeni(binom)——————————————————————————————-//paskal üçgeni(binom)#include #includeint main(){setlocale(LC_ALL,”Turkish”);int power, n;int term = 1;unsigned coefficient = 1;printf(“n’i tamsayi olarak giriniz: “);scanf(“%d”, &n);printf(“nn = %d icin binom katsayilari ==> “, n);for (power = n; power >= 0; –power) {printf(“%u “, coefficient);coefficient = coefficient * power / term;++term;}printf(“n”);return 0;}*****************************************==>>Struct yapısıyla olusturdugum bu algoritma cok işinize yarayacagı gibi kendinizde algoritma kodlarına bakarak istekdikleriniz varsa ekleyebilirsinizC de adres kayıtları tutan,dosya içinde bilgi araması ve güncelleme….——————————————————————————————-#include #include #include struct kayit{char ad[20];char soyad[30];char adres[50];char tel[10];};FILE *dosya,*oku,*yaz;struct kayit kisi;void menu(){printf(“nn”);printf(“tt1- Kayit Eklen”);printf(“tt2- Kayit Aran”);printf(“tt3- Kayit listelen”);printf(“tt4- Kayit siln”);printf(“tt5- Kayit Duzeltn”);printf(“tt6- Cikisnn”);printf(“tseciminiz –>t(1/2/3/4/5/6)nn”);}void ekle(){dosya=fopen(“adres.txt”,”a”);printf(“ad girin : “);scanf(“%s”,&kisi.ad);printf(“soyad girin : “);scanf(“%s”,&kisi.soyad);printf(“adres girin : “);scanf(“%s”,&kisi.adres);printf(“tel girin : “);scanf(“%s”,&kisi.tel);fprintf(dosya,”%st%st%st%sn”,kisi.ad,kisi.soyad,kisi.adres,kisi.tel);fclose(dosya);}void ara(char adlar[20]){dosya=fopen(“adres.txt”,”r”);while(!(feof(dosya))){fscanf(dosya,”%s %s %s %s “,&kisi.ad,&kisi.soyad,&kisi.adres,&kisi.tel);if((strcmp(kisi.ad,adlar))==0){printf(“nadi :%s”,kisi.ad);printf(“nsoyadi :%s”,kisi.soyad);printf(“nadres :%s”,kisi.adres);printf(“ntel :%sn”,kisi.tel);}}fclose(dosya);}void listele(){dosya=fopen(“adres.txt”,”r”);printf(“adtsoyadtadresttelnn”);while(!(feof(dosya))){fscanf(dosya,”%s %s %s %s “,&kisi.ad,&kisi.soyad,&kisi.adres,&kisi.tel);printf(“%st%st%st%sn”,kisi.ad,kisi.soyad,kisi.adres,kisi.tel);}fclose(dosya);}void sil(char adlar[20]){oku=fopen(“adres.txt”,”r”);yaz=fopen(“tampon.txt”,”w”);while(!feof(oku)){fscanf(oku,”%st%st%st%sn”,kisi.ad,kisi.soyad,kisi.adres,kisi.tel);if(strcmp(adlar,kisi.ad)!=0)fprintf(yaz,”%st%st%st%sn”,kisi.ad,kisi.soyad,kisi.adres,kisi.tel);}fclose(oku);fclose(yaz);remove(“adres.txt”);rename(“tampon.txt”,”adres.txt”);}void duzelt(char adlar[20]){char ad[20],soyad[30],adres[50],tel[10];oku=fopen(“adres.txt”,”r”);yaz=fopen(“tampon.txt”,”w”);while(!feof(oku)){fscanf(oku,”%st%st%st%sn”,kisi.ad,kisi.soyad,kisi.adres,kisi.tel);if(strcmp(adlar,kisi.ad)==0){printf(“yeni ad giriniz : “);scanf(“%s”,&ad);printf(“yeni soyad giriniz : “);scanf(“%s”,&soyad);printf(“yeni adres giriniz : “);scanf(“%s”,&adres);printf(“yeni tel. giriniz : “);scanf(“%s”,&tel);strcpy(kisi.ad,ad);strcpy(kisi.soyad,soyad);strcpy(kisi.adres,adres);strcpy(kisi.tel,tel);}fprintf(ya
z,”%st%st%st%sn”,kisi.ad,kisi.soyad,kisi.adres,kisi.tel);}fclose(oku);fclose(yaz);remove(“adres.txt”);rename(“tampon.txt”,”adres.txt”);}int main(){char ad[20],secim;do{ menu();secim=getch();system(“cls”);switch(secim){case ‘1’:ekle(); break;case ‘2’:printf(“aranacak adi giriniz : “);scanf(“%s”,&ad); ara(ad); break;case ‘3’:listele(); break;case ‘4’:printf(“silinecek adi giriniz : “);scanf(“%s”,&ad); sil(ad); break;case ‘5’:printf(“guncellenecek adi giriniz : “);scanf(“%s”,&ad);duzelt(ad); break;case ‘6’:return 0; break;default: printf(“nYanlis secim yaptinizn”); break;}} while(secim!=’6′);getch();return 0;}