Tam Sürümünü Görmek İçin : C'de stringler ile toplama islemi
Arkadaslar merhaba,
C'de stringleri kullanarak cok buyuk 2 tamsayinin toplanmasi ile ilgili bilgi verebilir misiniz acaba ?
aslinda ben soyle bi kod yazdim ama, calismiyor :
#include<stdio.h>
#include<stdlib.h>
#define SIZE 1001
int main()
{
char num1[SIZE];
char num2[SIZE];
int x,y,sum;
while ( ( getchar () ) != EOF ) {
scanf("%d", &x);
strcpy(num1, "x");
scanf("%d", &y);
strcpy(num2, "y");
sum = x + y;
printf("%d",sum);
}
system("default");
return 0;
}
sekizbit
05/11/2007, 00:07
sayilari toplamak icin neden string (daha dogrusu char dizisi) yapma ihtiyaci duyuyosun ki ?
sayilari toplamak icin neden string (daha dogrusu char dizisi) yapma ihtiyaci duyuyosun ki ?
cok buyuk tamsayilari toplamak icin bu geregi duyuyorum tabi. int tipindeki sayilardan daha buyuk sayilar icin...
acehreli
05/11/2007, 23:49
Nasil bir islem yapacagin tam anlasilmiyor. Belki soyle bir sey: Elinde iki tane uzun sayi dizgisi olacak:
"12345"
"789"
Bunlari sonuncu karakterden baslayarak basa dogru toplayacak misin?
5+9=14 -> '4' elde var 1, vs.
Eger oyleyse, bu islemi yapan bir fonksiyor yazman gerekecek:
int topla(const char * birinci, const char * ikinci, char * sonuc)
{
int hata = 0;
/* ... */
/* Bir hata oldugunda sifirdan farkli bir deger dOndUrsun */
return hata;
}
Simdilik 'sonuc'ta yeterince yer oldugunu varsayabilirsin. Soyle kullanilabilir:
char num1[SIZE];
char num2[SIZE];
char sonuc[SIZE];
/* ... */
hata = topla(num1, num2, sonuc);
if (hata) {
printf("Hata\n");
} else {
printf("%s + %s = %s\n", num1, num2, sonuc);
}
Gosterdigin kodda bir kac not:
/* [Ali] Burada num1'e hep "x" sabit dizgisini
* kopyaliyorsun. Buradaki sabit "x"in giristen okudugun 'x'
* degiskeni ile bir ilgisi yok. */
strcpy(num1, "x");
scanf("%d", &y);
/* [Ali] Ayni hata burada da var */
strcpy(num2, "y");
/* [Ali] Eger calissaydi, burada iki tane int'in degerini topluyor
* olacaktin. Yani oyle uzun toplama islemi yapmiyorsun. */
sum = x + y;
Ali
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.