PDA

View Full Version : سوال: یک مشکل در تفریق دو عدد



farzad.sharifi
چهارشنبه 29 خرداد 1387, 17:22 عصر
سلام دوستان
یه برنامه تو c نوشتم که دو تا عدد را از هم کم میکنه دو عدد رو بصورت رشته گرفتم بعد برای اینکه به عدد تبدیل کنم هر آرایه دو عدد منهای 48 کردم .این دو شرط هم در ورود دو عدد تعریف شده یکی اینه که دو عدد باید مثبت باشند و دومی اینه که عدد اول طولش باید از عدد دوم بیشتر باشه بعد یه حلقه نوشتم نمیدونم کجاش مشکل داره ممنون میشم راهنمائی کنید. در ضمن طول عدد بزرگتر با len و اختلاف طول دو عدد با def تعریف شده .



def=strlen(num1)-strlen(num2);
len=(strlen(num1)>=strlen(num2) ? strlen(num1): strlen (num2));

for(i=len-1;i>=0;--i)
{
if((num1[i]-48)>(num2[i-def]-48))
result[i+1]=(num1[i]-48)-(num2[i-def]);
else
{
if(i==0)
result[i+1]=(num1[i]-48)-(num2[i-def]);
else
{
if((num1[i]-48)<(num2[i-def]-48))
result[i+1]=((num1[i]-48)+10)-(num2[i-def]-48);
num1[i-1]=num1[i-1]-1;
}
}
}

s++ 68-87
پنج شنبه 30 خرداد 1387, 09:25 صبح
نفهمیدم چی شده اینجا
ولی برای تفریق دو تا عدد که به صورت رشته گرفته شدن می تونین اونو کامل تبدیل کنین به int مثل کد زیر:



#include <iostream.h>
#include <string.h>
int char2int (char* a)
{
int b=0;
for(int i=0; i<strlen(a);i++)
{
b=(b*10)+a-48;
}
return b;
}
int main()
{
char a[5]="123";
cout<<char2int (a);
return 0;
}

و بعد دو تا عدد رو تفریق کنین اخرشم حاصل تفریق رو به رشته تبدیل کنین برای تبدیل به رشته باقی مانده عدد به 10 رو یکی یکی تو یه رشته ذخیره کنین برای مثال 123

123%10=3
123/10=12
12%10=2
12/10=1
1%10=1
[i]