PDA

View Full Version : سوال: تبدیل عدد منفی به مثبت در رشته ها



farzad.sharifi
جمعه 31 خرداد 1387, 16:57 عصر
سلام دوستان
یه مشکلی است ممنون میشم کسی کمک کنه من دو عدد و بصورت رشته گرفتم مثلا عدد اول رو 12- و عدد دوم رو 2- می خوام دو عدد مثبت بشه بعد با هم جمع کنم (یعنی آرایه به آرایه) ، یه قطعه کد نوشتم که دو عدد رو مثبت میکنه (فکر کنم جای null دو رشته رو بهم میزنه)، اما در نهایت که دو عدد باهم جمع میشن جواب درست نمیده این حلقه ای که نوشتم دو عدد مثبت رو با هم جمع میزنه اما وقتی که دو عدد منفی باشن جمعشون درست نیست.


for(j=0;j<=(strlen(num1)-1);j++)
num1[j]=num1[j+1];
for(k=0;k<=strlen(num2)-1;k++)
num2[k]=num2[k+1];

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

len طول عدد بزرگتر

امکانش هست بشه آرایه های یک رشته رو در رشته ی جدیدی کپی کرد ؟ مثل دستور زیر


for(j=0;j<=strlen(num1)-1;j++)
no1[j]=num1[j+1];

آرایه ها یک دو سه تا (طول عدد num1 بعلاوه 1) را به ترتیب در آرایه های صفر یک و... no1 می توان ذخیره کرد؟

s++ 68-87
جمعه 31 خرداد 1387, 17:24 عصر
برای مثبت کردن یه رشته فقط کافیه یه ifبزارین برای چک کردن اولین کاراکتر ورودی که اگه منفی بود مثبتش کنه


if (num1[0]=='-')
num1[0]='+';

farzad.sharifi
جمعه 31 خرداد 1387, 17:41 عصر
برای مثبت کردن یه رشته فقط کافیه یه ifبزارین برای چک کردن اولین کاراکتر ورودی که اگه منفی بود مثبتش کنه

منظورم عدد مثبت بدون علامت بود مثل 12 نه 12+.
یعنی 12- رو به 12 تبدیل کنه بدون اینکه null رشته رو بهم بزنه ممنون

s++ 68-87
جمعه 31 خرداد 1387, 18:34 عصر
منظورم عدد مثبت بدون علامت بود مثل 12 نه 12+.
یعنی 12- رو به 12 تبدیل کنه بدون اینکه null رشته رو بهم بزنه

امکانش هست بشه آرایه های یک رشته رو در رشته ی جدیدی کپی کرد ؟ مثل دستور زیر

+ رو می تونستین رد کنین و همون جوری هم بنویسین.
اره اینجوریم امکانش هست

farzad.sharifi
جمعه 31 خرداد 1387, 18:57 عصر
char num1[12];
char no1[12];
for (i=0;i<12;++i)
{
num1[i]='0';
num2[i]='0';
}
gets(num1);
for(j=0;j<=strlen(num1)-1;j++)
no1[j]=num1[j+1];

شما کد بالا رو امتحان کنید ؟ مثلا ببینید 12- رو به 12 تبدیل میکنه ؟
من امتحان کردم اما error داد ممنون

s++ 68-87
جمعه 31 خرداد 1387, 19:25 عصر
راستش منم شک داشتم همچین چیزی باشه ولی امتحان کردم جواب داد(فکر می کردم باید با strcpy یا همچین چیزی نوشتش)
کد زیر رو ببینین احتمالا int j رو ننوشتین

#include <iostream.h>
#include <string.h>
#include <stdio.h>
int main()
{
char num1[12];
char no1[12];
gets(num1);
for(int j=0;j<=strlen(num1)-1;j++)
no1[j]=num1[j+1];
cout<<no1;
return 0;
}

Arash m
شنبه 01 تیر 1387, 00:54 صبح
سلام.
برات تابع حذف علامت رو نوشتم.
فقط کافیه توی برنامه اون رو صدا بزنی و رشته رو براش بفرستی تا علامت رو حذف کنه.
مثل:

function(string);این هم تابع :



void function(char *str){
if((*str=='-')||(*str=='+')){
while(*str){
*str=*(str+1);
str++;
}
}
}