سلام دوستان
من می خواستم یه برنامه با پاسکال بنویسم که یه عدد از کاربر بگیره و اونو بدون استفاده از کد
STR به رشته تبدیل کنه و برعکس یه رشته بگیره و بدون استفاده از VAL به عدد تبدیل کنه
منون میشم هرچه سریعتر کمکم کنید
با تشکر Saeed_flash
سلام دوستان
من می خواستم یه برنامه با پاسکال بنویسم که یه عدد از کاربر بگیره و اونو بدون استفاده از کد
STR به رشته تبدیل کنه و برعکس یه رشته بگیره و بدون استفاده از VAL به عدد تبدیل کنه
منون میشم هرچه سریعتر کمکم کنید
با تشکر Saeed_flash
خوب شروع کنید برنامه رو بنویسید هر جا مشکلی داشتید بپرسید.
برای اولی باید اعداد رو یکی یکی جدا کنید با استفاده از mod و دستور while
شروع کنید ببینید کجاش به مشکل برخورد میکنید
You never know what you can do until you try
توی دلفی اگه رو نام یک تابع کلید کنترل رو بگیرید و کلیک کنید سورسش رو می بینید
شاید با کلید روی توابع Inttostr و Strtoint به نتیجه مطلوب برسید .
موفق باشید
اینجا معمولا کسی کل یه برنامه رو برای شما کامل انجام نمیده . مخصوصا که اگر دانشجویی باشه
:)
خودتون اگر شروع کردین به نوشتنش ولی براتون اشکالی پیش اومده ، بپرسید و سریع هم جواب میگیرید
موفق باشید
ببین دوست عزیز:
شما حتی روی دستوراتی که نوشته شد فکر هم نکردی که با توجه به اونها لا اقل بخشی از برنامه ات رو بتونی بهش یه خورده فکر کنی. همین mod به تنهائی کافی بود که شما بتونی جهت و سمت و سوی پروژه ات رو پیدا کنی. یا حد اقل توجه شما به همین جواب این بود که بپرسید با اینا چجوری یا لا اقل اینکه خودتون یه بخش از راه رو یا تا اونجائی که به ذهنتون میرسه رو بگید.
اون دستوراتی رو که من نوشتم هدفم لیست کردن دستورات c نبود هدفم راهنمائی به شما بود.
در ضمن
عنوان سوالتون رو اصلاح کنید
You never know what you can do until you try
دوست عزیز من به اون دستورات فکر کردم ولی خوب به نتیجه ای نرسیدم که الان اومدم و دوباره پست و آوردم بالا
در ضمن من با Pascal می خوام برنامه بنویسم نه با C و این نظر لطف شما هست که جواب منو دادین
عنوان سوال چه مشکلی داره
اگه منظورمو در رابطه با پروژم بد بیان کردم بگید تا دوباره توضیح بدم ممنون میشم که کمکم کنید
با تشکر Saeed_flash
برای تبدیل عدد به رشته کافیه ارقام یکی یکی خونده بشه و به کاراکتر تبدیل بشه .برای اینکه ارقام رو بتونی یکی یکی بخونی ، لازمه که از عمل تقسیم متوالی و باقیمانده و اینا استفاده کنی .
عدد رو به 10 تقسیم میکنیم ، باقیمانده تقسیم ، رقم یکان را نشان میدهد. رقم را به کاراکتر تبدیل میکنیم (بدون استفاده از Str) و جواب تقسیم قبلی را دوباره به 10 تقسیم میکنیم تا رقم بعدی آن بدست آید . تا زمانی که جواب تقسیم از صفر بزرگتر باشه ، تقسیمها را ادامه میدیم تا تمام ارقام را بدست بیاریم و دونه دونه به کاراکتر تبدیل کنیم. این میشه همون استفاده از While و Mod و اینا که آقای جهرمی گفتند.
موفق باشید.
مهیا جان من متوجه شدم که چنین اتفاقی میافته
خوب با استفاده از یک متغیر String و گرفتن اعداد به صورت رشته و با دستور[ String [i و گرفتن تک تک کاراکتر ها و با استفاده از ord و بدست آوردن کد اسکی توانستم اعداد را از رشته به عدد تبدیل کنم ولی با این روش عدد ها رو تک به تک دارم یعنی مثلا عدد 342 رو یکی یکی می تونم بدست بیارم که هر کدوم رو جداگونه دارم و نمی توانم به عنوان یک عدد 3 رقمی باهاش کار کنم
و برای تبدیل عدد به رشته شما گفتی " رقم را به کاراکتر تبدیل میکنیم (بدون استفاده از Str)"
مهم اینجاست که چجوری من بدون استفاده از Str عدد رو به کاراکتر تبدیل کنم
با تشکر Saeed_flash
خوب مثلا میتونی از تابع Chr استفاده کنی . با توجه به این که کد اسکی صفر برابر 48 هستش میتونی اون رو بدست بیاری . برای مثال عدد 4 رو داری برای تبدیل اون به کاراکتر مثلا میتونی بنویسی :
Varاین راهیه که به ذهن من رسید .
AByte : Byte;
AChar : Char;
begin
AByte := 4;
AChar := chr(AByte + 48);
end;
موفق باشید
مرسی درسته الان فقط تنها مشکلی که مونده اینه که وقتی که رشته رو به عدد تبدیل میکنم عدد ها رو تک تک دارم و اونها رو نمیتونم سر هم کنم و مثلا 325 رشته به عدد تبدیل بشه میشه
عدد 3
عدد 2
عدد 5
و نمی تونم به صورت عدد 325 داشته باشم اگه در این مورد هم کمکم کنی ازت ممنون میشم
با تشکر فراوان
اینم که خیلی راحته
طول رشته را با استفاده از دستور strlen به دست آز.
با یک حلقه ی For عدد ها را به توانی مناسب از 10 برسون و با هم جمع کن.
مثلا
Num:=0;
For i :=Len downto 1 do
Num:=a[i]*10^(i-1)+NUM;
البته کد حالت الگوریتمی داره
شما وقی بدونید طول رشته چقدره ، می تونید بفهمید که عددتون چند رقمیه . طول رشته رو باتابع 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;