دو عدد چهل رقمی

منیا

عضو جدید
کمک می خواستم تو نوشتن برنامه ای که دو عدد چهل رقمی رو دریافت کنه بعد از ورودی دریافت کنه که باید کدوم یکی از چهار عمل اصلی رو روی اون انجام بده
 

Sharif_

مدیر بازنشسته
شما شروع به نوشتن برنامه کنید هرجا مشکل داشتید دوستان کمک خواهند کرد
در حالت کلی از لیست پیوندی برای دریافت عدد استفاده کنید
برای مثال برای عملگر جمع از اخر لیست گرهها رو باهم جمع کنید و و گره های بعدی رو با carry قبلی تا اخر ادامه بدید
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
شما شروع به نوشتن برنامه کنید هرجا مشکل داشتید دوستان کمک خواهند کرد
در حالت کلی از لیست پیوندی برای دریافت عدد استفاده کنید
برای مثال برای عملگر جمع از اخر لیست گرهها رو باهم جمع کنید و و گره های بعدی رو با carry قبلی تا اخر ادامه بدید

با سلام،
عذر می خوام خیلی سختش نکردید؟ کار با آرایه که ساده تره! تعداد اعضای آرایه هم که مشخصه!
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
در مورد عمل ضرب یا فاکتوریل هم همین نظر را دارید !؟

با سلام،
ایشون نوشتن 4 عمل اصلی، پس فاکتوریل رو شامل نمی شه!
در مورد ضرب هم کار خیلی ساده ایه! هر خونه از B در همه ی خونه های A ضزب می شه و با carry قبلی جمع و با مقدار قبلی C هم جمع می شه. فقط با رفتن به خونه ی بعدی B عمل جمع از خونه ی نظیرش تو C شروع می شه!
نکته این که فکر می کنم این سؤال به درس مبانی برمی گرده که خیلی توش درمورد ساختمان داده ها صحبت نمی شه! پس فکر نمی کنم ایشون با لیست پیوندی آشنایی داشته باشن!
 

Sharif_

مدیر بازنشسته
با سلام،
عذر می خوام خیلی سختش نکردید؟ کار با آرایه که ساده تره! تعداد اعضای آرایه هم که مشخصه!
تا اونجایی که من میدونم هدف این سوال نحوه پیاده سازی نیست
کار با لیست های پیوندی هست
درضمن لیست های پیوندی چیز سختی نداره به نظر من
تعداد خانه های لیست رو هم براحتی میشه گرفت
 

منیا

عضو جدید
می خواستم ببینم می شه دو عدد 40رقمی رو به صورت رشته ای از ورودی دریافت کنم بعد از آخر دو رشته شروع کنم کپی کردن بعد بریزم تو یدونه کاراکتر بعد از تابع کتابخانه ای valاستفاده کنم اونو تبدیل به عدد کنم بعد روشون عملیاتی که خواسته شده انجام بدم وقتی هم که تموم شد از str استفاده کنم تا دوباره به رشته تبدیل شه. بعدش من تا حالا با لیست های پیوندی کار نکردم بلدشم نیستم در هر صورت خیلی ممنون از راهنمایتون
 

ali.dadash

عضو جدید
می خواستم ببینم می شه دو عدد 40رقمی رو به صورت رشته ای از ورودی دریافت کنم بعد از آخر دو رشته شروع کنم کپی کردن بعد بریزم تو یدونه کاراکتر بعد از تابع کتابخانه ای valاستفاده کنم اونو تبدیل به عدد کنم بعد روشون عملیاتی که خواسته شده انجام بدم وقتی هم که تموم شد از str استفاده کنم تا دوباره به رشته تبدیل شه. بعدش من تا حالا با لیست های پیوندی کار نکردم بلدشم نیستم در هر صورت خیلی ممنون از راهنمایتون


دوستان سلام،ضرب40 رقم در 40 رقم با آرایه ها اینه:
جواب میده؟!؟!؟!
یکی زحمت تستشو بکشه!!!:D

#include <iostream.h>
#include <conio.h>
int x[40],y[40],w[80],k[40][80];
void multiply(void);
void Sum(void);
void main(){
char t[40];
int i,j,z;
clrscr();
cout << "\n Enter a Number 1 :";
cin >> t;
z=19;
for(i=0;i<40 && t;i++);
for(i=i-1;i>=0;i--)
x[z--]=t-48;
cout << "\n Enter a Number 2 :";
cin >> t;
z=19;
for(i=0;i<40 && t;i++);
for(i=i-1;i>=0;i--)
y[z--]=t-48;
for(i=0;i<40;i++)
for(j=0;j<80;j++)
k[j]=0;

multiply();
getch();
}

void multiply(void){
int i,j,z,z1,tmp,c;
c=0;
z=39;
for(i=39;i>=0;i--)
for(j=39;j>=0;j--){
tmp=(x*y[j])+c;
c=0;
// cout<<tmp<<"\n";
while(tmp>=10){
c++;
tmp=tmp-10;
}
if(i==39)
k[j+40]=tmp;
else{
if(j==39){
z--;
z1=z;
}
k[z1--]=tmp;
}
}
c=0;
for(j=79;j>=0;j--){
for(i=0;i<40;i++)
tmp+=k[j];
tmp+=c;
c=0;
while(tmp>=10){
c++;
tmp-=10;
}
w[j]=tmp;
tmp=0;
}
for(i=0;i<80 && w==0 ;i++);
cout<<"\n\n Value zarb= ";
for(i;i<80;i++)
cout<<w;
Sum();
}

void Sum(void){
int i,tmp,c,s[40];
c=0;
for(i=39;i>=0;i--){
tmp=(x+y)+c;
c=0;
while(tmp>=10){
c++;
tmp=tmp-10;
}
s=tmp;
}
}
 
بالا