View Full Version : مبتدی: اشکال این برنامه چیه>>> تابع رو نمیشناسه
MrasoolF
دوشنبه 13 آذر 1391, 18:12 عصر
سلام. این کد من هست و کار برنامه هم واضحه: اما ارور رو نمیتونم رفع کنم.
// By: Rasool Fatemi
#include <stdio.h>
#include <conio.h>
float AveFunc( int x, int y, int z ){
float average;
average = (x+y+z)/3;
return (average);
}
void main (){
int x, y, z;
printf("Please enter 3 integers: \c");
scanf("%d%d%d" , &x , &y , &z);
printf("Your average is: %4.2f \n" , AveFunc ( average ) );
getch();
}
ممنون
fati63
دوشنبه 13 آذر 1391, 18:40 عصر
ایراد این کد این هست که متغییر average را نباید به عنوان آرگومان تابع صدا بزنیم.کد رو به این صورت تغییر بده خطاش رفع میشه.[CPP][printf("Your average is: %4.2f \n" , AveFunc ( x,y,z ) );/CPP]
مسعود اقدسی فام
دوشنبه 13 آذر 1391, 18:50 عصر
شما مجموع سه صحیح رو تقسیم بر سه کردید. در نتیجه عملگر / فقط خارج قسمت رو در average قرار داده. برای اینکه تقسیم کامل انجام بشه باید حداقل یکی از طرفین تقسیم اعشاری باشه. مثلا به جای 3 عدد 3.0 رو بذارید. مهم نیست average خودش از نوع اعشاری هستش. اول محاسبه انجام میشه و بعد داخل این متغیر قرار میگیره. پس نقشی در محاسبه نداره که عملگر متوجه بشه تقسیم اعشاری باید انجام بده.
MrasoolF
دوشنبه 13 آذر 1391, 18:54 عصر
خوب چرا float برنمیگردونه؟؟؟ میانگین رو به صورت صحیح میده! میخوام فلوت باشه
fati63
دوشنبه 13 آذر 1391, 19:02 عصر
خوب چرا float برنمیگردونه؟؟؟ میانگین رو به صورت صحیح میده! میخوام فلوت باشه
این خط رو به این صورت تغییر بده
average =(float) (x+y+z)/3
مسعود اقدسی فام
دوشنبه 13 آذر 1391, 19:12 عصر
خوب چرا float برنمیگردونه؟؟؟ میانگین رو به صورت صحیح میده! میخوام فلوت باشه
توضیخ ندادم؟! وقتی دو طرف / صحیح هستن خارج قسمت برگشت داده میشه. حداقل یکی باید اعشاری باشه. یا همین روشی که ایشون نوشتن و یا همین که من نوشتم و گفتم به جای 3 بنویسید 3.0. این باعث میشه سه اعشاری در نظر گرفته بشه.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.