İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

C Programlama'da Hesap Makinası

Bolu Beyi

0
İyinet Üyesi
Katılım
7 Nisan 2010
Mesajlar
2,895
Reaction score
36
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#define max 1000
int dizi1[max], dizi2[max], dizi3[max], dizi4[max], dizi5[max];
FILE *f1, *f2;
int basamak1, basamak2;

void temizle()
{ for(int i=0; i { dizi1=0;
dizi2=0;
dizi3=0;
dizi4=0;
dizi5=0;
}
}
void kontrol(FILE *f)
{ if(f==lisanssız)
{ printf("n Dosya acilmadi !");
exit(1);
}
}
void dosyaac()
{ f1=fopen("FILE1.txt","w"); kontrol(f1);
f2=fopen("FILE2.txt","w"); kontrol(f2);
}
void kullanici()
{ char kr;
dosyaac();
printf("n Birinci sayiyi giriniz..:");
while((kr=getch())!=13)
{ printf("%c",kr);
fwrite(&kr,sizeof(kr),1,f1);
}
printf("n Ikinci sayiyi giriniz..:");
while((kr=getch())!=13)
{ printf("%c",kr);
fwrite(&kr,sizeof(kr),1,f2);
}
fclose(f1);
fclose(f2);
}
void kontrol()
{ char kr,say=0,sayac;
f1=fopen("FILE1.txt","r");
f2=fopen("FILE2.txt","r");
fseek(f1, 0, SEEK_END);
basamak1=sayac=ftell(f1);
fseek(f1, 0, SEEK_SET);
while(sayac--)//1.sayi i‡in rakam kontrol
{ kr=getc(f1);
if(!((kr>='0') && (kr<='9')))
{ printf("n 1. sayinin %c hatali karakteri girilmistir.",kr);
say++;
}
}
fseek(f2, 0, SEEK_END);
basamak2=sayac=ftell(f2);
fseek(f2, 0, SEEK_SET);
while(sayac--)//girilen saylar i‡in rakam kontrol
{ kr=getc(f2);
if(!((kr>='0') && (kr<='9')))
{ printf("n 2. sayinin %c hatali karakteri girilmistir.",kr);
say++;
}
}
fclose(f1);
fclose(f2);
if(say!=0)
{ clrscr();
printf("n .:Sayilari Tekrar giriniz:.");
kullanici();
kontrol();
}
if(basamak1==0 || basamak2==0)
{ printf("n Sayilardan birisi girilmedi !");
getch();
clrscr();
kullanici();
kontrol();
}
}
//tek tek girilen elemalari diziye atama
void atama()
{ char kr;
int i, sayac;
f1=fopen("FILE1.txt","r");
f2=fopen("FILE2.txt","r");
fseek(f1, 0, SEEK_END);
sayac=ftell(f1);

for(i=0; i { fseek(f1, i*sizeof(char), SEEK_SET);
fread(&kr,sizeof(kr),1,f1);
dizi1[max-sayac+i]=kr-48;
}
fclose(f1);
fseek(f2, 0, SEEK_END);
sayac=ftell(f2);

for(i=0; i { fseek(f2, i*sizeof(char), SEEK_SET);
fread(&kr,sizeof(kr),1,f2);
dizi2[max-sayac+i]=kr-48;
}
fclose(f2);
}
//Sonuc g”ster
void goster(int i, int sayac)
{ if(i==sayac)
printf(" ");
else
goster(i+1,sayac);
printf("%d",dizi3[max-i]);
}
//toplama fonksiyonu
void topla()
{ int sayac=(basamak1>=basamak2)? basamak1: basamak2;
int i, j, sonuc=0, elde;
for(i=max-1; i>=max-sayac; i--)
{ sonuc+=dizi1+dizi2;
elde=sonuc/10;
dizi3=sonuc%10;
sonuc=elde;
}
dizi3=sonuc%10;
}
void cikar(int &x, int &y)
{ int sayac=(basamak1>=basamak2)? basamak1: basamak2;
int i, j, sonuc=0, elde;
if(basamak1>basamak2)
{ x=1;
y=-1;
}
else if(basamak1 { x=-1;
y=1;
}
else
{
for(i=0;i if(dizi1[max-sayac+i]!=dizi2[max-sayac+i])
break;
if(i!=sayac)
{
if(dizi1[max-sayac+i]>dizi2[max-sayac+i])
{ x=1;
y=-1;
}
else if(dizi1[max-sayac+i] { x=-1;
y=1;
}
}
else
{ x=1;
y=-1;
}
}
for(i=max-1; i>=max-sayac; i--)
{ sonuc+=x*dizi1+y*dizi2;
if(sonuc<0)
{ sonuc+=10;
elde=-1;
}
else
elde=0;
dizi3=sonuc;
sonuc=elde;
}
}
void kopyala(int array2[], int array1[])
{ int i;
for(i=0;i array2=array1;
}
void carp()
{ int say=0, a, b;
basamak1+=basamak2;
int sayac=(basamak1>=basamak2)? basamak1: basamak2;
if(basamak2==1 && dizi2[max-1]==0)
printf("n Sonuc..: 0");
else
{ kopyala(dizi5, dizi2);
kopyala(dizi2, dizi1);
while(1)
{ topla();
kopyala(dizi4, dizi3);
kopyala(dizi1, dizi5);
kopyala(dizi5, dizi2);
int i;
for(i=0;i dizi2=0;
dizi2=1;
cikar(a, b);
say=0;
for(i=0;i if(dizi3==0)
say++;
if(say==max-1 && dizi3[i-1]==1)
break;
kopyala(dizi1, dizi4);
kopyala(dizi2, dizi5);
kopyala(dizi5, dizi3);
}
kopyala(dizi3, dizi4);
printf("n Sonuc..:");
goster(1, sayac);
}
}
void main()
{ clrscr();
char scm;
int a, b, sayac;
kullanici();
kontrol();
temizle();
atama();
printf("n Yapmak istediginiz islemi seciniz..:");
printf("n +: Toplama");
printf("n -: Cikarma");
printf("n *: Carpma");
scm=getchar();
if(scm=='+')
{
topla();
sayac=(basamak1>=basamak2)? basamak1: basamak2;
printf("n Toplam..:");
goster(1, sayac);
}
else if(scm=='-')
{
cikar(a, b);
sayac=(basamak1>=basamak2)? basamak1: basamak2;
if(a>b)
printf("n Fark..:");
else
printf("n Fark..:-");
goster(1, sayac);
}
else if(scm=='*')
{
carp();
}
else
{
printf("n Yanlis secim yaptiniz !");
}
getch();
}

kaynak
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst