Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практические / Пр №9.Функции

.odt
Скачиваний:
6
Добавлен:
17.04.2015
Размер:
17.78 Кб
Скачать

Практическое занятие №9.Функции.

//Объявление параметров функции можно производить

//поcле заголовка до блока операторов

#include <stdio.h>

int sumnr(m)

int m;

{

int s;

for (int i=1;i<=m;i++) s+=i*i;

m=0;

return s;

}

main()

{

int n, ss;

printf("Vvesti N=");

scanf("%i",&n);

ss=sumnr(n);

printf("N= %i S=%i \n",n,ss);

return 0;

}

/Объявление и обращение к функции без параметров.

#include <stdio.h>

void sumnr2()

{

int n,s;

printf("Vvesti N=");

scanf("%i",&n);

s=0;

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

printf("N= %i S=%i \n",n,s);

}

main()

{

sumnr2();

return 0;

}

//Объявление функции прототипом с

//объявлением только типа параметра.

#include <stdio.h>

int sumnr(m);

main()

{

int n, ss;

printf("Vvesti N=");

scanf("%i",&n);

ss=sumnr(n);

printf("N= %i S=%i \n",n,ss);

return 0;

}

int sumnr(int m)

{

int s;

for (int i=1;i<=m;i++) s+=i;

return s;

}

//Вызов функции из функции.

#include <stdio.h>

#include <math.h>

float d(float x1, float y1, float x2, float y2);

float s(float x1,float y1, float x2, float y2, float x3, float y3);

main()

{

float x1,y1,x2,y2,x3,y3,ss;

printf("Vvesty koordinaty 3 tothek");

scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3);

ss=s(x1,y1,x2,y2,x3,y3);

printf("S= %f\n",ss);

return 0;

}

float d(float x1,float y1, float x2, float y2)

{

float r;

r= sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));

return r;

}

float s(float x1, float y1, float x2, float y2, float x3, float y3)

{

float p,f, a,b,c;

a=d(x1,y1,x2,y2);

b=d(x1,y1,x3,y3);

c=d(x2,y2,x3,y3);

p=(a+b+c)/2;

f=sqrt(p*(p-a)*(p-b)*(p-c));

return f;

}

Возвращение значений не через имя функции.

#include <stdio.h>

#include <math.h>

float d(float x1, float y1, float x2, float y2);

float s(float x1,float y1,float x2, float y2, float x3 , float y3,float &pp);

main()

{

float x1,y1,x2,y2,x3,y3,ss,pp;

printf("Vvesty koordinaty 3 tothek");

scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3);

pp=1;

ss=s(x1,y1,x2,y2,x3,y3,pp);

printf("S= %f P=%f \n",ss,pp);

return 0;

}

float d(float x1,float y1, float x2, float y2)

{

float r;

r= sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));

return r;

}

float s(float x1,float y1,float x2,float y2,float x3,float y3,float &pp)

{

float f,p, a,b,c;

a=d(x1,y1,x2,y2);

b=d(x1,y1,x3,y3);

c=d(x2,y2,x3,y3);

p=(a+b+c)/2;

f=sqrt(p*(p-a)*(p-b)*(p-c));

pp=2*p;

printf("p= %f PP= %f\n",p,pp);

return f;

}

Вычисление чисел фибоначи.

#include <stdlib.h>

#include <stdio.h>

int fibon(int n)

{int fn,fn1,fn2,k;

fn1=1;

fn=0;

for (k=1; k<=n; k++)

{

fn2=fn1;

fn1=fn;

fn=fn1+fn2;

printf("FN= %i\n",fn);

}

return fn;

}

main()

{

int n;

printf("Vvesti thislo thlenov\n");

scanf("%i", &n);

printf("FN= %i ",fibon(n));

}

Вычисление определенного интеграла

#include <stdlib.h>

#include <stdio.h>

float f(float x);

float integ(float a,float b, float h);

main()

{

float aa,bb,hh,s;

printf("Vvesti A B H\n");

scanf("%f%f%f",&aa,&bb,&hh);

s=integ(aa,bb,hh);

printf("%f ",s);

return 0;

}

float f(float x)

{

float s= x;

return s;

}

float integ(float a, float b, float h)

{

float x, s=0;

for( x=a; x<=b;x+=h)

s+=f(x);

s=s*h;

return s;

}

Вычисление корней квадратного уравнения

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

float rout(float a,float b, float c, float &x1,float &x2);

main()

{

float a,b,c,x1,x2,f;

printf("Vvesti koefizienty A , B , C \n");

scanf("%f %f %f", &a,&b,&c);

f=rout(a,b,c,x1,x2);

printf("Flag=%f X1= %f X2= %f\n",f,x1,x2);

}

float rout(float a, float b, float c, float &x1,float &x2)

{

float r,s,d;

d=b*b-4*a*c;

d=sqrt(abs(d));

r=-b/2/a;

s=d/2/a;

x1=r+s;

x2=r-s;

return d;

}

#include <stdio.h>

int sumf2(int n, int a[])

{

int s;

s=0;

for (int i=0;i<n;i++) {s+=a[i]; a[i]=1;}

n=0;

return s;

}

main()

{

int ss,m=10;

int b[10]={1,2,3,4,5,6,7,8,9,10};

ss= sumf2(m,b);

printf("ss= %i m= %i \n",ss,m);

for (int i=0;i<m;i++) printf("%i ",b[i]);

return 0;

}

#include <stdio.h>

void sumf3(int n, int &s, int a[])

{

s=0;

for (int i=0;i<n;i++) {s+=a[i]; a[i]=1;}

n=0;

}

main()

{

int ss,m=10;

int b[10]={1,2,3,4,5,6,7,8,9,10};

sumf3(m,ss,b);

printf("ss= %i m= %i \n",ss,m);

for (int i=0;i<m;i++) printf("%i ",b[i]);

return 0;

}

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

void cheng(int &m,int n);

int main()

{

int mm,nn;

mm=5;

nn=4;

cheng(mm,nn);

printf("MM= %i NN=%i\n",mm,nn);

return 0;

}

void cheng(int &m,int n)

{int k;

k=n;

n=m;

m=k;

printf("M= %i N=%i\n",m,n);

#include <stdio.h>

#include <stdlib.h>

int sumdiag(int n,int m, int a[10][10]);

main()

{

const int n=10, m=10;

int a[n][m];

int s,i,j;

for(i=0; i<n; i++)

for(j=0;j<m; j++)

a[i][j]=rand()/1000;

for(i=0; i<n; i++)

{

for(j=0;j<m; j++)

printf("%i ",a[i][j]);

printf("\n");

}

s=sumdiag(n,m,a);

printf("S= %i \n",s);

system("pause");

return 0;

}

int sumdiag(int n,int m,int a[10][10])

{

int i,j,k=0;

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

for (j=i+1;j<m;j++)

k+=a[i][j];

return k;

}

//Функция вычисления количества локальных экстремумов

#include <stdio.h>

#include <stdlib.h>

int locext(int n,int m,int a[10][10]);

main()

{

const int n=10, m=10;

int a[n][m];

int r,k,i,j;

for(i=0; i<n; i++)

for(j=0;j<m; j++)

a[i][j]=rand()/100;

for(i=0; i<n; i++)

{

for(j=0;j<m; j++)

printf("%i ",a[i][j]);

printf("\n");

}

r=locext(n,m,a);

printf("Локальных экстремумов= %i\n",r);

system("pause");

return 0;

}

int locext(int n,int m,int a[10][10])

{int k,i,j,s=0;

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

for (j=1;j<m-1;j++)

{

k=a[i][j];

if (k<a[i-1][j-1]&&k<a[i-1][j]&&k<a[i-1][j+1]&&k<a[i][j-1]&&k<a[i][j+1]&&k<a[i+1][j-1]

&&k<a[i+1][j]&&k<a[i+1][j+1]) {s++;printf("a[ %i ][ %i ]\n",i,j);}

}

return s;

}

//Написать функцию вычисления произведения

//положительных элементов массива

#include <stdio.h>

#include <stdlib.h>

int pm1(int n,int a[10]);

int main()

{

int r ,i;

const int n=10;

int a[n]={1,3,-5,1,-2,1,-1,3,8,4};

for (i=0; i<n; i++)

printf("%i ",a[i]);

r=pm1(n,a);

printf("S=%i\n",r);

system("pause");

return 0;

}

int pm1(int n,int a[10])

{

int i,s=1;

for (i=0;i<n;i++)

if (a[i]>0) s*=a[i];

return s;

}

//Сосчитать количество положительных элементов

//расположенных между мин и мах элементами

//оформить в виде функции

#include <stdio.h>

#include<stdlib.h>

int maxmin(int n,int a[]);

int main()

{

const int n=10;

int a[n]={1,3,-5,1,-2,1,-1,3,8,4};

int k=maxmin(n,a);

printf(" Pologitelnyx thisel= %i\n",k);

system("pause");

return 0;

}

int maxmin(int n,int a[])

{

int imax=0,imin=0,co=0;

for (int i=imax=imax=0;i<n; i++)

{

if (a[i]>a[imax]) imax=i;

if (a[i]<a[imin]) imin=i;

}

int ibeg=imax<imin?imax:imin;

int iend=imax<imin?imin:imax;

for (int i=ibeg;i<iend;i++)

if (a[i]>0) co++;

return co;

}

//Положительных чисел 3

#include <stdio.h>

#include <math.h>

int randx(int k)

{return (k*25173+13849)%65536/1000;}

main()

{

for (int i=1;i<=10;i++) printf("%i ",randx(i));

return 0;

}

//Функция сортировки массива методом пузырька

#include <stdio.h>

#include <stdlib.h>

int sortpus(int n,int a[]);

int main(void){

int n;

printf("Enter N=\n");

scanf("%i",&n);

int i,j,a[n],r;

for (i=0;i<n; i++) a[i]=rand()/327;

for(i=0;i<n;i++)

printf("%i ",a[i]);

printf("\n");

r=sortpus(n,a);

for(i=0;i<n;i++)

printf("%i ",a[i]);

system("pause");

return 0;

}

int sortpus(int n,int a[])

{int s,i,j;

for (j=1;j<=(n-1);j++)

for (i=0; i<n-j; i++)

if(a[i]>a[i+1]) {

s=a[i+1];

a[i+1]=a[i];a[i]=s;}

return 0;

}

Задание на дом.

Написать программу решения систем линейных уравнений

второго порядка методом Крамера