Практические / Пр №9.Функции
.odtПрактическое занятие №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;
}
Задание на дом.
Написать программу решения систем линейных уравнений
второго порядка методом Крамера