PDA

View Full Version : سوال: جمع دو عدد n رقمی؟



ParsiKade
شنبه 13 اسفند 1390, 07:06 صبح
سلام،
دوستان باید برنامه‌ای بنویسم که دو عدد ۵۰ رقمی از کاربر دریافت کنه و جمعش رو نشون بده. از مطالبی که قبلاً توی انجمن گفته شده بود و راهنمایی‌های خود استاد استفاده کردم و کد رو نوشتم ولی مشکلش اینه که فقط وقتی جواب می‌ده که جمع دو عدد متناظر بالاتر از ۱۰ نباشه :لبخند:

هر تغییر دیگه‌ای که سعی می‌کنم توی t بدم برای اینکه اعداد انتقالی رو حساب کنه، نتیجه خیلی عجیب می‌شه.

کدی که نوشتم برای اعداد ۳ رقمیه البته:

#include <iostream>

using namespace std;
int main() {
int A[3]={0},B[3]={0},result[4],t=0;
cout << "Enter first number:";
for (int i=0 ; i<3 ; i++) {
cin >> A[i];
}
cout << "Enter second number:";
for (int i=0 ; i<3 ; i++) {
cin >> B[i];
}
for (int i=3 ; i>=0 ; i--) {

if (A[i]+B[i]+t >= 10) {
result [i] = A[i]+B[i]+t%10;
t = A[i]+B[i]+t/10;

} else {
result [i] = A[i]+B[i];
}

}

for (int i=0 ; i < 3 ; i++) {
cout << result [i];
}
return 0;
}


ممنون می‌شم راهنماییم کنید.

IamOverlord
شنبه 13 اسفند 1390, 08:15 صبح
اینو چک کن :

#include <iostream>
#include <conio.h>

using namespace std;
int main() {
int A[3]={0},B[3]={0},result[4]={0};
int t=0;
cout << "Enter first number:";
for (int i=0 ; i<3 ; i++)
{
cin >> A[i];
}
cout << "Enter second number:";
for (int i=0 ; i<3 ; i++)
{
cin >> B[i];
}
for (int i=2 ; i>=0 ; i--)
{

if (A[i]+B[i]+t >= 10)
{
result [i+1] = A[i]+B[i]+t%10;
t = A[i]+B[i]+t/10;
}
else
{
result [i+1] = A[i]+B[i]+t;
}

}
result[0]=t;
for (int i=0 ; i < 4 ; i++)
{
cout << result [i];
}
system("PAUSE");
return 0;
}

ParsiKade
شنبه 13 اسفند 1390, 17:37 عصر
سلام، متاسفانه این برنامه هم جواب درست نمی‌ده.

poia_si
یک شنبه 14 اسفند 1390, 11:20 صبح
این رو چک کن ببین جواب میده؟






#include <iostream.h>
#include <conio.h>


void main()
{
int x1[99]={0}, x2[99]={0}, out[99]={0},i=-1,i2=-1,count;
char temp[99];
cout<<"Enter the first number:"<<endl; //get 1st number
do //get it using getche()
{
i++;
temp[i]=getche();
}while(temp[i]!=13);
i--;
int ii=i;
for(int c=0;c<=i;C++‎‎‎‎‎) //convert 1st number from char to int
{
x1[c]=temp[ii]-48;
ii--;
}


ii=i;
cout<<"\n\nFirst number: ";
for(;ii>=0;ii--)
cout<<x1[ii];
cout<<endl;


cout<<"\nEnter the second number:"<<endl; //get 2nd number
do //get it using getche()
{
i2++;
temp[i2]=getche();
}while(temp[i2]!=13);
i2--;
ii=i2;
for(c=0;c<=i2;C++‎‎‎‎‎) //convert 2nd number from char to int
{
x2[c]=temp[ii]-48;
ii--;
}



cout<<"\n\nSecond number: ";
ii=i2;
for(;ii>=0;ii--)
cout<<x2[ii];


count=(i>i2)?i:i2; //recognize biggest array
int ex=0, temp2, temp3; //define some vars for temporary number and the extra
for(ii=0;ii<=count;ii++) //+ the arrays
{
temp2=(x1[ii]+x2[ii]);
temp2+=ex;
if(temp2<10)
out[ii]=temp2;
else
{
temp3=(temp2/10);
ex=temp3;
temp3*=10;
out[ii]=(temp2-temp3);
}


}


cout<<"\n\nResult:"<<endl;


for(;count>=0;count--)
cout<<out[count];



}

0935647
شنبه 18 آذر 1391, 17:19 عصر
ساده روان درست

#include <iostream>
#include <conio>
int main() {
int A[3]={0},B[3]={0},result[4]={0},t=0;

for (int i=0 ; i<3 ; i++) {
A[i]=0;
cout<<"ragham "<<i<<" add aval: " ;
cin >> A[i];
}
cout<<"___________________________________________" ;
cout << "\n";
for (int i=0 ; i<3 ; i++) {
B[i]=0;
cout<<"ragham "<<i<<" add dovom: " ;
cin >> B[i];
}
for (int i=2 ; i>=0 ; i--) {

if (A[i]+B[i]+t >= 10) {
result [i+1] = (A[i]+B[i]+t)%10;
t = A[i]+B[i]+t/10;

} else {
result [i+1] = A[i]+B[i];
t=0;
}

}
result [0]=t;

for (int i=0 ; i <= 3 ; i++) {
cout << result [i];
}

getch();
return 0;
}