Bu dersimizde text tipli dosya oluşturma ve dosyaya programlama kanalıyla veri yazmayı öğrenelim.
ikili arama ile eleman bulmayı öğrenelim.
Fark tipteki elemanlara farklı Switch Case sayesinde farklı mesai hesapları yapılarak maaş dağıtmayı sağlayan bir program yapalım.
Bu derste 100 elemanlı veriyi girdi olarak alıp sıralayıp ekrana yazdırmayı öğrenelim.
fonksiyonumuzun en büyük üsteli belirledikten sonra katsayıları belirliyeceğiz ve programımız bize bu denklemin kök aralığını bulacak.
Kod:
#include<iostream> #include<conio.h> #include<fstream> #include <string> using namespace std; int main() { string sozgu="Dosyalarla ilk calismamiz :)"; ofstream outDos("deneme.txt"); //Dosyayi olusturduk. outDos <<sozgu<<endl<<"Yazma islemi tamamlanmistir."; /* Daha once belirtilen sozel ifadeye yeni bir ifade ekleyip dosyaya yazdık. */ getch(); }
Kod:
#include<stdlib.h> #include<conio.h> #include<stdio.h> #define BOYUT 15 int ikiliArama(const int [],int,int,int); int main() { int anahtar,a[BOYUT],i,sonuc; for(i=0; i<BOYUT; i++) a[i]=i*2; printf("0 ile 28 arasinda bir sayi girinizn"); scanf("%d",&anahtar); sonuc=ikiliArama( a,anahtar,0,BOYUT-1); if(sonuc!=-1) printf("%d dizi elemani %d de bulundun",anahtar,sonuc); else printf("aradiginiz dizi elemani bulunamadin"); getchar(); system("pause"); return 0; } int ikiliArama(const int b[],int aramaDegeri,int enAlt, int enUst){ int orta; if(enUst==enAlt) return -1; orta=(enAlt+enUst)/2; if(b[orta]==aramaDegeri) return orta; else if(aramaDegeri>b[orta]) return ikiliArama(b,aramaDegeri,orta+1,enUst); else return ikiliArama(b,aramaDegeri,enAlt,orta-1); }
Kod:
#include<stdio.h> #include<stdlib.h> int main() { int kod,tutar,mudur_sayisi=0,vardiya_iscisi=0,komisyoncu=0,parcaci=0,haftalik_burut; int vardiya_saati,parca_sayisi,giris=-1,A[4],toplam_maas,i; for (i=0;i<4;i++) A[i]=0; while(giris==-1) { printf("lutfen calisanin kodunu giriniz!..n"); scanf("%d",&kod); switch(kod) { // bu işçi sabit ücret Alacak case 1: printf("haftalik sabit ucret alicaksinizn"); tutar=500; printf("tutar = 500$n"); mudur_sayisi++; A[1]=tutar+A[1]; break ; case 2: /*saatlik calisma ucreti 10 dolardir.40 saatin uzerındekı calisma saati ise 1.5 katıdır (15 doalr)*/ printf("vardiya saatini girinizn"); scanf("%d",&vardiya_saati); if(vardiya_saati>40) { tutar=(vardiya_saati-40)*15+(vardiya_saati*10)-((vardiya_saati-40)*10); vardiya_iscisi++; } else { tutar=vardiya_saati*10; vardiya_iscisi++; } printf(" tutar = %dn",tutar); A[2]=tutar+A[2]; break; case 3: /*haftalik satisin %5.7 sini komisyon olarak aliyor*/ printf("haftalik sabit ucretiniz 250$ dir.Haftalik satis tutarini girinizn"); scanf("%d",&haftalik_burut); tutar=250+(haftalik_burut*57/1000); printf("haftalik maasiniz = %d dirn",tutar); komisyoncu++; A[3]=tutar+A[3]; break; case 4: /*her parca 10 doalrdır*/ printf("Satilan parca sayisini girinizn"); scanf("%d",&parca_sayisi); tutar=parca_sayisi*10; parcaci++; printf("Satilan parca tutari = %d dirn",tutar); A[4]=tutar+A[4]; break; default: printf("yanlis bir deger girdinizn"); break; } printf("n calisan girmek icin -1 e sonuclari gormek icin -2 e basinizn"); scanf("%d",&giris); } toplam_maas=A[0]+A[1]+A[2]+A[3]; printf("calisan mudur sayisi =%dncalisan vardiyali isci sayisi =%dn",mudur_sayisi,vardiya_iscisi); printf ("calisan komisyoncu sayi =%dncalisan parca iscilerin sayisi =%dn",komisyoncu,parcaci); printf("dagitilan toplam maas = %d dirn",toplam_maas); system("pause"); return 0; }
Bu derste 100 elemanlı veriyi girdi olarak alıp sıralayıp ekrana yazdırmayı öğrenelim.
Kod:
/*100 elemanlı veriyi fonksiyon kullanarak ekrana yazdırma*/ #include<stdio.h> #include<conio.h> #define Boyut 5 **** elemanlarigir(int []); **** sirala(int []); **** ekranayaz(int []); int main(){ int A[Boyut]; elemanlarigir(A); sirala(A); ekranayaz(A); getch(); return 0; } **** elemanlarigir(int B[]){ for(int i=0;i<Boyut;i++){ printf("%d. Elemani giriniz: ",i+1); scanf("%d",&B[i]); } } **** sirala(int B[]){ for(int i=0;i<Boyut;i++) for(int j=i;j<Boyut;j++) if(B[i]<B[j]){ int gecici = B[i]; B[i]=B[j]; B[j]=gecici; } } **** ekranayaz(int B[]){ for(int i=1;i<=Boyut;i++){ printf("%-9dt",B[i-1]); if(i%5==0) printf("n"); } }
fonksiyonumuzun en büyük üsteli belirledikten sonra katsayıları belirliyeceğiz ve programımız bize bu denklemin kök aralığını bulacak.
Kod:
#include<stdio.h> #include<stdlib.h> #include<math.h> bool Fonksiyon(int der,int x[],float a,float b){ float toplam1=0.00,toplam2=0.00; int i; for(i=der;i>=0;i--){ toplam1=toplam1+(x[i]*(pow(a,i))); toplam2=toplam2+(x[i]*(pow(b,i))); } if(toplam1*toplam2<0) return true; else return false; } // program elle katsayı ve üstellerini belirledgimiz fonksiyonun kok aralıgını //buluyor. int main(){ float x1,x2,x3; int derece,katsayi,i,yarilanma; printf("nKoklerini Bulunmasi Istedigimiz Denklmin En Buyuk Derecesini Giriniz:"); scanf("%d",&derece); int a[derece]; for(i=derece;i>=0;i--){ printf("n%d Dereceden Degiskenin Katsayisini giriniz:",i); scanf("%d",&a[i]); } printf("nKoku Aramak Istedigini Ust Sinir Giriniz:"); scanf("%f",&x1); printf("nKoku Aramak Istediginiz Alt Sinir Giriniz:"); scanf("%f",&x2); printf("nFonksiyonun Kac KEz Yarilanacagni giriniz:"); scanf("%d",&yarilanma); if(Fonksiyon(derece,a,x1,x2)==true){ printf("nBu aralikta Fonksiyonun Bir Koku Vardir"); for(i=1;i<=yarilanma;i++){ x3=(x1+x2)/2; printf("nx1=%f x2=%f x3=%f",x1,x2,x3); if( Fonksiyon(derece,a,x3,x2)==true) x1=x3; else if(Fonksiyon(derece,a,x1,x3)==true) x2=x3; } } else printf("nFonksiyonun Bu aralilta Koku Yokturn"); printf("nn"); system("pause"); return 0; }
Son düzenleme: