PDA

View Full Version : مبتدی: اشکال این برنامه چیه>>> تابع رو نمیشناسه



MrasoolF
دوشنبه 13 آذر 1391, 17: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, 17:40 عصر
ایراد این کد این هست که متغییر average را نباید به عنوان آرگومان تابع صدا بزنیم.کد رو به این صورت تغییر بده خطاش رفع میشه.[CPP][printf("Your average is: %4.2f \n" , AveFunc ( x,y,z ) );/CPP]

مسعود اقدسی فام
دوشنبه 13 آذر 1391, 17:50 عصر
شما مجموع سه صحیح رو تقسیم بر سه کردید. در نتیجه عملگر / فقط خارج قسمت رو در average قرار داده. برای اینکه تقسیم کامل انجام بشه باید حداقل یکی از طرفین تقسیم اعشاری باشه. مثلا به جای 3 عدد 3.0 رو بذارید. مهم نیست average خودش از نوع اعشاری هستش. اول محاسبه انجام می‌شه و بعد داخل این متغیر قرار می‌گیره. پس نقشی در محاسبه نداره که عملگر متوجه بشه تقسیم اعشاری باید انجام بده.

MrasoolF
دوشنبه 13 آذر 1391, 17:54 عصر
خوب چرا float برنمیگردونه؟؟؟ میانگین رو به صورت صحیح میده! میخوام فلوت باشه

fati63
دوشنبه 13 آذر 1391, 18:02 عصر
خوب چرا float برنمیگردونه؟؟؟ میانگین رو به صورت صحیح میده! میخوام فلوت باشه
این خط رو به این صورت تغییر بده
average =(float) (x+y+z)/3

مسعود اقدسی فام
دوشنبه 13 آذر 1391, 18:12 عصر
خوب چرا float برنمیگردونه؟؟؟ میانگین رو به صورت صحیح میده! میخوام فلوت باشه

توضیخ ندادم؟! وقتی دو طرف / صحیح هستن خارج قسمت برگشت داده می‌شه. حداقل یکی باید اعشاری باشه. یا همین روشی که ایشون نوشتن و یا همین که من نوشتم و گفتم به جای 3 بنویسید 3.0. این باعث می‌شه سه اعشاری در نظر گرفته بشه.