PDA

نسخه کامل مشاهده نسخه کامل : برنامه معکوس کردن اعداد(اعشاری یا صحیح)



sia0368
30-11-2008, 16:55
#include <stdio.h>
#include <conio.h>
main()
{
float adad;
int ashar,sahih;
clrscr();
printf ("enter a num:");
scanf ("%f",&adad);
if (adad==(int)adad)//adad sahih ast?
{
sahih=adad;
while(1)
{
if (sahih/10==0)
{
printf ("%d",(int)sahih%10);
break;
}
printf("%d",(int)sahih%10);
sahih=sahih/10;
}//end while(1)
}//end if
else
{
sahih=(int)adad;
if (adad-sahih<=0.9)//tabdile ashari be sahih
ashar=(adad-sahih)*10;
else if (ashar<=0.99)
ashar=(adad-sahih)*100;
else if (ashar<=0.999)
ashar=(float)(adad-sahih)*1000;
while(2)
{
if (ashar/10==0)
{
printf ("%d",(int)ashar%10);
break;
}
printf("%i",(int)ashar%10);
ashar=ashar/10;
}//end while(2)
printf (".");
while(3)
{
if (sahih/10==0)
{
printf ("%d",(int)sahih%10);
break;
}
printf("%d",(int)sahih%10);
sahih=sahih/10;
}//end while(3)
}//end else
getch();
}
من این برنامه رو نوشتم ولی هرچی نگاه میکنم نمیفهمم مشکلش کجاست؟
این برنامه باید هر عدد مثبتی رو که کاربر وارد کرد معکوس کنه مثلا:
کاربر 21.85 رو که وارد کنه برنامه 58.12 رو نشون بده
اگه کلا این الگوریتم و راه حلش اشتباه است الگوریتم درستش رو هم بگید ممنون برای این 5شنبه میخوامش ممنون

sia0368
01-12-2008, 10:42
یعنی هیچ کس برنامه معکوس کردن اعداد بدون تابع و آرایه رو بلد نیست؟

Shahab_H
01-12-2008, 11:40
من برنامه رو کامل نخوندم ولی این قسمتش:
if (adad-sahih<=0.9)//tabdile ashari be sahih
ashar=(adad-sahih)*10;
else if (ashar<=0.99)
ashar=(adad-sahih)*100;
else if (ashar<=0.999)
اگر از این جا می خواین بفهمین که چند تا اعضار داره معلومه که درست نیست!
چون شرط ها با هم تداخل داره!
دلیل نداره عدد اگر از 0.9 کوچیکتر باشه 1 اعشار داشته باشه
یا مثلا از 0.99 کئچیک تر باشه شاید از 0.9 هم کوچیک تر باشه!‌ پس شرط ها درست نیست

sia0368
01-12-2008, 15:14
من برنامه رو کامل نخوندم ولی این قسمتش:
If (adad-sahih<=0.9)//tabdile ashari be sahih
ashar=(adad-sahih)*10;
else if (ashar<=0.99)
ashar=(adad-sahih)*100;
else if (ashar<=0.999)
اگر از این جا می خواین بفهمین که چند تا اعضار داره معلومه که درست نیست!
چون شرط ها با هم تداخل داره!
دلیل نداره عدد اگر از 0.9 کوچیکتر باشه 1 اعشار داشته باشه
یا مثلا از 0.99 کئچیک تر باشه شاید از 0.9 هم کوچیک تر باشه!‌ پس شرط ها درست نیست
راه حلی به ذهن شما میرسه؟

sia0368
01-12-2008, 15:15
من برنامه رو کامل نخوندم ولی این قسمتش:
If (adad-sahih<=0.9)//tabdile ashari be sahih
ashar=(adad-sahih)*10;
else if (ashar<=0.99)
ashar=(adad-sahih)*100;
else if (ashar<=0.999)
اگر از این جا می خواین بفهمین که چند تا اعضار داره معلومه که درست نیست!
چون شرط ها با هم تداخل داره!
دلیل نداره عدد اگر از 0.9 کوچیکتر باشه 1 اعشار داشته باشه
یا مثلا از 0.99 کئچیک تر باشه شاید از 0.9 هم کوچیک تر باشه!‌ پس شرط ها درست نیست
راه حلی به ذهن شما میرسه؟
یعنی مشکل اصلی فقط تو این قسمت هست؟

Shahab_H
01-12-2008, 22:38
خب به هر حال وقتی تعداد اعشار عدد معلوم نباشه قطعا جوابش درست نمیشه!
والا من الان خیلی فرصت ندارم فکر کنم روش ولی ترم پیش خودم این برنامرو نتونستم کامل بنویسم و آخر با string نوشتم و خداروشکر استاد نفهمید نمرمو دادD:
ولی ایشالا تو این هفته سعی می کنم روش فکر کنم

Shahab_H
01-12-2008, 23:01
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینم کلکی که من زده بودم!‌خروجی رو نشون استاددادم نفهمید!
البته من این برنامرو الان نوشتم شما خودتون 1 چک کنید درست باشه

mahdi7s
02-12-2008, 18:59
سلام

من هم قبلا چنين سوالي برام پيش اومده بود و كد زير رو نوشتم مي زارم شايد بدردتون خورد:5::5:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sia0368
03-12-2008, 13:07
سلام

من هم قبلا چنين سوالي برام پيش اومده بود و كد زير رو نوشتم مي زارم شايد بدردتون خورد:5::5:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
می بخشید معنی این خطهایی که قرمز کردم چیه؟استاد ما هنوز این چیزا رو یاد نداده.تازه به تعریف توابع رسیدیم

Shahab_H
04-12-2008, 00:32
اینا کدهای c++ ئه!
cin همون scanf و cout همون printf ئه!‌cout<<endl هم مثل
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید عمل می کنه و میره خط بعدی

cin.getline هم string رو از ورودی میگیره اون عدد جلوش هم تعیین می کنه حداکثر چندتا کاراکتر بگیره

Mehran NZ
04-12-2008, 01:46
تبلیغات نباشه ولی شما یه نگاهی به اینجا بنداز


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای اعداد صحیح هم که دیگه خیلی راحته


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید