ايران ويج

نسخه‌ی کامل: اشکال در تقسیم
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
این برنامه رو که مینویسم, جواب 0.000000 میده, چرا؟؟
کد php:
#include<stdio.h>
main()
{
    
int x=8,y=10;
    
float k;
    
kx/y;
    
printf("%f",k);

(۲۷-دى-۱۳۹۲, ۱۷:۱۸:۱۲)zeinab.kh نوشته است: [ -> ]سلام
این برنامه رو که مینویسم, جواب 0.000000 میده, چرا؟؟
#include<stdio.h>
main()
{
int x=8,y=10;
float k;
k= x/y;
printf("%f",k);
}

سلام
باید بصورت زیر نوشته بشه:
کد:
k=(float)x/(float)y
البته احتمال float اولی نیاز نباشه...خودتون یه تستی بزنید...


موفق باشین
ممنون از جوابتون. فقط یکی بذارم کافیه!
ولی تو این یکی (float) هم گذاشتم فایده نداشت. جوابو 0.000000 درمی آره. باید چی کار کنم؟
کد php:
#include<stdio.h>
main()
{
float x;
x=(1/3);
printf("%f",x);

همونطور كه صالح خان گفتن اينطوري بنويسيد.
کد php:
main()
{
int x=8,y=10;
float k;
k=(float)x/y;
while(
1)
{
print(
"%0.01f",k);
delay_ms(500);
}

اگر جواب نداد ، يه متغيير از نوع char تعريف كنيد مثلا بهش مقدار 3 رو بديد و بعد print كنيد ، ببينيد درست دريافت مي كنه يا نه ... ( در اين حالت به جاي f% بايد u% بذاريد ) ، اگر درست دريافت نكرديد يا با متغيير اشتباهي داريد مي خونيد يا ارتباط سريال مشكل دارهه.
(۲۷-دى-۱۳۹۲, ۱۸:۳۲:۲۸)zeinab.kh نوشته است: [ -> ]ممنون از جوابتون. فقط یکی بذارم کافیه!
ولی تو این یکی (float) هم گذاشتم فایده نداشت. جوابو 0.000000 درمی آره. باید چی کار کنم؟

#include<stdio.h>
main()
{
float x;
x=(1/3);
printf("%f",x);
}

حرفای آقا مرتضی+ ...

شما 1/3 رو بصورت integer یا همون int یا همون عدد صحیحBiggrin نوشتین...
اگه بخواین حین تقسیم، قسمت اعشاری هم محاسبه بشه، باید اعداد رو ممیز دار وارد کنید...

1/3.00
یا
1.00f/3.000f
یا
...

اون f آخری دقیقا یادم نیست برا چی بود
یه بار تو msdn خونده بودم... شاید مفهوم بی پایان بود رو داره...
کسی میدونه، به منم بگه...


موفق باشید
ممنون متوجه شدم.
یه سوال هم از اولویت ها دارم. ++ کی تاثیر میذاره و جواب k چه قدر باید بشه؟
x=8, y=10, m=5
k= x/y++ + y/--m
کد:
k= x/y++ + y/--m
طبق اعداد زير جايگزين مي شه ، به مقدار y و m دقت كنيد.
کد:
k = 8/10 + 11/4

++/-- وقتي قبل از متغيير بياد ، ++/-- اول اعمال مي شه به عدد و بعد عدد وارد محاسبه مي شه. مثل m--
عكس اين حالت هم موجب مي شه عدد در محاسبات وارد بشه و بعد از اينكه اثر كرد مقدار ++/-- بهش اعمال بشه ، مثل ++y

------------
@صالح
اون 0.01f رو من جايي چك نكردم ، اما از قبل اين تو ذهنم مونده كه دقت رقم اعشار رو تعيين مي كنه ( البته توي توابعي مثل sprintf و ... كه كار نمايش و اهمال رو انجام مي دن ( براي اعشاري ))
براي متغيير ها كه استفاده بشه ، احتمال خيلي زياد همونه كه اشاره كرديد ، يعني كل اعشار از جايي تا آخر 0 . اين منطقي مي ياد.
(۲۷-دى-۱۳۹۲, ۲۱:۰۶:۴۴)sharin نوشته است: [ -> ]اون 0.01f رو من جايي چك نكردم ، اما از قبل اين تو ذهنم مونده كه دقت رقم اعشار رو تعيين مي كنه ( البته توي توابعي مثل sprintf و ... كه كار نمايش و اهمال رو انجام مي دن ( براي اعشاري ))
براي متغيير ها كه استفاده بشه ، احتمال خيلي زياد همونه كه اشاره كرديد ، يعني كل اعشار از جايي تا آخر 0 . اين منطقي مي ياد.
function <cstdio> printf
f نشون میده داده اعشاری هست
عدد بعد از % نشون میده کلا چند رقم باید نمایش داده بشه (اون صفری که گذاشتید مشکل سازهBiggrin)
و عدد بعد از . نشون میده چند رقم باید دقت داشته باشه (01 که گزاشتید مشکل سازهBiggrin)
---
Operators in C and C++
به این بخش مراجعه شود
Operators in C and C++ -> Notes
ولی به طور کلی توضیح جناب مرتضی درست بود
(۲۷-دى-۱۳۹۲, ۲۲:۲۹:۵۸)behzady نوشته است: [ -> ]
(۲۷-دى-۱۳۹۲, ۲۱:۰۶:۴۴)sharin نوشته است: [ -> ]اون 0.01f رو من جايي چك نكردم ، اما از قبل اين تو ذهنم مونده كه دقت رقم اعشار رو تعيين مي كنه ( البته توي توابعي مثل sprintf و ... كه كار نمايش و اهمال رو انجام مي دن ( براي اعشاري ))
براي متغيير ها كه استفاده بشه ، احتمال خيلي زياد همونه كه اشاره كرديد ، يعني كل اعشار از جايي تا آخر 0 . اين منطقي مي ياد.
function <cstdio> printf
f نشون میده داده اعشاری هست
عدد بعد از % نشون میده کلا چند رقم باید نمایش داده بشه (اون صفری که گذاشتید مشکل سازهBiggrin)
و عدد بعد از . نشون میده چند رقم باید دقت داشته باشه (01 که گزاشتید مشکل سازهBiggrin)

حالت هاي مختلف رو قبلا امتحان كرده بودم ، خيلي خوب هم جواب مي دهه Biggrin
سر وقتش نياز باشه با تمام عالم وجود تباني مي كنم. Biggrin
اما كلا هم تو Keil و هم codevision براي sprintf استفاده كردم و مشكلي نداشته Biggrin
الان يكي از كد هام رو چك كردم 0.2f استفاده كرده بودم ، توي كدويژن هم فكر كنم مشابه چيزي رو كه بالا گفتم استفاده كرده بودم و جواب دادهه ، خيالت راحت Biggrin

اما ممنون كه اصولش رو گفتي ، تا ابد كه نمي شه تباني كرد :d
(۲۷-دى-۱۳۹۲, ۲۱:۰۶:۴۴)sharin نوشته است: [ -> ]
کد:
k= x/y++ + y/--m
طبق اعداد زير جايگزين مي شه ، به مقدار y و m دقت كنيد.
کد:
k = 8/10 + 11/4

++/-- وقتي قبل از متغيير بياد ، ++/-- اول اعمال مي شه به عدد و بعد عدد وارد محاسبه مي شه. مثل m--
عكس اين حالت هم موجب مي شه عدد در محاسبات وارد بشه و بعد از اينكه اثر كرد مقدار ++/-- بهش اعمال بشه ، مثل ++y

من فکر میکردم ++ باعث بشه 0.8 بشه 1.8 !!Biggrin
اینطوری که شما گفتید جواب میشه 3.55 ؛ اما این برنامه k رو چاپ میکنه 3.3 , اشکالش چیه؟
کد php:
#include<stdio.h>
main()
{
int x=8,y=10,m=5;
float k;
k=(float) x/y++ +(float) y/--m;
printf("%f",k);

پس اينجوري حساب كردهه!
کد:
k = 8/10 + 10/4
در اين صورت بعد از چاپ اين ، اگر مقدار y رو چاپ كنيد ، عدد 11 رو بايد نشون بدهه.

كدها تون رو هم مي تونيد در تگِ CODE بذاريد كه بهتر مشخص بشه.