Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 4

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 30.5.2024

Козлов Иван Сергеевич Лабораторная работа №4. Перегрузка функций. Шаблоны.. Вариант 1.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ БЕЛАРУСЬ

БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Факультет информационных технологий и робототехники (ФИТР)

Кафедра программного обеспечения вычислительной техники

и автоматизированных систем

Отчет по лабораторной работе № 4

по дисциплине: ” Основы алгоритмизации и программирования ”

на тему:  Перегрузка функций. Шаблоны. ”

Вариант 1

Выполнил:  ст.гр.107221

 Козлов Иван Сергеевич

   Приняла:   ст. пр. И. М. Желакович

Минск 2012

Лабораторная работа №4. Перегрузка функций. Шаблоны.

Цель работы: Научиться создавать перегруженные функции и шаблоны функций.

Задание 1.

Напишите перегружаемую функцию summa, которая возвращает сумму целых, вещественных, либо комплексных чисел.

Комплексные числа представлены в виде структуры из двух вещественных чисел.

Аргументов у функции summa может быть 2 или 3.

Продемонстрируйте работу функции для всех вариантов данных.

Код программы

// Лабораторная работа № 4. Перегрузка функций. Шаблоны.

// Задание 1

// Вариант 1

// Студент группы 107221 Козлова Ивана Сергеевича

#include <iostream.h>

struct complex

{

  double deyst;

  double mnim;

};

int summ (int a, int b);

double summ (double a, double b);

double summ (double a, double b, double c);

int summ (int a,int b, int c);

complex summ (complex a, complex b);

complex summ (complex a, complex b, complex c);

void main ()

{

  int i1=4, i2=6, i3=12;

  cout << "summa 2 celyh schisel: " << summ (i1, i2) << endl;

  cout << "summa 3 celyh schisel: " << summ (i1, i2, i3) << endl;

  float f1=4.67, f2=3.16, f3=7.56;

  cout << "summa 2 vestchestvennyh schisel:" << summ (f1, f2) << endl;

  cout << "summa 3 vestchestvennyh schisel:" << summ (f1, f2, f3) << endl;

  complex c1={3.5, 2.7}, c2={4.2, 3.7}, c3={4.2, 3.8}, rez;

  rez=summ(c1, c2);

  cout << "summa 2 complexnyh schisel: " << rez.deyst<< "+"<< rez.mnim << "i"<< endl;

  rez=summ(c1, c2, c3);

  cout << "summa 3 complexnyh schisel: " << rez.deyst<< "+"<< rez.mnim << "i"<< endl;

}

int summ (int a, int b)

{

  return a+b;

}

double summ (double a, double b)

{

  return a+b;

}

double summ (double a, double b, double c)

{

  return a+b+c;

}

int summ (int a,int b, int c)

{

  return a+b+c;

}

complex summ (complex a, complex b)

{

  complex c;

  c.deyst=a.deyst+b.deyst;

  c.mnim=a.mnim+b.mnim;

  return c;

}

complex summ (complex a, complex b, complex c)

{

  complex d;

  d.deyst=a.deyst+b.deyst+c.deyst;

  d.mnim=a.mnim+b.mnim+c.mnim;

  return d;

}

Скриншоты результатов 

 


Задание 2.

Напишите перегружаемую функцию, которая выводит на экран строку, двумерный массив или структуру из лабораторной работы №2. Предусмотрите соответствующее пояснение при выводе.

Продемонстрируйте работу функции для всех вариантов данных.

Код программы

// Лабораторная работа № 4. Перегрузка функций. Шаблоны.

// Задание 2

// Вариант 1

// Студент группы 107221 Козлова Ивана Сергеевича

#include <iostream.h>

struct note

{

  char fam[30];

  char name[20];

  char ntel [10];

  int rozhd[3];

  unsigned int oklad;

};

void vivod (char* ch);

void vivod (int *a, int size);

void vivod (double *a, int size);

void vivod(note* pmas);

int m[10][10] = {  16,  78,  99,   6, -29,  19, -52,  65, -88,  51,

-79, -22,  32, -25, -62, -69,  -2, -59, -75,  89,

-87,  95, -22,  85, -49, -75,  76,  73, -59, -52,

30,  49, -28, -48,   0,  57,  -6, -85,   0, -18,

-97, -21, -95,  64,  22,  -2,  69, -84,  -1, -71,

-25,  47,  72,  43,  15, -44,  44,  61,   4,  74,

88, -61,   0, -64, -83,  97,   0,  90,  15,   8,

-54,  19,  73,  35, -67, -87,  85, -99, -70,  10,

98,  58, -10, -29,  95,  62,  77,  89,  36, -32,

78,  60, -79, -18,  30, -13, -34, -92,   1, -38};

