Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Демонстрация функции, определенной перед ее вызовом





//нет прототипа функции !!!

 

 

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

void starline() //определение функции перед ее вызовом в функции main

{

for(int j=0; j<45; j++)

cout << '*';

cout << endl;

}

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

int main()

{

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

cout << "Data type Range" << endl;

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

cout << "char -128 to 127" << endl

<< "short -32,768 to 32,767" << endl

<< "int System dependent" << endl

<< "long -2,147,483,648 to 2,147,483,647" << endl;

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

_getch();

return 0;

}

 

Демонстрация функции с аргументами и не возвращающей значения

void repchar(char, int); //прототип функции

int main()

{

repchar('-', 43); //вызов функции

cout << "Data type Range" << endl;

repchar('=', 23); //вызов функции с другими аргументами

cout << "char -128 to 127" << endl

<< "short -32,768 to 32,767" << endl

<< "int System dependent" << endl

<< "double -2,147,483,648 to 2,147,483,647" << endl;

repchar('-', 43); //вызов функции

_getch();

return 0;

}

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

// определение функции

void repchar(char ch, int n) //заголовок функции

{

for(int j=0; j<n; j++) //тело функции

cout << ch;

cout << endl;

}

 

Результаты работы:

-------------------------------------------

Data type Range

=======================

char -128 to 127

short -32,768 to 32,767

int System dependent

long -2,147,483,648 to 2,147,483,647

-------------------------------------------

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

 

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;

}

Функция вычисления хn через умножение

Функция stepen (x, n) используется для вычисления выражения b=2.7 k + (a+1) – k.

 

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

int main ()

{

double a =7.1, b;

unsigned k=5;

b=stepen(2.7, k) +1/stepen(a+1, k); //вызов функции

cout << b << endl;

_getch();

return 0;

}

double stepen (double x, unsigned n) //определение функции

{

double y=1;

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

y=y*x;

return y;

}

Функция определения максимального и минимального из двух чисел

Функция maxmin, присваивающая параметру х большее из двух вещественных чисел, а параметру y – меньшее. С помощью данной функции необходимо перераспределить значения вещественных переменных а, b, c так, чтобы стало a >= b >= c.

 

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

int main ()

{ double a, b, c;

cin >> a >> b >> c;

maxmin (&a, &b);

maxmin (&a, &c); //a получает максимальное значение

maxmin (&b, &c); //c получает максимальное значение

cout << a <<" " << b << " " << c << endl;

_getch();

return 0;

}

void maxmin (double *px, double *py) //определение функции

{double r;

if(*px <*py) { r =*px; *px=*py; *py=r;}

}

 

другой способ:

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

int main ()

{ double a, b, c;

cin >> a >> b >> c;

maxmin (a ,b); maxmin (a, c); //a получает максимальное значение

maxmin (b, c); //c получает максимальное значение

cout << a <<" " << b << " " << c << endl;

_getch();

return 0;

}

void maxmin (double & x, double &y) //определение функции

{double r;

if(x < y) { r =x; x= y; y=r;}

}

 

Функция с параметром перечисляемого типа

Функция cont (s) определяет континент и используется для изменения значения логической переменной t на противоположное, если две страны находятся на разных континентах.

enum strana {Avstria, Egypet, Italia, Peru, Usa, Belarus};

enum continent {Amerika, Aphrika, Europe, Error};

continent cont (strana s); //прототип функции

int main ()

{strana x, y;

bool t=true;

int k1, k2;

cout << "bool=" << t << endl; //начальное значение t

cout << "Input strana (2): 0 – Avstria, 1 – Egypet, ...5 – Belarus\n";

cin >> k1 >> k2;

x= static_cast<strana> (k1);

y= static_cast<strana> (k2);

if ((cont(x)==3 )||( cont(y)==3)) {cout <<"strana : ?"; return 1 ;}

if (cont (x) !=cont (y)) t = ! t;

cout << "bool=" << t << endl ; //конечное значение t

_getch();

return 0 ;

}

continent cont (strana s) //определение функции

{continent con;

switch ( s) { case Avstria:

case Italia:

case Belarus: con = Europe; break;

case Egypet: con = Aphrika; break;

case Peru:

case Usa: con = Amerika; break;

default: con = Error;

}

return (con);

}

 









Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2021 zdamsam.ru Размещенные материалы защищены законодательством РФ.