функције – задаци

О функцијама у програмском језику C можете прочитати у тексту Потпрограми. Овде ћемо урадити неколико задатака, да видите како то изгледа:

1. Дефинисати функцију која израчунава збир два цела броја. У главном програму, применом дате функције израчунати
а) збир првих n бројева

 #include<stdio.h>
 int zbir (int a, int b) /* definicija funkcije zbir */
 {
      int s; /* definisanje lokalne promenljive */
      s=a+b;
      return s; /* povratak u glavni program */
 }
 main()
 {
      int i,n,s;
      printf("unesi broj n");
      scanf("%d",&n);
      s=0;
      for(i=1;i<=n;i++)s=zbir(s,i); /* poziv funkcije */
      printf("zbir prvih n brojeva: %d",s);
 }

функција у овом програму може се написати и једноставније:

 #include<stdio.h>
 int zbir (int a, int b)
 {
      return a+b;
 }
 main()
 {
      int i,n,s;
      printf("unesi broj n");
      scanf("%d",&n);
      s=0;
      for(i=1;i<=n;i++)s=zbir(s,i);
      printf("zbir prvih n brojeva: %d",s);
 }

б) збир унетих n бројева

 #include<stdio.h>
 int zbir (int a, int b)
 {
      int s;
      s=a+b;
      return s;
 }
 main()
 {
      int i,n,s,a;
      printf("unesi broj n");
      scanf("%d",&n);
      s=0;
      for(i=1;i<=n;i++) 
      {
           printf("unesi broj");
           scanf("%d",&a);
           s=zbir(s,a);
      }
      printf("zbir prvih n brojeva: %d",s);
 }

2. Дефинисати функцију која израчунава растојање између две тачке задате координатама x и y. У главном програму унети координате три течке и израчунати површину троугла.

#include<stdio.h>
#include<math.h>
 double duzina(double x1, double y1, double x2, double y2) 
{
      double r;
      r=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
      return r;
 }
 main()
 {
      double x1,x2,x3,y1,y2,y3,a,b,c,s,P; 
      printf("unesi koordinate tri tacke"); 
      scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
      a=duzina(x1,y1,x2,y2);
      b=duzina(x2,y2,x3,y3);
      c=duzina(x3,y3,x1,y1);
      if((a+b>c)&&(b+c>a)&&(c+a>b))
      {
           s=(a+b+c)/2;
           P=sqrt(s*(s-a)*(s-b)*(s-c));
           printf("P=%8.2f",P);
      }
      else printf("pogresni podaci");
 }

3. Написати функцију која одређује максимум два цела броја. У главном програму одредити максимум 3 цела броја.

 #include<stdio.h>
 int max(int a, int b)
 {
      if (a>b)return a;
      else return b;
 }
 main()
 {
      int x,z,y,m;
      printf("unesi tri cela broja");
      scanf("%d%d%d",&x,&y,&z);
      m=max(x,y);
      m=max(z,m);
      printf("najveci od tri uneta broja je: %d",m);
 }

4. Написати функцију која израчунава обим круга полупречника r. У главном програму израчунати суму обима n унетих кругова.

 #define PI 3.14159
 #include<stdio.h>
 float obim(float r)
 {
      return 2*r*PI;
 }
 main()
 {
      float r,s;
      int i,n;
      printf("unesi n");
      scanf("%d",&n);
      s=0;
      for(i=1;i<=n;i++)
      {
           printf("unesi poluprecnik kruga");
           scanf("%f",&r);
           s=s+obim(r);
      }
      printf("zbir obima unetih krugova je: %8.2f",s);
 }

5. Написати функцију која израчунава реципрочну вредност броја (1/x). У главном програму израчунати

%d1%84%d0%be%d1%80%d0%bc%d1%83%d0%bb%d0%b01

#include<stdio.h>
 float rec(float x)
 {
      return 1/x;
 }
 main()
 {
      float x,s;
      int i,n;
      printf("unesi n");
      scanf("%d",&n);
      printf("unesi x");
      scanf("%f",&x);
      s=1;
      for(i=1;i<=n;i++)s=s+rec(i*x);
      printf("s=%8.2f",s);
 }

6. Написати функцију која израчунава n-ти степен броја x. У главном програму израчунати

%d1%84%d0%be%d1%80%d0%bc%d1%83%d0%bb%d0%b02

#include<stdio.h>
 float stepen(float x, int n)
 {
      int i;float p;p=1;
      for(i=1;i<=n;i++)p=p*x;
      return p;
 }
 main()
 {
      float x,s;
      int i,n;
      printf("unesi n");
      scanf("%d",&n);
      printf("unesi x");
      scanf("%f",&x);
      s=1;
      for(i=1;i<=n;i++)s=s+i/stepen(x,i);
      printf("s=%8.2f",s);
 }

7. Написати функцију која израчунава tgx. У главном програму израчунати%d1%84%d0%be%d1%80%d0%bc%d1%83%d0%bb%d0%b03

#include<stdio.h>
 #include<math.h>
 double tg(double x)
 {
      return sin(x)/cos(x);
 }
 main()
 {
      double x,y;
      printf("unesi x");
      scanf("%lf",&x);
      y=2*tg(2*(x/3)+7)-sin(sqrt(x*x+1));
      printf("y=%8.2f",y);
 }

 

Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s