PDA

View Full Version : PASCAL help فوری



saeed_flash
سه شنبه 28 آذر 1385, 02:19 صبح
سلام دوستان
من می خواستم یه برنامه با پاسکال بنویسم که یه عدد از کاربر بگیره و اونو بدون استفاده از کد
STR به رشته تبدیل کنه و برعکس یه رشته بگیره و بدون استفاده از VAL به عدد تبدیل کنه
منون میشم هرچه سریعتر کمکم کنید

با تشکر Saeed_flash

mzjahromi
سه شنبه 28 آذر 1385, 06:55 صبح
خوب شروع کنید برنامه رو بنویسید هر جا مشکلی داشتید بپرسید.
برای اولی باید اعداد رو یکی یکی جدا کنید با استفاده از mod و دستور while
شروع کنید ببینید کجاش به مشکل برخورد میکنید

Saeid59_m
سه شنبه 28 آذر 1385, 08:10 صبح
توی دلفی اگه رو نام یک تابع کلید کنترل رو بگیرید و کلیک کنید سورسش رو می بینید

شاید با کلید روی توابع Inttostr ‌و Strtoint به نتیجه مطلوب برسید .

موفق باشید

Mahyaa
یک شنبه 17 دی 1385, 20:30 عصر
اینجا معمولا کسی کل یه برنامه رو برای شما کامل انجام نمیده . مخصوصا که اگر دانشجویی باشه
:)

خودتون اگر شروع کردین به نوشتنش ولی براتون اشکالی پیش اومده ، بپرسید و سریع هم جواب میگیرید

موفق باشید

saeed_flash
یک شنبه 17 دی 1385, 21:35 عصر
اینجا معمولا کسی کل یه برنامه رو برای شما کامل انجام نمیده . مخصوصا که اگر دانشجویی باشه
:)

خودتون اگر شروع کردین به نوشتنش ولی براتون اشکالی پیش اومده ، بپرسید و سریع هم جواب میگیرید

موفق باشید

خیلی ممنون که به پست من توجه کردین ولی من هم نخواستم کل برنامه رو برای من بنویسین
من خواستم کمکم کنید که بنویسم نه اینکه به من بگید با while یا for یا mod بنویسم
فقط بهم بگید چه جوری میشه نوشت ممنون

mzjahromi
یک شنبه 17 دی 1385, 21:57 عصر
خیلی ممنون که به پست من توجه کردین ولی من هم نخواستم کل برنامه رو برای من بنویسین
من خواستم کمکم کنید که بنویسم نه اینکه به من بگید با while یا for یا mod بنویسم
فقط بهم بگید چه جوری میشه نوشت ممنون

ببین دوست عزیز:
شما حتی روی دستوراتی که نوشته شد فکر هم نکردی که با توجه به اونها لا اقل بخشی از برنامه ات رو بتونی بهش یه خورده فکر کنی. همین mod به تنهائی کافی بود که شما بتونی جهت و سمت و سوی پروژه ات رو پیدا کنی. یا حد اقل توجه شما به همین جواب این بود که بپرسید با اینا چجوری یا لا اقل اینکه خودتون یه بخش از راه رو یا تا اونجائی که به ذهنتون میرسه رو بگید.

اون دستوراتی رو که من نوشتم هدفم لیست کردن دستورات c نبود هدفم راهنمائی به شما بود.
در ضمن
عنوان سوالتون رو اصلاح کنید

saeed_flash
یک شنبه 17 دی 1385, 23:01 عصر
ببین دوست عزیز:
شما حتی روی دستوراتی که نوشته شد فکر هم نکردی که با توجه به اونها لا اقل بخشی از برنامه ات رو بتونی بهش یه خورده فکر کنی. همین mod به تنهائی کافی بود که شما بتونی جهت و سمت و سوی پروژه ات رو پیدا کنی. یا حد اقل توجه شما به همین جواب این بود که بپرسید با اینا چجوری یا لا اقل اینکه خودتون یه بخش از راه رو یا تا اونجائی که به ذهنتون میرسه رو بگید.

اون دستوراتی رو که من نوشتم هدفم لیست کردن دستورات c نبود هدفم راهنمائی به شما بود.
در ضمن
عنوان سوالتون رو اصلاح کنید

دوست عزیز من به اون دستورات فکر کردم ولی خوب به نتیجه ای نرسیدم که الان اومدم و دوباره پست و آوردم بالا
در ضمن من با Pascal می خوام برنامه بنویسم نه با C و این نظر لطف شما هست که جواب منو دادین
عنوان سوال چه مشکلی داره
اگه منظورمو در رابطه با پروژم بد بیان کردم بگید تا دوباره توضیح بدم ممنون میشم که کمکم کنید


با تشکر Saeed_flash

