Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб_3_метод_указания.doc
Скачиваний:
3
Добавлен:
09.11.2018
Размер:
393.73 Кб
Скачать

Демонстрация использования глобальных переменных при обмене данными между функциями

char ch = 'a'; //глобальная переменная ch описана вне всех функций

void getachar(); //прототипы функций

void putachar();

int main()

{

getachar(); //вызов функции

while( ch != '\r' ) // глобальная переменная ch доступна в main()

{

putachar(); //вызовы функций

getachar();

}

cout << endl;

_getch();

return 0;

}

//--------------------------------------------------------------

void getachar() // глобальная переменная ch доступна в getachar()

{

ch = _getch();

return ;

}

//--------------------------------------------------------------

void putachar() // глобальная переменная ch доступна в putachar()

{

_putch(ch);

_putch( '\r' ); // возврат каретки

_putch( '\n' ); // перевод строки

return ;

}

Демонстрация использования в функции локальных статических переменных

float getavg(float); //прототип функции

int main()

{

float data=1, avg;

while( data != 0 )

{

cout << "Enter a number: ";

cin >> data; //вводим значение 5

avg = getavg(data); //вызов функции

cout << avg << endl; //результат: 5

cout << "Enter a number: ";

cin >> data; //вводим значение 15

avg = getavg(data); //вызов функции

cout << avg << endl; //результат: 10

}

_getch();

return 0;

}

//--------------------------------------------------------------

float getavg (float newdata)

{

static float total = 0; //статическая переменная размещается в сегменте данных и

static int count = 0; //инициализируется только один раз при первом вызове

count++; //count получает значение 1 при первом вызове функции

//count получает значение 2 при втором вызове функции

total += newdata; //total получает значение 5 при первом вызове функции

// total получает значение 20 при втором вызове функции

return total / count;

}

Передача в функцию в качестве параметра переменных разных типов Функция вычисления минимального расстояния между точками плоскости

Функция вычисляет минимальное из расстояний между точками плоскости А(х1; у1), В(х2; у2) и С(1;2).

Алгоритм решения задачи:

  • вычислить расстояния dl=AB, d2=AC, d3=BC;

  • вычислить m=min{dl, d2, d3}

double dd (double, double, double, double); //прототип функции

int main()

{double x1, y1, x2, y2, d1, d2, d3, m;

cout << "Input koordinaty:\n";

cin >> x1 >> y1 >> x2 >> y2;

d1=dd (x1, y1, x2, y2) ; //вызовы функции

d2=dd (x1, y1, 1, 2);

d3=dd (x2, y2, 1, 2);

m = (d1<d2) ? d1 : d2;

if (d3<m) m=d3;

cout << "min: " << m <<endl;

_getch();

return 0;

}

double dd (double a1, double b1, double a2, double b2) //определение функции

{

return (sqrt ((a1-a2)*(a1-a2) + (b1-b2)*(b1-b2)));

}

Функция вычисления факториала

Функция вычисляет факториал N! итеративным методом в соответствии с формулами N=1*2*3…*N (при N>0); 0!=1.

long Iter_Fact (int n); //прототип функции

int main()

{ int i;

long Fact1, Fact2, Fact3;

Fact1= Iter_Fact (10); //вызов функции

i= 10;

Fact2 =Iter_Fact (i); // вызов функции

Fact3= Iter_Fact (5+ 5); // вызов функции

cout << Fact1 << " " << Fact2 << " " << Fact3 << endl;

_getch();

return 0;

}

long Iter_Fact (int n) //определение функции

{ long f=1;

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

f*= i;

return (f);

}

Приведенные вызовы функции показывают различные способы задания аргумента; при этом значения, возвращаемые функцией Iter_Fact, присваиваются переменным Fact1, Fact2, Fact3.

Передадим параметры другим способом:

void Iter_Fact (int, long*); //прототип функции

int main()

{ int i;

long Fact1, Fact2, Fact3; //не инициализированы !!!

Iter_Fact (10, &Fact1); //вызов функции

i= 10;

Iter_Fact (i, &Fact2); //вызов функции

Iter_Fact (5+ 5, &Fact3); //вызов функции

cout << Fact1 << " " << Fact2 << " " << Fact3 << endl;

_getch();

return 0;

}

void Iter_Fact (int n, long *f) //определение функции

{ *f = 1;

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

*f *= i;

}

И еще одним способом:

void Iter_Fact (int, long&); //прототип функции

int main()

{ int i;

long Fact1, Fact2, Fact3; //не инициализированы !!!

Iter_Fact (10, Fact1); //вызов функции

i= 10;

Iter_Fact (i, Fact2); //вызов функции

Iter_Fact (5+ 5, Fact3); //вызов функции

cout << Fact1 << " " << Fact2 << " " << Fact3 << endl;

_getch();

return 0;

}

void Iter_Fact (int n, long &f) //определение функции

{ f = 1;

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

f *= i;

}

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