Порядок выполнения работы. 1. Построить алгоритм работы функции в соответствии с вариантом задания (смотри приложение)

1. Построить алгоритм работы функции в соответствии с вариантом задания (смотри приложение).

2. Определить возможные комбинации параметров функции;

3. Написать демонстрационную программу, в которой переопределяется функция в соответствии с вызываемыми параметрами.

Содержание отчета

1. Титульный лист: название дисциплины; номер и наименование работы; фамилия, имя, отчество студента; дата выполнения.

2. Постановка задачи.

3. Алгоритм работы функции с комментариями.

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

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

1. Что такое полиморфизм?

2. Что позволяет перегрузка функций?

3. Что такое сигнатура?

4. Какие функции не являются перегруженными?

5. Каковы особенности использования параметров по умолчанию при перегрузке функций?

Лабораторная работа № 10

«ФУНКЦИИ С ПЕРЕМЕННЫМ ЧИСЛОМ ПАРАМЕТРОВ»

Цель: Знакомство с организацией функций с переменным числом параметров.

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

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

Определение функции с переменным числом параметров:

<тип><имя>(<явные параметры>, . . . )

{

тело функции

}

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

Существует два подхода к решению данной задачи при которых:

1. известен признак конца списка переменных параметров;

2. известно количество параметров, которое передается как обязательный параметр.

Пример:

#include <iostream.h>

int sum (int k, . . .)

{

int *p = &k; //настроили указатель на параметр k

int s=0;

for ( ; k!=0;k--)

s+=*(++p);

return s;

}

void main( )

{

cout<<”\nСумма(2,4,6)= ”<<sum(2,4,6); //находит сумму 4+6

cout<<”\nСумма(4,1,2,3,4)= ”<<sum(4,1,2,3,4); //находит сумму // 1+2+3+4

}

Для доступа к списку параметров используется указатель *p типа int. Он устанавливается на начало списка параметров в памяти, а затем p перемещается по адресам фактических параметров (++p).

Постановка задачи

Решить указанную в варианте задачу, используя функции с переменным числом параметров.

Варианты

Вариант 1.

Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int. Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 3, 7, 11.

Вариант 2.

Написать функцию mult с переменным числом параметров, которая находит произведение чисел типа float. Написать вызывающую функцию main, которая обращается к функции mult не менее трех раз с количеством параметров 3, 7, 11.

Вариант 3.

Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле:

S=a1*a2+a2*a3+a3*a4+. . . . .

Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 5, 10, 12.

Вариант 4.

Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле:

S=a1*a2+a3*a4+a5*a6+. . . . .

Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 8, 10, 12.

Вариант 5.

Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле:

S=a1*a2-a2*a3+a3*a4-. . . . .

Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 5, 10, 12.

Вариант 6.

Написать функцию min с переменным числом параметров, которая находит минимальное из чисел типа int. Написать вызывающую функцию main, которая обращается к функции min не менее трех раз с количеством параметров 5, 10, 12.

Вариант 7.

Написать функцию max с переменным числом параметров, которая находит минимальное из чисел типа int. Написать вызывающую функцию main, которая обращается к функции min не менее трех раз с количеством параметров 5, 10, 12.

Вариант 8.

Написать функцию sort_min с переменным числом параметров, которая которая сортирует числа типа int по убыванию. Написать вызывающую функцию main, которая обращается к функции sort_min не менее трех раз с количеством параметров 5, 10, 12. (метод сортировки выборка).

Вариант 9.

Написать функцию sort_max с переменным числом параметров, которая сортирует числа типа int по возрастанию. Написать вызывающую функцию main, которая обращается к функции sort_max не менее трех раз с количеством параметров 5, 10, 12. (метод сортировки включение).

Вариант 10.

Написать функцию kvadr с переменным числом параметров, которая определяет количество чисел, являющихся точными квадратами (1, 4, 9, 16,. . . ) типа int. Написать вызывающую функцию main, которая обращается к функции kvadr не менее трех раз с количеством параметров 3, 7, 11.

Вариант 11.

Написать функцию find с переменным числом параметров, которая находит заданный элемент в последовательности. Написать вызывающую функцию main, которая обращается к функции find не менее трех раз с количеством параметров 5, 10, 12. (метод поиска бинарный).

