Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_Лаб_Гриф.doc
Скачиваний:
7
Добавлен:
14.11.2019
Размер:
2.81 Mб
Скачать

Приклад

/* ЗАНЯТТЯ N 7

Виконав студент групи IT ....... Петров В.М.

Оголошення і визначення функцій. Застосування функцій:

передача перемінних у функцію за значенням, за адресою

і за посиланням, повернення значень з функції. Області дії

перемінних, приклади операцій.

Вибір функції за номером (за допомогою оператора switch) */

#include <stdio.h>

#include <conio.h>

#include <math.h>

float glob=2.5;

float Fx0(float a, float b, float c) //Визначення функції

{ return – b / (2*a) * (++c);

} //Fx0( )-передача параметрів і повернення за значенням

float* Fx1(float, float, float); //Оголошення функції

//Fx1( ) - передача параметрів за значенням, повернення покажчика

float& Fx2(float, float, float); //Оголошення функції

//Fx2( ) - передача за значенням, повернення за посиланням

//Передача параметрів за значенням, а останнього за адресою

void changex0(float, float, float, float *);

//Передача параметрів за адресою

void changex1(float *, float *, float *, float *);

//Передача параметрів за посиланням

void changex2(float &, float &, float &, float &);

void main( )

{ float a1, b1, c1, x1;

float* px = &x1;

float& sx = x1;

char diskr;

clrscr( );

printf(" Введіть значення перемінних: а, b, c: ");

scanf("%f %f %f", &a1, &b1, &c1);

printf(" Введіть номер функції (0...5),\

чи ESC-кінець розрахунку: ");

vvod1: diskr = getche( );

switch (diskr)

{ case '0': x1= Fx0(a1, b1, c1); break;

case '1': px = Fx1(a1, b1, c1); printf("\n glob = \

%6.3f *px= %6.3f", glob, *px); break;

case '2': sx= Fx2(a1,b1,c1); printf("\n glob = \

%6.3f sx= %6.3f", glob, sx); break;

case '3': changex0(a1, b1, c1, &x1); break;

case '4': changex1(&a1, &b1, &c1, &x1); break;

case '5': changex2(a1, b1, c1, x1); break;

case '6': case ’27’: goto end;

default: printf("\n Поза діапазоном, введіть інший \

номер функції (0...5) ");

goto vvod1;

}

printf("\n Результат: a1= %5.3f b1= %5.3f c1= %5.3f \

x1= %5.3f\n", a1, b1, c1, x1);

printf("Введіть інший номер функції: ");

goto vvod1;

end: ;

} //End main( )

float* Fx1(float a, float b, float c) //Визначення функції N 1

{ float* pf;

*pf = glob + ( - -b ) / (2*a) * ( ++c );

//printf("\nglob= %6.3f *pf= %6.3f", glob, *pf);

return pf;

}

float& Fx2(float a, float b, float c) //Визначення функції N 2

{ float& sf = glob;

sf = (- -b - sqrt(abs(++c))) / (4 * ++a);

glob+= 5; //printf("\n glob= %6.3f sf= %6.3f ", glob, sf);

return sf;

}

void changex0(float a, float b, float c, float *d) //Визначення функції N 3

{ *d = pow(b, 2) – 4 * - - a * ++c; }

void changex1(float *a, float *b, float *c, float *d) //Визначення функції N 4

{++ *a; ++ *b++; ++*c; *d+= *a + *b + *c; }

void changex2(float &a, float &b, float &c, float &d) //Визначення N 5

{ a+= 2; b+= 2; c+= 2; d - = a + b + c; }

/* Введіть значення перемінних: а, b, c: 3 4 5

Введіть номер функції (0...5), чи ESC - кінець розрахунку: 0

Результат: a1= 3.000 b1= 4.000 c1= 5.000 x1= 3.000

Введіть інший номер функції: 1

glob= 2.500 *px= 5.500

Результат: a1= 3.000 b1= 4.000 c1= 5.000 x1= 5.500

Введіть інший номер функції: 2

glob= 5.034 sx= 5.034

Результат: a1= 3.000 b1= 4.000 c1= 5.000 x1= 5.034

Введіть інший номер функції: 3

Результат: a1= 3.000 b1= 4.000 c1= 5.000 x1= -32.000

Введіть інший номер функції: 4

Результат: a1= 4.000 b1= 5.000 c1= 6.000 x1= -18.000

Введіть інший номер функції: 5

Результат: a1= 6.000 b1= 7.000 c1= 8.000 x1= -39.000

Введіть інший номер функції: 8

Поза діапазоном, введіть інший номер функції (0...5) */