PDA

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



aLiReZa hOsSeInI
شنبه 26 فروردین 1385, 17:49 عصر
دوستان من هرچی فکر میکم نتیجه دلخواه نگرفتم
صورت مسئله اینه
مثلا یه دو عدد 10 رقمی را بصورت رشته بخونیم و بعد این دو را باهم جمع و چاپ کنیم؟اونم بدون استفاده از فانکشنها و توابع جانبی یعنی خودمون بنویسیم اونم با کامپایلر سی.
ممنون میشم حداقل یه ایده ایی چیزی بدید.

MMMYousefMMM
شنبه 26 فروردین 1385, 18:15 عصر
از دو آرایه استفاده می کنی برای گرفتن دو رشته عدد چند رقمی
سپس از هر یک از خانه های آرایه ها را تبدیل به نوع عددی می کنی با استفاده از تابع atoi یا با کم کردن کاراکتر(عدد) از عدد 45
یکی یکی خانه های آرایه رو جمع می زنی و در آرایه دیگری قرار می دهی و اگر جمع بزرگتر یا مساوی 10 بود باقی مانده عدد بر 10 را در آرایه سوم و خارج قسمت رو در یک متغیر نگه می داری تا در جمع بعدی خانه های آرایه اون رو هم جمع بزنی این کار رو تا آخرین رقم انجام می دی.
در ضمن رشته عدد رو طوری وارد آرایه می کنی که مثل جمع معمولی بتونی جمع بزنی
البته از لیست پیوندی هم می تونی استفاده کنی که دردسرش کمتره

mamadgmail
شنبه 26 فروردین 1385, 20:35 عصر
سلام
شما می تونید 2 اشاره گر از نوع char تعریف کنید و عدد هاتون رو بخونید و بعد باید هر کدوم از رشته ها رو به عدد تبدیل کنید برای این کار هم شما می تونید باید یک متغییر مثلا از نوع int تعریف کنید و بعد در یک حلقه هر کدام از کاراکترها را با 45 جمع کنید و در در 10 به توان ارزش مکانی اون کارکتر ضرب کنید و حاصل رو به مقدار قبلی اون متغییر int اضافه کنی. البته راهی که دوستومن گفتن خیلی بهتر دلیلشم اینه که اگر عدد هر چقدر هم بزرگ باشه مشکلی از نظر نوع دادهای و سرریزی ایجاد نمی شه البته اینم بگم که من دلیلی برای استفاده از لیست پیوندی نمی بینم.

خوش باشید.

aLiReZa hOsSeInI
یک شنبه 27 فروردین 1385, 04:59 صبح
ممنون دوستان از راهنمایتون
خوب مشکل من بدست آوردن همین 45 بود و میخوام بدونم چرا با 45 جمع می کنیم؟

aLiReZa hOsSeInI
یک شنبه 27 فروردین 1385, 08:08 صبح
راستی با استفاده از 45 نمیشه؟
میشه یه کمی در مورد بدست اومدن این 45 توضیح بدید من خیلی امتحان کردم نشد.

mamadgmail
یک شنبه 27 فروردین 1385, 12:26 عصر
سلام
حق با شماست عدد 45 اشتباه هستش
ببنید کاراکتر 1 کد اسکی 48 رو داره بنابراین اگر ما کاراکتر 1 رو از 48 کم کنیم به عدد 1 می رسیم
شما هم باید 48 را از اعضای آرایه کم کنید تا به عدد معادل آن کاراکتر برسید.

خوش باشید.

aLiReZa hOsSeInI
یک شنبه 27 فروردین 1385, 17:10 عصر
عزیز ممنون
ولی یه مطلب
خوب وقتی عدد 1 داخل خانه ایی از آرایه ذخیره می شود کد اسکی اون 49 هست و طبق خود جدول اسکی کد 1 حتی بدون صورت ذخیره شدن کاراکتری 49 هستش.
خوب پس من طبق گفته شما باید اینطوری عمل کنم
اون کاراکتر را 48 ازش کم می کنیم مثلا 1 میشه 1 خوب این کد اسکی کاراکتر شده 1 و این باعث میشه که کامپایلر یا سیمبولی را چاپ میکند یا اخطار میده!!!
ممنون میشم
بشیتر توضیح بدید.
یک دنیا ممنون

