PDA

Tam Sürümünü Görmek İçin : C'de stringler ile toplama islemi


sakruh
04/11/2007, 13:03
Arkadaslar merhaba,

C'de stringleri kullanarak cok buyuk 2 tamsayinin toplanmasi ile ilgili bilgi verebilir misiniz acaba ?


sakruh
04/11/2007, 13:19
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 ?

sakruh
05/11/2007, 06:59
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