Требования к оформлению отчета



Отчет по лабораторной работе должен содержать следующие разделы:

· титульный лист;

· цель работы:

· задание на лабораторную работу;

· техническое описание выполненного задания;

· ответы на контрольные вопросы;

· выводы по проделанной работе.

Задание на работу

1. Напишите функцию вычисления произведения двух целых чисел. Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

2. Напишите функцию составления двухзначного числа из переданных ей в качестве параметра двух целых чисел – цифр (например, 3 + 7 = 37). Перегрузите функцию для работы с тремя и четырьмя целыми числами (соответственно результат – трех и четырехзначные числа). Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

3. Напишите функцию поиска максимального из двух целых чисел. Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

4. Напишите функцию поиска среднего арифметического из двух целых чисел. Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

5. Напишите функцию поиска НОД двух целых чисел (например, алгоритмом Евклида). Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

6. Напишите функцию поиска НОК двух целых чисел. Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

Контрольные вопросы

1. Чем отличается прототип и определение функции?

2. Как указать значения параметров функции по умолчанию?

3. Для чего нужны прототипы функций?

4. Каким образом реализуется задача, когда необходимо изменять значения передаваемых функции параметров?

5. Что такое перегрузка функций?

6. Что такое формальные и фактические параметры?


 

Лабораторная работа № 5.
Производные типы данных.

Цель работы

Освоение методов программирования с использованием структур, перечислений и объединений.

Теоретические сведения

Общие сведения

Структуры

Синтаксис объявления структуры

Struct имя {последовательность_объявления_членов-данных_и методов};

Пример объявления структуры.

Struct s {int a, b;

Void wrt(){cout<<a<<” ”<<b<<endl;}}

Пример 1.

struct s {int a, b;

void wrt(){cout<<a<<" "<<b<<endl;}};

int _tmain(int argc, _TCHAR* argv[])

{

s s1;

s1.a=4;

s1.b=5;

s1.wrt();

return 0;

}

Для структурного типа переменная может быть указательного типа.

Пример 2

sp= new s;

sp->a=3;

sp->b=4;

sp->wrt();

delete sp;

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

Пример 3.

struct v

{

int a, b;

//конструкторы

v(int at,int bt){a=at;b=bt;}

v(){a=b=0;}

//методы

void prn(){cout<<"v:: "<<a<<" "<<b<<endl;}

};

int _tmain(int argc, _TCHAR* argv[])

{

v tv(7,-1);

tv.prn();

tv=v(2,3);//присваивание константы

return 0;

}

Для структурного типа для членов-данных память может выделяться динамически. В этом случае должны быть предусмотрены деструкторы, которые позволяют при разрушении переменных структурного типа правильно производить операции с динамической памятью.

Пример 3.

struct arr

{

int *a,n;

arr(int n)

{a=new int [n];}

//деструктор

~arr(){delete []a;}

};

int _tmain(int argc, _TCHAR* argv[])

{

int n=5;

arr y(n);

for(int i=0;i<n;i++)y.a[i]=i+1;

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

cout << y.a[i]<< " ";

cout<<endl;

y.~arr();//принудительный вызов деструктора

return 0;

}

Для структурного типа могут быть спроектированы операции. В этом случае структурные переменные могут быть использованы как операнды выражений.

Пример 5.

struct vect {

float x, y;

//конструкторы

vect(float xt,float yt){x=xt;y=yt;}

vect(){x=y=0;}

//методы

void prn(){cout<<"vect:: "<<x<<" "<<y<<endl;}

//операторы

vect operator + (vect v2)

{vect v1=*this;

return vect(v1.x+v2.x,v1.y+v2.y);

}

};

int _tmain(int argc, _TCHAR* argv[])

{

vect t1,t2,t3;

t1=vect(1,2);

t2=vect(-3,2);

t3=t1+t2;

t3.prn();

return 0;

}

Объединения

Объединения позволяют размещать данные разных типов по одному адресу в памяти, т.е. данные размещаются в одном месте в памяти, но трактовать их можно по-разному.

Пример 6.

#include "stdafx.h"

#include <iostream>

using namespace std;

union u1{char a[2];short int b;};

int _tmain(int argc, _TCHAR* argv[])

{

u1 tu;

tu.b=0x1234;

cout<<"union tu.a: "<<hex<<(int)tu.a[0]<<" "<<hex<<(int)tu.a[1]<<endl;

cout<<"union tu.b: "<<hex<<tu.b<<endl;

//union tu.a: 34 12

//union tu.b: 1234

return 0;

}

Перечисления

Перечисления позволяют кодировать осмысленные имена целыми числами.

Пример 7.

Pragma region enum

enum color{red,white,green};

#pragma endregion

int _tmain(int argc, _TCHAR* argv[])

{

color tc1,tc2,tc3;

tc1=red;

tc2=green;

cout<<”tc1=”<<tc1<<” “<<”tc2=”<<tc2<<endl;

//tc1=0 tc2=2

return 0;

Порядок выполнения работы

7. Ознакомиться с теоретическими сведениями.

8. Получить вариант задания у преподавателя.

9. Выполнить задание.

10. Продемонстрировать выполнение работы преподавателю.

11. Оформить отчет.

12. Защитить лабораторную работу.


Дата добавления: 2019-09-13; просмотров: 193; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!