Mahyaa
یک شنبه 17 دی 1385, 23:47 عصر
برای تبدیل عدد به رشته کافیه ارقام یکی یکی خونده بشه و به کاراکتر تبدیل بشه .برای اینکه ارقام رو بتونی یکی یکی بخونی ، لازمه که از عمل تقسیم متوالی و باقیمانده و اینا استفاده کنی .
عدد رو به 10 تقسیم میکنیم ، باقیمانده تقسیم ، رقم یکان را نشان میدهد. رقم را به کاراکتر تبدیل میکنیم (بدون استفاده از Str) و جواب تقسیم قبلی را دوباره به 10 تقسیم میکنیم تا رقم بعدی آن بدست آید . تا زمانی که جواب تقسیم از صفر بزرگتر باشه ، تقسیمها را ادامه میدیم تا تمام ارقام را بدست بیاریم و دونه دونه به کاراکتر تبدیل کنیم. این میشه همون استفاده از While و Mod و اینا که آقای جهرمی گفتند.

موفق باشید.

saeed_flash
دوشنبه 18 دی 1385, 11:45 صبح
مهیا جان من متوجه شدم که چنین اتفاقی میافته
خوب با استفاده از یک متغیر String و گرفتن اعداد به صورت رشته و با دستور[ String [i و گرفتن تک تک کاراکتر ها و با استفاده از ord و بدست آوردن کد اسکی توانستم اعداد را از رشته به عدد تبدیل کنم ولی با این روش عدد ها رو تک به تک دارم یعنی مثلا عدد 342 رو یکی یکی می تونم بدست بیارم که هر کدوم رو جداگونه دارم و نمی توانم به عنوان یک عدد 3 رقمی باهاش کار کنم
و برای تبدیل عدد به رشته شما گفتی " رقم را به کاراکتر تبدیل میکنیم (بدون استفاده از Str)"
مهم اینجاست که چجوری من بدون استفاده از Str عدد رو به کاراکتر تبدیل کنم

با تشکر Saeed_flash

Mahyaa
دوشنبه 18 دی 1385, 12:20 عصر
مهم اینجاست که چجوری من بدون استفاده از Str عدد رو به کاراکتر تبدیل کنم

با تشکر Saeed_flash

خوب مثلا میتونی از تابع Chr استفاده کنی . با توجه به این که کد اسکی صفر برابر 48 هستش میتونی اون رو بدست بیاری . برای مثال عدد 4 رو داری برای تبدیل اون به کاراکتر مثلا میتونی بنویسی :


Var
AByte : Byte;
AChar : Char;
begin
AByte := 4;
AChar := chr(AByte + 48);
end;این راهیه که به ذهن من رسید .
موفق باشید

saeed_flash
دوشنبه 18 دی 1385, 22:02 عصر
مرسی درسته الان فقط تنها مشکلی که مونده اینه که وقتی که رشته رو به عدد تبدیل میکنم عدد ها رو تک تک دارم و اونها رو نمیتونم سر هم کنم و مثلا 325 رشته به عدد تبدیل بشه میشه
عدد 3
عدد 2
عدد 5
و نمی تونم به صورت عدد 325 داشته باشم اگه در این مورد هم کمکم کنی ازت ممنون میشم

با تشکر فراوان

dkhatibi
دوشنبه 18 دی 1385, 23:03 عصر
اینم که خیلی راحته
طول رشته را با استفاده از دستور strlen به دست آز.
با یک حلقه ی For عدد ها را به توانی مناسب از 10 برسون و با هم جمع کن.
مثلا


Num:=0;
For i :=Len downto 1 do
Num:=a[i]*10^(i-1)+NUM;


البته کد حالت الگوریتمی داره

saeed_flash
دوشنبه 18 دی 1385, 23:29 عصر
اینم که خیلی راحته
طول رشته را با استفاده از دستور strlen به دست آز.
با یک حلقه ی For عدد ها را در توانی مناسب از 10 برسون و با هم جمع کن.
مثلا


Num:=0;
For i :=Len downto 1 do
Num:=a[i]*10^(i-1)+NUM;


البته کد حالت الگوریتمی داره
خیلی ببخشید میشه بیشتر توضیح بدین

Mahyaa
دوشنبه 18 دی 1385, 23:51 عصر
شما وقی بدونید طول رشته چقدره ، می تونید بفهمید که عددتون چند رقمیه . طول رشته رو باتابع Length بدست میآرید و بقیه اش دقیقا همون کدی میشه که آقای خطیبی براتون نوشتند .
یعنی اگر فرض کنیم a رشته ورودی باشه که حاوی یک عدد به صورت رشته است :


Var
I , Num : Integer;
Len : Integer;
begin
Len := Length[a];
Num:=0;
For i :=Len downto 1 do
Num:=a[i]*10^(i-1)+NUM;
end;

dkhatibi
سه شنبه 19 دی 1385, 12:58 عصر
شما وقی بدونید طول رشته چقدره ، می تونید بفهمید که عددتون چند رقمیه . طول رشته رو باتابع Length بدست میآرید و بقیه اش دقیقا همون کدی میشه که آقای خطیبی براتون نوشتند .
یعنی اگر فرض کنیم a رشته ورودی باشه که حاوی یک عدد به صورت رشته است :


Var
I , Num : Integer;
Len : Integer;
begin
Len := Length[a];
Num:=0;
For i :=Len downto 1 do
Num:=a[i]*10^(i-1)+NUM;
end;

درسته ! فقط یک جا را توجه داشته باشید که [a[i کاراکتر است و اول طبق اون چیزی که دوستان گفتند باید به عدد تبدیل بشه بعد ضرب در توان 10 شود.(تو حلقه منظورمه!)