Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Dop_Prog_3cem_2010.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
874.5 Кб
Скачать

2.9 Функції та структури

Приклад 2.23

#include <string.h>

#include <stdio.h>

struct STUD{char name[20];int age;};

void f1(STUD a)

{strcpy(a.name,"Петров");

a.age+=1;

printf("%s %d\n",a.name,a.age); }

STUD f2(STUD b,STUD с)

{if(b.age>с.age) return b; return с;}

int main()

{STUD st1={"Иванов",19},st2={"Орлов", 22},st3;

f1(st1);

printf("%s %d\n",st1.name,st1.age);

st3=f2(st1,st2);

printf("%s %d\n",st3.name,st3.age);

return 0;}

Приклад 2.24

#include <string.h>

#include <stdio.h>

struct STUD{char name[20];int age;};

void f3(STUD *p)

{strcpy(p->name,"Сидоров");

p->age=21;

printf("%s %d\n", p->name, p->age); }

STUD *f4(STUD *r1,STUD *r2)

{if(r1->age>r2->age) return r1; return r2;}

int main()

{STUD st4={"Сергеев",18}, st5={"Алешин",25}, *pst;

f3(&st4);

printf("%s %d\n",st4.name,st4.age);

pst=f4(&st4,&st5);

printf("%s %d\n",pst->name,pst->age);

return 0;}

2.10 Перевантаження функцій та шаблони функцій

Приклад 2.25

#include <stdio.h>

int FF(int x,int y) {return x*x+y*y;}

long FF(long x, long y) {return x*x+y*y;}

float FF(float x, float y) {return x*x+y*y;}

int main()

{int a1=3,a2=4,a3;

a3=FF(a1,a2);

long b1=20,b2=400,b3;

b3=FF(b1,b2);

float d1=5.5,d2=7.5,d3;

d3=FF(d1,d2);

printf("a3=%d b3=%ld d3=%.2f\n", a3,b3,d3);

return 0;}

Приклад 2.26

#include <stdio.h>

int max(int arr[],int n)

{int val=arr[0];

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

if(arr[i]>val) val=arr[i];

return val;}

double max(double arr[],int n)

{double val=arr[0];

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

if(arr[i]>val) val=arr[i];

return val;}

float max(float arr[],int n)

{float val=arr[0];

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

if(arr[i]>val) val=arr[i];

return val;}

int main()

{int xmax, x[5]={1,3,10,2,7};

double ymax, y[6]={3.5,3.4,10.2,11.5,2.2,3.1};

float zmax, z[4]={1.5,3.8,10.1,2.3};

xmax=max(x,5);

ymax=max(y,6);

zmax=max(z,4);

printf("xmax=%d ", xmax);

printf("ymax=%.2lf zmax=%.2f\n", xmax,ymax,zmax);

return 0; }

Приклад 2.27

#include <stdio.h>

double mul(double x)

{return x*x*x;}

double mul(double x,double y)

{return x*y*y;}

double mul(double x,double y,double z)

{return x*y*z;}

int main()

{double M1=mul(0.2);

double M2=mul(0.2,0.4);

double M3=mul(0.2,0.3,0.4);

printf("M1=%.2lf M2=%.2lf M3=%.2lf\n", M1,M2,M3);

return 0; }

Приклад 2.28

#include <stdio.h>

int sum(int x) {return 2*x;}

int sum(int x, int y=5) {return x+y;}

int sum(int x=2,int y=3,int z=4){return x+y+z;}

void main()

{int S1=sum(10);

int S2=sum(50,10);

}

Приклад 2.29

template <class Tip>

Tip max(Tip x, Tip y )

{if(x>y)return x;

return y;}

int main()

{int a1=-7, a2=40,res1;

res1=max(a1,a2);

float f1=-3.6,f2=-10.5,res2;

res2=max(f1,f2);

printf("res1=%d res2=%.1f\n",res1,res2);

return 0; }

Приклад 2.30

#include <stdio.h>

template <class A>

void swp(A *x,A *y)

{A z=*x;

*x=*y;

*y=z;}

int main()

{double d1=3.3, d2=2.2;

swp(&d1,&d2);

printf(“d1_n=%.2lf d2_n=%.2lf\n”,d1,d2);

char c1='M', c2='Z';

swp(&c1,&c2);

printf(“c1_n=%c c2_n=%c\n”,c1,c2);

char *st1=”Москва”, *st2=”Киев”;

swp(&st1,&st2);

printf(“st1_n=%s st2_n=%s\n”,st1,st2);

swp(st1,st2);

printf(“st1_nn=%s st2_nn=%s\n”,st1,st2);

return 0;}

Приклад 2.31

template <class T>

int func_max(T x[], int n)

{T m=x[0]; int k=0;

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

if(x[i]>max){max=x[i]; k=i;}

return k;}

int main()

{int arr[5]={5,12,40,23,4}, in1, in2;

in1=func_max(arr,5);

printf(“max1=arr[%d]=%d \n”,in1,arr[in1]);

float mas[4]={5.3,1.2,4.0,20.3};

in2=func_max(mas,4);

printf(“max2=mas[%d]=%.2f\n”,in2,arr[in2]);

return 0;}

Приклад 2.32

#include <stdio.h>

template <class E, class D>

void sz(int, E*,int, D*);

int main()

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

float f[]={6.1,7.2,8.3};

int na=sizeof(a)/sizeof(a[0]);

int nf=sizeof(f)/sizeof(f[0]);

puts("Массив а");

for(int i=0;i<na;i++) printf("%5d",a[i]);

puts("Массив f");

for(i=0;i<nf;i++) printf("%5.1f",f[i]);

printf("Сума масивів a та f в масиві а\n");

sz(na,a,nf,f);

puts("Массив а");

for(i=0;i<na;i++) printf("%5d",a[i]);

printf("Сума масивів f та a в масиві f\n");

sz(nf,f,na,a);

puts("Массив f");

for(i=0;i<nf;i++) printf("%5.1f",a[i]);

return 0;}

template <class M,class N>

void sz(int n1,M *arr1,int n2,N *arr2);

{int k;

if(n1<n2) k=n1; else k=n2;

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

arr1[i]+=(M)arr2[i];

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]