سلام.
الگوریتمی میخوام که یه عدد اعشاری بخونه و تعداد رقم های اعشارش رو برگردونه
البته مطمئنم که میشه نیم ساعته درسش کرد چون چیز پیچیده ای نباید باشه
به هر حال منم سعی خودمو می کنم :لبخندساده
سلام.
الگوریتمی میخوام که یه عدد اعشاری بخونه و تعداد رقم های اعشارش رو برگردونه
البته مطمئنم که میشه نیم ساعته درسش کرد چون چیز پیچیده ای نباید باشه
به هر حال منم سعی خودمو می کنم :لبخندساده
میشه یه کمی بیشتر توضیح بدی؟نوشته شده توسط someCoder
ابزار برنامه نویسی؟
با دلفی اینجوریه
C:=0;
while Trunc(F)<F Do
Begin
f:=F*10;
c:=C+1;
End;
You never know what you can do until you try
اینو من برای مقلوب یه عدد گفته بودم:ابزار برنامه نویسی؟
آخه نگاه کنیداونطوری که به ما گفتن دستگاهی که الگوریتم های نوشته شده توسط ما رو میخونه فقط این کارها رو می فهمه:
چاپ کردن، انتساب، جمع، تفریق، ضرب، تقسیم، توان، جذر گرفتن با هر فرجه ای و خلاصه این کار های خیلی ابتدایی
مشکل من هم دقیقا همینه
اگه این ابزار بخواد یه زبون پیشرفته باشه که دیگه الگوریتم نویسی نمیشه، میشه برنامه نویسی.
من خودم با VB آشنا هستم و فکر نمی کنم ساختن اون با ویژوال بیسیک کار سختی باشه. چون توی زبون هایی که ما باهاشون سروکار داریم(چه وی بی، چه دلفی چه سی و خونواده ی سی و ....) توابع خیلی زیادی هستن که کار ما رو ساده می کنن
اما مشکل توی الگوریتم نویسی اینه که دستگاهی که الگوریتم ما رو می خونه هیچی حالیش نیس عیر از جمع و ضرب
با توجه به این مطلب لطفا جواب بدین
پس فرمت عددت چطوریه؟
You never know what you can do until you try
باورت نیمشه اما تا الان که فکر کنم 4، 5 جلسه ای از یاد گرفتن الگوریتم داره میگذره، تا حالا حتی یه بار هم کلمه ی "فرمت" تو کلاس گفته نشده.
ما فرض می کنیم که ورودی یه عدد هستش(حالا میاوته با اعشار یا بی اعشار باشه) که به سادگی میشه اعشاد داشتنش رو تعیین کرد:
تست می کنیم اگه براکت عدد با خودش برابر بود، اونوقت اعشار نداره
جواب اینجور سوالا گاهی یه کم فلسفی میشه. یه بار یه تاپیک زده شد برای نوشتن تابع قدر مطلق بدون استفاده از دستورات شرطی.... خیلی سرش بحث شد و نتیجه نهایی هم این بود که شدن یا نشدن این کار بسته به دیدگاه شما به دستورات سطح ماشین داره....
این مساله خاص هم، تا حدودی شبیه مثالیه که گفتم: وقتی دارید از توابع جزءصحیح، ترانک یا نظایر اینها استفاده می کنیم، باید توجه داشته باشیم که خود این توابع به طور داخلی دارن بر اساس فرمت ذخیره عدد در ماشین عمل می کنند. پس دقت کنیم که چه چیزهایی رو داریم مبنا قرار میدیم.
اگر عدد بصورت اعشاری ذخیره شده باشه دیگه دقیق نیست و تقریبی ذخیره میشه. بنابراین شمردن ارقام اعشاریش کار درستی نیست. برای همین گفتم عدد باید بصورت رشته ای گرفته بشه. یعنی فرض کنی یه رشته داری میگیری و تعداد کارکتر های بعد از اعشار رو بشمرینوشته شده توسط vbapr2005
Sepidar درسته. من هم تا حالا بهش فکر کرده بودم.
بعضی وقتها هم به این فکر می کنم که چجوری به زبون های برنامه نویسی مفهوم «یا» یا «و» رو می فهمونن تازه اونم با صفر و یک!!!! واقعا آدم پدرش در میاد.
someCoder از جواب تو هم میشکرم اما:
1.2 که دیگه تقریبی نیستش. دقیقهاگر عدد بصورت اعشاری ذخیره شده باشه دیگه دقیق نیست و تقریبی ذخیره میشه. بنابراین شمردن ارقام اعشاریش کار درستی نیست.
آخه اونجوری خیلی بدبختی داریم: باید بیایم سرچ کنیم و ممیز رو پیدا کنیم.برای همین گفتم عدد باید بصورت رشته ای گرفته بشه. یعنی فرض کنی یه رشته داری میگیری و تعداد کارکتر های بعد از اعشار رو بشمری
بعضیها ممکنه دقیق باشند اما بعضیها هم نیستند. این بخاطر تغییر مبنا هست. مثلا فرض کن 1/3 رو اگر بخوای بصورت اعشاری در مبنای 10 نشون بدی میشه 0.3333333333333 ولی همین عدد در مبنای 3 میشه (0.1). حالا تو هم وقتی یه عدد رو از مبنای 10 میبری تو مبنای 2 ممکنه نشه نشونش داد و بنابراین تقریبی ذخیره میشه.1.2 که دیگه تقریبی نیستش. دقیقه
اگر اسم یه حلقه while رو میذاری بدبختی، ما برنامه نویسها آدمهای بدبختی هستیم! ;) اما در این مورد راه دیگه ای نیستآخه اونجوری خیلی بدبختی داریم: باید بیایم سرچ کنیم و ممیز رو پیدا کنیم.
اون چیزی که کاربر باید بنویسه یه عدد اعشاری در مبنای 10 هه. یعنی نمیتونه بنویسه 1/3 (یعنی «یک سوم») و باید دقیقا یه عدد اعشاری بنویسه. اینجوری دیگه عددی که مینویسه دوره ی تناوب نداره حتی اگر هم بنویسسه 0.3333333333333 بالاخره این عدد تموم میشه و دقیقا برابر با یک سوم نیست. پس دیگه میتونیم تعداد اعشار رو بگیم.بعضیها ممکنه دقیق باشند اما بعضیها هم نیستند.
متاسفانه حلقه ی while ای وجود نداره. تا اونجایی که من میدونم باید از یه حلقه ی الگوریتمی (منظورم حلقه هایی هشست که تو الگوریتم داریم) استفاده کنیم. حالا فرض کن این حلقه رو (که کار آسونی هم هست) ایجاد کنیم. خب، توی حلقه چی میخوای بگی؟ چجوری میخوای تمام کاراکتر ها رو بررسی کنی؟ تا بعد اونا رو با "." مقایسه کنی؟اگر اسم یه حلقه while رو میذاری بدبختی، ما برنامه نویسها آدمهای بدبختی هستیم! ;) اما در این مورد راه دیگه ای نیست
الگوریتم برگردوندن تعداد اعشار یه عدد اینه:
1 - n را بخوان
2 - i -> 1 , 0 -> A
3 - اگر براکت n با n برابر است چاپ کن "صفر" و توقف کن
4 - n - [n] -> A
5 - اگر براکت A*(10^i) با خود A*(10^i) برابر است آنگاه چاپ کن i را و توقف کن
6 - i + 1 -> i و برو به 5
به همین سادگی!
این بچه بازی ها را بگذارید کنار. دنبال کار کردن با کتابخانه های بالاتر همانند Directx9c و ...... باشد.
Thanks.
عزیز دل برادر تو فقط نباید از چیزایی که بقیه ساختن استفاده کنی (یعنی حداقل من و اونایی که تو فروم الگوریتم تاپیک میدن نمیخوایم اینجوری باشیم)نوشته شده توسط HosseinOjvar
salam
age mishe yek barname be zabane paskal mikhastam dar morede algoritmhaye fifo , sjf , srt , fcfs , rr , baraye 5 prases ke zamane khedmateshan be tartib 3, 6,4,5,2 astva zamane vorodeshan be tartib 0,2,4,6,8 ast. khaheshan javab bedin
سلام جاهدنوشته شده توسط jahednarimani
1) من متاسفانه از الگوریتم های fifo , sjf , srt , fcfs , rr چیزی نمیدونم
2) لطفا بعدا دیگه فارسی بنویس
3) لطفا یه سوال جدید رو تو یه تاپیک جدید مطرح کن که عنوان اون تاپیک متناسب با سوالی که توش پرسیدی باشه
دوست عزیز ، اینم برنامه شما که تو سی پلاس پلاس نوشتم !!! نکته اش اینه که عدد رو
بصورت String (رشته ای) در نظر میگیره ، و تا هر چند رقم اعشار جواب میده !!!!
موفق و پیروز باشید !!!!
#include <iostream>
#include <conio>
typedef char string[100];
int Tedad_Ashar(string str){
int j,k=0;
for(int i=0;str[i]!=NULL;i++){
if(str[i]=='.')
{
j=i+1;
for(int p=j;str[p]!=NULL;p++)
k++;
}
}//end of for
return k;
}
int main(){
string num;
cout<<"Enter Your Number\n\n";
cin.getline(num,100);
cout<<"\n";
cout<<" Tedade Arghame Ashar = "<<Tedad_Ashar(num);
getch();
}
هوالحکیم. سلام. می شه بگویید خروجی برنامه شما به ازای aaa.bbbb چیست؟ پس به این سادگی هم نیست! یا علی حق نگهدارتون
====================================
دوست عزیز ، من فقط زود برنامه واسه دوستمون بصورت آزمایشی نوشتم ، و exception
های اونو دیگه بررسی نکردم !!! و نمیدونم منظورتونچیه ؟؟؟ این برنامه خیلی ساده تر از اون چیزیه که بشه روش وقت گذاشتپس به این سادگی هم
نیست!
میتونستم با اشاره گرها اینو پیاده کنم ، که خیلی کاملتر میشد ، ولی گفتم وقت نداشتم ،
در ضمن همیشه برنامه های ما برنامه نویس ها یک اشکالات جزیی در مورد کنترل استثنا ها
دارند ، دوست عزیز ما مایکروسافت نیستیم که 70- 80 مهندس بیان رو یه پروژه کار کنند ، و یه
کاری عاری از اشتباه انجام بدهند !!! پس زیاد سخت گیر نباش دوست عزیز !!!!