X
تبلیغات
زولا

برنامه نویسان کامپیوتر

این وب سایت به منظور استفاده دانشجویان دانشگاه شهید بهشتی کرج ایجاد شده

جلسه هشتم

تابع

مثلا تابع pow(a,b) مقدار ab  را می دهد. برخی از توابع از پیش نوشته شده اند ولی همه توابع مورد نیاز افراد از پیش نوشته نشده است.

گاهی نیاز به نوشتن تابعی جدید احساس می شود.

 

شکل کلی یک تابع

نوع خروجی  نام تابع(نوع ورودی 1 نام ورودی 1,….)

{

بدنه تابع

}

توابع زیر چند ورودی دارند و چه خروجی ای برمی گردانند؟

int f1(){}

تابع فوق ورودی ندارد ولی یک عدد صحیح برمیگرداند.

double f2(int a,int b, int c){}

تابع فوق سه ورودی عدد صحیح می گیرد و یک عدد اعشاری از نوع double برمیگرداند.

 

char f3(char s1[],int k){}

تابع فوق یک آرایه از جنس کاراکتر(رشته) و یک عددصحیح میگیرد و  کاراکتر برمیگرداند.

void f4(int a,int b[]){}

تابع فوق یک عدد صحیح و یک آرایه از جنس عدد صحیح می گیرد ولی چیزی برنمی گرداند.

نکته: همه توابعی که مقداری برمی گردانند(به جز voidها) باید مقدار برگشتی خود را از طریق return برگردانند.

 

مثال یک: تابعی بنویسید که دو عدد را دریافت کند و حاصلضرب دوعدد را برگرداند.

nt zarb(int a,int b)

{

return a*b;

}

 

نحوه استفاده از تابع فوق:

void main()

{

cout<<zarb(234,11);

int m,n;

cout<<"\nenter 2 number:";

cin>>m>>n;

int x=zarb(m,n)

چون خروجی zarb از نوع int است پس نتیجه zarb(m,n) باید در متغیری از نوع int قرار گیرد.

}

مثال 2: تابعی بنویسید که دوعدد دریافت کند و عدد کوچکتر را برگرداند.

 

 

 

 

 

int getmin(int a,int b)

{

if (a<b)

return a;

else

return b;

}

 

 

 

 

شکل کل برنامه :

#include <iostream.h>

#include <conio.h>

int getmin(int a,int b)

{

if (a<b)

return a;

else

return b;

}

void main()

{

    cout<<"getmin(111,87)="<<getmin(111,87);

   cout<<"\n"<<"getmin(56,989)="<<getmin(56,989);

   cout<<"\n"<<"getmin(989,989)="<<getmin(989,989);

   int m,n;

   cout<<"\nenter 2 number:";

   cin>>m>>n;

   cout<<"\ngetmin("<<m<<","<<n<<")="<<getmin(m,n);

   getch();

}

تابعی بنویسید که یک عدد را دریافت کند و فاکتوریل آن عدد را بدهد.یعنی نتیجه fact(3) می شود1*2*3 یعنی 6

int fact(int n)

{

int t=1;

for(int i=1;i<=n;i++)

          t=t*i;

return t;

}

اگر در بخش main برنامه بنویسیم cout<<fact(4) مقدار 24 چاپ می شود.

 

مثال: تابعی بنویسید که مقدار ساعت و دقیقه و ثانیه را دریافت کند و کل زمان را بر حسب ثانیه برگرداند.

X=f1(2,14,20)

در x مقدار 2*3600+14*60+20 قرار گیرد.

int f1(int h,int m,int s)

{ return h*3600+m*60+s;

}

 

 

 

 

int f1(int h,int m,int s)

{

return h*3600+m*60+s;

}

void main()

{

int hour,min,sec;

cout<<"\nenter hour , minute, second:";

cin>>hour>>min>>sec;

          int x=f1(hour,min,sec);

          cout<<"\n zaman bar hasbe saneyeh="<<x;

getch();

}

تابعی بنویسید که سه عدد را بگیرد وعدد بزرگتر را پس دهد.

#include <iostream.h>

#include <conio.h>

int getmax(int a,int b,int c)

{        if(a>b && a>=c)

          return a;

else if (b>a && b>=c)

          return b;

else return c;

}

void main()