Вариант 12.

Написать функцию с переменным числом параметров для перевода чисел из десятичной системы счисления в восьмеричную. Написать вызывающую функцию main, которая обращается к этой функции не менее трех раз с количеством параметров 3, 5, 8.

Вариант 13.

Написать функцию с переменным числом параметров для перевода чисел из десятичной системы счисления в троичную. Написать вызывающую функцию main, которая обращается к этой функции не менее трех раз с количеством параметров 3, 4, 7.

Вариант 14.

Написать функцию с переменным числом параметров для перевода чисел из двоичной системы счисления в троичную. Написать вызывающую функцию main, которая обращается к этой функции не менее трех раз с количеством параметров 3, 6, 7.

Вариант 15.

Написать функцию с переменным числом параметров для перевода чисел из восьмеричной системы счисления в десятичную. Написать вызывающую функцию main, которая обращается к этой функции не менее трех раз с количеством параметров 3, 6, 7.

Вариант 16.

Написать функцию days с переменным числом параметров, которая находит количество дней, прошедших между двумя датами (параметрами функции являются даты в формате «дд.мм.гг». Написать вызывающую функцию main, которая обращается к функции days не менее трех раз с количеством параметров 3, 5, 8. (если число параметров функции нечетно то вычисляется количество дней между последней и первой датой). Например (3,12,1,2003,24,10,2003,4,11,2003) –параметров функции 3(нечетно), первая дата-12.1.2003, вторая дата-24.10.2003, третья дата-4.11.2003. Необходимо найти количество дней между первой и второй, первой и третьей.

Вариант 17.

Написать функцию prost с переменным числом параметров, которая находит все простые числа из нескольких интервалов. Интервалы задаются границами А и В. Написать вызывающую функцию main, которая обращается к функции prost не менее трех раз с количеством параметров 3, 5, 6.(число параметров- это границы интервалов (А,В), если число параметров функции нечетно то между последним и первым. Например: (4,2,5,3,15) (параметров функции 4 (четно), то первый интервал (2,5), второй-(3,15) или (5,2,5,3,15) (параметров функции 5 (нечетно), первый интервал (2,5), второй-(3,15), третий-(2,15).) {для упрощения можно использовать последовательность}

Вариант 18.

Написать функцию nok с переменным числом параметров, которая находит наименьшее общее кратное для нескольких чисел.

Порядок выполнения работы. 1. Построить алгоритм работы функции в соответствии с вариантом задания (смотри приложение) - student2.ru (НОД- наибольший общий делитель)

Написать вызывающую функцию main, которая обращается к функции nok не менее трех раз с количеством параметров 3, 5, 6.

Вариант 19.

Написать функцию, которая определяет принадлежит ли точка с координатами (х , у) окружности с заданным радиусом R. Написать функцию belong с переменным числом параметров, которая определяет сколько точек с координатами (х,у) принадлежат заданной окружности. Написать вызывающую функцию main, которая обращается к функции belong не менее трех раз с количеством параметров 3, 9, 11.

Вариант 20.

Написать функцию, которая определяет можно ли из чисел (сторон или углов) x, y, z построить треугольник. Написать функцию triangle с переменным числом параметров, которая определяет сколько троек рядом расположенных чисел типа int могут быть длинами сторон (или углами) треугольника. Написать вызывающую функцию main, которая обращается к функции triangle не менее трех раз с количеством параметров 3, 9, 11.

Номер подгруппы
Номера вариантов заданий
1,20 2,19 3,16 4,18 5,17 6,11 7,14 8,12 9,13 10,15
                                     

Содержание отчета

1. Постановка задачи для конкретного варианта;

2. Исходные данные;

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

4. Текст программы;

5. Результаты выполнения программы.

6. Выводы.

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

1. В каких случаях используется механизм функций с переменным числом параметров?

2. Синтаксис функции с переменным числом параметров.

3. Каковы сложности при использовании механизма функций с переменным числом параметров?

Лабораторная работа № 11

«КЛАССЫ И ОБЪЕКТЫ В С++»

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

Наши рекомендации