double m2[2][3]={43.6, 43.5, 13.5, 76.454, 27.4, 643.5};

char str []="0 error(s)";

note n1={"kozlov", "ivan", "2435617", 4, 9, 1993, 0};

void main ()

{

  vivod (&n1);

  vivod ( &m[0][0], 100);

  vivod (str);

  vivod ( &m2[0][0], 6);

}

void vivod(note* pmas)

{

  cout <<  "structura note:" << endl;

  cout << "familija: ";

  cout << pmas->fam << endl;

  cout << "imja: ";

  cout << pmas->name << endl;

  cout << "telehon: ";

  cout << pmas->ntel << endl;

  cout << "data rozhdenija: ";

  cout << pmas->rozhd[0] << "." << pmas->rozhd[1] << "." << pmas->rozhd[2]  << endl;

  cout << "oklad: " << pmas->oklad << endl;

  cout << endl;

}

void vivod (char* ch)

{

  cout << "stroka: " << ch << endl << endl;

}

void vivod (int *a, int size)

{

  int *pa=a;

  cout << "dvumernyj massiv int: ";

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

  {

     cout << *pa << " ";

     pa++;

  }

  cout << endl << endl;

}

void vivod (double *a, int size)

{

  double *pa=a;

  cout << "dvumernyj massiv double: ";

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

  {

     cout << *pa << " ";

     pa++;

  }

  cout << endl << endl;

}

 

Скриншоты результатов

Задание 3.

Написать программу, которая определяет максимальный элемент в одномерных массивах различных арифметических типов. Используйте шаблон функции.

Код программы

// Лабораторная работа № 4. Перегрузка функций. Шаблоны.

// Задание 3

// Вариант 1

// Студент группы 107221 Козлова Ивана Сергеевича#include <iostream.h>

template <class t>

void max (t *a, int size)

{

  t max=a[0];

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

  {

     if (a[i]>max)

        max=a[i];

  }

  cout << max;

}

int mass1[]={12, 25, 67, 34, 17, 68, 42, 96};

double mass2[]={35.8, 41.54, 456.78, 45.78, 45.24, 56.6};

void main ()

{

  cout << "maximalnyj element v massive tipa int: ";

  max (mass1, sizeof(mass1)/sizeof(mass1[0]));

  cout << endl;

  cout << "maximalnyj element v massive tipa double: ";

  max (mass2, sizeof(mass2)/sizeof(mass2[0]));

  cout << endl;

}

Скриншоты результатов

Вывод:

Мы ознакомились с шаблонами функции и перегрузкой функций, написали программу с использованием перегружаемых функций и шаблонов функций. Перегрузка функций применяется, когда несколько функций должны выполнять схожие действия. Шаблоны функций применяются, когда функции должны производить одни и те же операции с разними типами данных.




1. Статья 21 Административное правонарушение Административным правонарушением признается противоправно
2. Институт теологии имени святых Мефодия и Кирилла Белорусского государственного университета УТВЕ
3. КОНТРОЛЬНая работа по дисциплине Управление персоналом Вариант 9
4. Оптимизация освещения помещений
5. Введение Общественное питание представляет собой отрасль народного хозяйства основу которой составляют п
6. Карицкого Ф
7. ~02 -2а S ~~0 t -2 Уравнение скорости при равноускоренном движении ~~0t Ускорение
8. На тему- Проблемы банкротства предприятий и пути их решения в России Выполнила студентка 5 курса Гру
9. я ВозряСоцэкизменения к
10. Методы измерения ионных токов
11. БАЛАЛАЙКА Ср
12. апостроф задається символьною сталою ''
13. Лабораторная работа 3 ldquo;Операционная система MSDOSrdquo; В большинстве случаев работать непосредствен
14. Еноляты лития Конденсации Клайзена и Дикмана
15. Характерисика антропогенних ландшафтів України
16. My Drk ngel АВТОР- Фелиша БЕТА- NQ.
17. Современные методы организации заработной платы
18. верховный главнокомандующий богов
19. Внешняя политика и международное право
20. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата технічних наук Київ2005 Д