{

int a,b,c;

cout<<"\n enter the num=";

cin>>a>>b>>c;

cout<<"\n getmax("<<a<<" , "<<b<<" , "<<c<<")="<<getmax(a,b,c);

getch();  }

تابعی که یک رشته را دریافت کند و تعداد کارکترهای بزرگ آن را برگرداند.

int Upcase_number(char str1[])

{

int num=0;

for(int i=0;i<strlen(str1);i++)

          if (str1[i]>='A' && str1[i]<='Z')

                   num++;

return num;

}

 

 

 

 

 

#include <iostream.h>

#include <conio.h>

#include <string.h>

#include <stdio.h>

int string(char s1[40])

{

int num=0;

for (int i=0;i<=strlen(s1)-1;i++)

if (s1[i]>='A' && s1[i]<='Z')

num++;

return num;

}

void main()

{

char s2[40];

cout<<"yek reshte vared konid";

gets(s2);

cout<< string(s2);

getch();

}

تابعی که چهار عدد را بگیرد و میانگین آن اعداد را چاپ کند

#include <iostream.h>

#include <conio.h>

void avg(int a,int b,int c, int d)

{

float s=a+b+c+d ;

cout<< s/4 ;

}

void main()

{

int n,m,v,w;

cout<<"4 adad vared konid";

cin>>n>>m>>v>>w;

avg(n,m,v,w);

cout<<"miyangen 4 adad:"<<x;

getch();

}

تابعی بنویسید که یک عدد صحیح را دریافت کرده و اگر آن عدد اول بود یک و در غیر این صورت صفر را برگرداند.

int AyaAvvalHast(int n)

{int num=0; //tedade maghsoom

for(int i=1;i<=n;i++)

          if (n%i==0) num++;

if (num==2) return 1;

else

return 0;

}

void main()

{ int x;

cout<<"\nenter 1 number:";

cin>>x;

if(AyaAvvalHast(x)==1)

cout<<x<<" avval ast";

else

cout<<x<<" avval nist";

getch();

}

 

 

 

 

 

 

 

 

 

int IsPrime(int n)

{ int num=0;

for(int i=1;i<=n;i++)

          if (n%i==0)  num++;

if (num==2)

return 1;

else return 0;

}

 

 

 

#include <iostream.h>

#include <conio.h>

int AyaAvvalHast(int n)

{

int tedad=0; //تعداد مقسوم علیه ها

  for(int i=1;i<=n;i++)

          if(n%i==0)

                   tedad++;

if(tedad==2)

return 1;

else

return 0;

}

void main()

{

int a;

 cout<<"\nEnter 1 number:";

 cin>>a;

          if ( AyaAvvalHast(a)==1)

          cout<<"\n"<<a<<" avval hast";

  else

           cout<<"\n"<<a<<" avval nist";

 getch();

 }

 

تابعی بنویسید که آرایه ای از اعداد صحیح را دریافت کند و میانگین اعداد موجود در آرایه را بدهد.

float average(float A[],int size)

{float sum=0;

for(int i=0;i<size ;i++)

          sum+=A[i];

return sum/size;

}

void main()

{int X[100];

int size;

cout<<"\ntedade onasee arrayeh ra vared konid<100";

cin>>size;

for(int i=0;i<size;i++)

          {

          cout<<"\nenter number:";

          cin>>X[i];

}

cout<<"\n meyangin X="<<average(X,size);

getch();

}

 

5

8

13

 

 















float average(int A[],int m)

{

int sum=0;

for(int i=0;i<m;i++)

          sum+=A[i];

return (float)sum/m;

}

void main()

{

 int A[20];

int num;

cout<<"\n tedade onasore arayeh ra vared konid(<20)";

cin>>num;

for(int i=0;i<num;i++)

{

          cout<<"\n enter number "<<i;

          cin>>A[i];

}

float avg=average(A,num);

cout<<"\n meyangin adade dakhele arayeh="<<avg;

getch();

}

 

برنامه ای بنویسید که منویی به شکل زیر به کاربر نشان داده و در صورت انتخاب هر گزینه کار لازم را انجام دهد. عملیات لازم از طریق تابع انجام شود(تعداد عناصر آرایه توسط کاربر انجام شود):

1: input data

2: show min

3: show max

4: show average

5: show list

6: exit

دانلود فایل مثال ها

(*.cpp)