سلام
این برنامه رو که مینویسم, جواب 0.000000 میده, چرا؟؟
کد php:
#include<stdio.h>
main()
{
int x=8,y=10;
float k;
k= x/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);
}
سلام
باید بصورت زیر نوشته بشه:
البته احتمال 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 یا همون عدد صحیح
نوشتین...
اگه بخواین حین تقسیم، قسمت اعشاری هم محاسبه بشه، باید اعداد رو ممیز دار وارد کنید...
1/3.00
یا
1.00f/3.000f
یا
...
اون f آخری دقیقا یادم نیست برا چی بود
یه بار تو msdn خونده بودم... شاید مفهوم بی پایان بود رو داره...
کسی میدونه، به منم بگه...
موفق باشید
ممنون متوجه شدم.
یه سوال هم از اولویت ها دارم. ++ کی تاثیر میذاره و جواب k چه قدر باید بشه؟
x=8, y=10, m=5
k= x/y++ + y/--m
طبق اعداد زير جايگزين مي شه ، به مقدار y و m دقت كنيد.
++/-- وقتي قبل از متغيير بياد ، ++/-- اول اعمال مي شه به عدد و بعد عدد وارد محاسبه مي شه. مثل m--
عكس اين حالت هم موجب مي شه عدد در محاسبات وارد بشه و بعد از اينكه اثر كرد مقدار ++/-- بهش اعمال بشه ، مثل ++y
------------
@صالح
اون 0.01f رو من جايي چك نكردم ، اما از قبل اين تو ذهنم مونده كه دقت رقم اعشار رو تعيين مي كنه ( البته توي توابعي مثل sprintf و ... كه كار نمايش و اهمال رو انجام مي دن ( براي اعشاري ))
براي متغيير ها كه استفاده بشه ، احتمال خيلي زياد همونه كه اشاره كرديد ، يعني كل اعشار از جايي تا آخر 0 . اين منطقي مي ياد.
(۲۷-دى-۱۳۹۲, ۲۱:۰۶:۴۴)sharin نوشته است: [ -> ]اون 0.01f رو من جايي چك نكردم ، اما از قبل اين تو ذهنم مونده كه دقت رقم اعشار رو تعيين مي كنه ( البته توي توابعي مثل sprintf و ... كه كار نمايش و اهمال رو انجام مي دن ( براي اعشاري ))
براي متغيير ها كه استفاده بشه ، احتمال خيلي زياد همونه كه اشاره كرديد ، يعني كل اعشار از جايي تا آخر 0 . اين منطقي مي ياد.
function <cstdio> printf
f نشون میده داده اعشاری هست
عدد بعد از % نشون میده کلا چند رقم باید نمایش داده بشه (اون صفری که گذاشتید مشکل سازه
)
و عدد بعد از . نشون میده چند رقم باید دقت داشته باشه (01 که گزاشتید مشکل سازه
)
---
Operators in C and C++
به این بخش مراجعه شود
Operators in C and C++ -> Notes
ولی به طور کلی توضیح جناب مرتضی درست بود
(۲۷-دى-۱۳۹۲, ۲۲:۲۹:۵۸)behzady نوشته است: [ -> ] (۲۷-دى-۱۳۹۲, ۲۱:۰۶:۴۴)sharin نوشته است: [ -> ]اون 0.01f رو من جايي چك نكردم ، اما از قبل اين تو ذهنم مونده كه دقت رقم اعشار رو تعيين مي كنه ( البته توي توابعي مثل sprintf و ... كه كار نمايش و اهمال رو انجام مي دن ( براي اعشاري ))
براي متغيير ها كه استفاده بشه ، احتمال خيلي زياد همونه كه اشاره كرديد ، يعني كل اعشار از جايي تا آخر 0 . اين منطقي مي ياد.
function <cstdio> printf
f نشون میده داده اعشاری هست
عدد بعد از % نشون میده کلا چند رقم باید نمایش داده بشه (اون صفری که گذاشتید مشکل سازه)
و عدد بعد از . نشون میده چند رقم باید دقت داشته باشه (01 که گزاشتید مشکل سازه)
حالت هاي مختلف رو قبلا امتحان كرده بودم ، خيلي خوب هم جواب مي دهه
سر وقتش نياز باشه با تمام عالم وجود تباني مي كنم.
اما كلا هم تو Keil و هم codevision براي sprintf استفاده كردم و مشكلي نداشته
الان يكي از كد هام رو چك كردم 0.2f استفاده كرده بودم ، توي كدويژن هم فكر كنم مشابه چيزي رو كه بالا گفتم استفاده كرده بودم و جواب دادهه ، خيالت راحت
اما ممنون كه اصولش رو گفتي ، تا ابد كه نمي شه تباني كرد :d
(۲۷-دى-۱۳۹۲, ۲۱:۰۶:۴۴)sharin نوشته است: [ -> ]طبق اعداد زير جايگزين مي شه ، به مقدار y و m دقت كنيد.
++/-- وقتي قبل از متغيير بياد ، ++/-- اول اعمال مي شه به عدد و بعد عدد وارد محاسبه مي شه. مثل m--
عكس اين حالت هم موجب مي شه عدد در محاسبات وارد بشه و بعد از اينكه اثر كرد مقدار ++/-- بهش اعمال بشه ، مثل ++y
من فکر میکردم ++ باعث بشه 0.8 بشه 1.8 !!
اینطوری که شما گفتید جواب میشه 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);
}
پس اينجوري حساب كردهه!
در اين صورت بعد از چاپ اين ، اگر مقدار y رو چاپ كنيد ، عدد 11 رو بايد نشون بدهه.
كدها تون رو هم مي تونيد در تگِ CODE بذاريد كه بهتر مشخص بشه.