PDA

View Full Version : استفاده از تابع برای مربع عددی



majid_i68
یک شنبه 21 آبان 1391, 00:47 صبح
سلام
برای دوستان دانشجو برنامه ای نوشتم که که با استفاده از تابع مربع عددی را محاسبه میکند:لبخند:

#include<iostream.h>
#include<conio.h>
int square (int) ;
float square(float) ;
int main(){
int x=10;
float y=5.5;
clrscr();
cout<<square(x)<<endl;
cout<<square(y)<<endl;
getch();
return 0;
}
float square(float f)
{
cout<<"in float function:";
return f * f;
}
int square(int i)
{
cout<<"in int function:";
return i*i;
}

omidshaman
یک شنبه 21 آبان 1391, 15:36 عصر
من تو حکمت این برنامه موندم وقتی که قراره 2 تا مقدار ثابت بدی به برنامه دیگه چرا فانکشن ساختی؟ البته بماند که بهتر بود از template استفاده کنی
اون getch , clrscr هم استاندارد نیستن بهتره ازشون استفاده نکنی کمپایلرتو هم عوض کن خیلی قدیمیه!

#include<iostream>
using namespace std;
int main(){
int x=10;
float y=5.5;
cout<<x*x<<"\n"<<y*y<<endl;
cin.get();
}

Ananas
یک شنبه 21 آبان 1391, 15:59 عصر
چرا به نظر من تابع برای این کار لازمه. ببینید مثلا ما می خوایم یک عبارتی رو در خودش ضرب کنیم، دقت کنید که یک مقدار یا یک متغیر نیست بلکه یک عبارته مثلا x2 - x1. وقتی بخواید اینو تو خودش ضرب کنید بعترین کار اینه که اول مقدار عبارت حساب بشه بعد تو خودش ضرب بشه مثال :
s = (x2 - x1) * (x2 - x1);

s = x2 - x1;
s *= s;

این دو تا عبارت نتیجشون یکین ولی دومی بهتر و سریع تره. حالا فرض کنید به جای x2 - x1 عبارتی طولانی تر داشته باشیم اون وقت بیشتر تفاوت میکنه.

omidshaman
یک شنبه 21 آبان 1391, 19:46 عصر
چرا به نظر من تابع برای این کار لازمه. ببینید مثلا ما می خوایم یک عبارتی رو در خودش ضرب کنیم، دقت کنید که یک مقدار یا یک متغیر نیست بلکه یک عبارته مثلا x2 - x1. وقتی بخواید اینو تو خودش ضرب کنید بعترین کار اینه که اول مقدار عبارت حساب بشه بعد تو خودش ضرب بشه مثال :
s = (x2 - x1) * (x2 - x1);

s = x2 - x1;
s *= s;

این دو تا عبارت نتیجشون یکین ولی دومی بهتر و سریع تره. حالا فرض کنید به جای x2 - x1 عبارتی طولانی تر داشته باشیم اون وقت بیشتر تفاوت میکنه.
خوب اون که اره دلیلشم اینه که تو حالت اول کمپایلر احتمالا اون عبارت رو به شکل پسوندی در میاره ولی خوب این جا همون جوری که گفتم 2 تا مقدار ثابت بیشتر نیست اگر عبارت اون جوری بود حق با شما بود!
کسی نمیاد برای ضرب 2 تا"عدد"فانکشن بسازه... چون هم زمانش بیشتر از حالت اوله هم کدنویسیش هم حافظه مورد استفاده...!