Mahdi_Delphi
یک شنبه 27 فروردین 1385, 17:36 عصر
عزیز ممنون
ولی یه مطلب
خوب وقتی عدد 1 داخل خانه ایی از آرایه ذخیره می شود کد اسکی اون 49 هست و طبق خود جدول اسکی کد 1 حتی بدون صورت ذخیره شدن کاراکتری 49 هستش.
خوب پس من طبق گفته شما باید اینطوری عمل کنم
اون کاراکتر را 48 ازش کم می کنیم مثلا 1 میشه 1 خوب این کد اسکی کاراکتر شده 1 و این باعث میشه که کامپایلر یا سیمبولی را چاپ میکند یا اخطار میده!!!
ممنون میشم
بشیتر توضیح بدید.
یک دنیا ممنون

اشتباه نکن دوست من !
وقتی 48 تا ازش کم میکنی تبدیل میشه به یه عدد نه کاراکتر.
پس عدد 1 چاپ میشه نه کاراکتری که کد اسکی آن 1 هست.

Mahdi_Delphi
یک شنبه 27 فروردین 1385, 17:38 عصر
راستی اگه از cout استفاده کنی که مشکلی نداره اما اگه از printf استفاده میکنی c% باید بشه d%

mamadgmail
یک شنبه 27 فروردین 1385, 22:29 عصر
همونطوری که گفتن تبدیل می شه به عدد 1 نه کاراکتر 1 با Cout امتحان کن متوجه می شی

خوش باشید.

aakh1361
دوشنبه 28 فروردین 1385, 02:03 صبح
عزیز ممنون
ولی یه مطلب
خوب وقتی عدد 1 داخل خانه ایی از آرایه ذخیره می شود کد اسکی اون 49 هست و طبق خود جدول اسکی کد 1 حتی بدون صورت ذخیره شدن کاراکتری 49 هستش.
خوب پس من طبق گفته شما باید اینطوری عمل کنم
اون کاراکتر را 48 ازش کم می کنیم مثلا 1 میشه 1 خوب این کد اسکی کاراکتر شده 1 و این باعث میشه که کامپایلر یا سیمبولی را چاپ میکند یا اخطار میده!!!
ممنون میشم
بشیتر توضیح بدید.
یک دنیا ممنون

موقعی که عدد رو از ارایه می خونی 48 تا ازش کم کن وقتی خواستی نتیجه رو تو ارایه بنویسی48 تا بهش اضافه کن اینجوری نتیجه رو می تونی با Printf نمایش بدی در پایان رشته اعدادت 0 قرار بده نه صفر اسکی ! کد صفر که به صورت رشته نمایش داده بشه



Example:
char a;
char b;
char c;

a='5';
b='3';
c=(a-48)+(b-48);
c+=48;

printf("%c",c);

aLiReZa hOsSeInI
دوشنبه 28 فروردین 1385, 04:11 صبح
دوستان
من متوجه منظور شما هستم منتها کسی که این مسئله را طرح کرده محددیت استفده ازدستورات گذاشته اینه که نمی تونم از Cout استفاده کنم.
بازم از راهنمایی هایتون بسیار ممنونم.

Mahdi_Delphi
دوشنبه 28 فروردین 1385, 13:34 عصر
دوستان توضیح دادن ولی این مثال من رو هم اجرا کن و خروجیش رو ببین.

#include<conio.h>
#include<stdio.h>
int main()
{
char c='5';
clrscr();
printf("%c\n",c+1);
printf("%d\n",c+1);
getch();
return 0;
}
واضحه دیگه ؟

aLiReZa hOsSeInI
چهارشنبه 30 فروردین 1385, 05:40 صبح
ممنون دوستان
کاملا درسته و متوجه شدم.