- •Министерство образования и науки Республики Казахстан
- •Лабораторная работа №1. "Выполнение и отладка программы простой структуры"
- •1. Краткие теоретические сведения
- •1.1. Структура программы
- •1.2. Константы и переменные
- •1.3. Операции
- •1.4. Выражения
- •1.5. Ввод и вывод
- •1.5.1. Ввод и вывод в стандартном Си
- •2. Постановка задачи
- •3. Варианты
- •4. Методические указания
- •5. Содержание отчета
- •Краткие теоретические сведения
- •Составные операторы
- •Операторы выбора
- •Операторы циклов
- •Операторы перехода
- •2. Постановка задачи
- •3. Варианты
- •3. Содержание отчета
- •4. Методические указания
- •Лабораторная работа №3 "Вычисление функций с использованием их разложения в степенной ряд"
- •1. Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Методические указания
- •5. Содержание отчета
- •1.4. Указатели и массивы
- •2. Варианты заданий
- •3. Методические указания
- •4. Содержание отчета
- •Лабораторная работа №5 "Конструирование функций для обработки массивов"
- •Краткие теоретические сведения
- •1.1. Функции
- •1.2. Массивы и строки как параметры функций
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •Лабораторная работа № 6 "Программы для обработки строк"
- •1. Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •1. Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •7.2. "Функции с переменным числом параметров"
- •1. Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •Лабораторная работа №8 "Блоковый ввод-вывод"
- •1. Краткие теоретические сведения
- •1.2. Потоковый ввод-вывод
- •1.3. Открытие и закрытие потока
- •Блоковый ввод-вывод
- •2. Постановка задачи
- •3. Варианты
- •4. Методические указания
- •5. Содержание отчета
- •Лабораторная работа № 9 "Строковый ввод-вывод"
- •Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •Лабораторная работа № 10 "Программирование приложений с динамическими массивами"
- •Краткие теоретические сведения
- •Формирование динамических массивов с использованием библиотечных функций
- •Формирование динамических массивов с использованием операций new и delete
- •2. Постановка задачи
- •3. Порядок выполнения работы
- •4. Варианты заданий
- •5. Содержание отчета
- •Лабораторная работа № 11 "Списковые динамические структуры"
- •Краткие теоретические сведения
- •2. Постановка задачи
- •Порядок выполнения работы
- •4. Варианты заданий
- •5.Содержание отчета
- •Литература
4. Содержание отчета
Постановка задачи для конкретного варианта.
Исходные данные.
Текст программы.
Результаты выполнения программы.
7.2. "Функции с переменным числом параметров"
Цель: Знакомство с организацией функций с переменным числом параметров.
1. Краткие теоретические сведения
В Си допустимы функции, у которых при компиляции не фиксируется число параметров, кроме того, может быть неизвестен и тип параметров. Количество и тип параметров становится известным только в момент вызова, когда явно задан список фактических параметров. Каждая функция с переменным числом параметров должна иметь хотя бы один обязательный параметр.
Определение функции с переменным числом параметров:
<тип><имя>(<явные параметры>, . . . )
После списка явных параметров ставится запятая, а затем многоточие, которое показывает, что дальнейший контроль соответствия количества и типов параметров при обработке вызова функции производить не нужно. Сложность заключается в определении начала и конца переменного списка параметров, поэтому каждая функция должна иметь механизм определения их количества и типов. Существует два подхода:
известен признак конца списка переменных параметров;
известно количество параметров, которое передается как обязательный параметр.
Пример:
#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).
2. Постановка задачи
Решить указанную в варианте задачу, используя функции с переменным числом параметров.
3. Варианты
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int. Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 3, 7, 11.
Написать функцию mult с переменным числом параметров, которая находит произведение чисел типа float. Написать вызывающую функцию main, которая обращается к функции mult не менее трех раз с количеством параметров 3, 7, 11.
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле:
S=a1*a2+a2*a3+a3*a4+. . . . .
Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 5, 10, 12.
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле:
S=a1*a2+a3*a4+a5*a6+. . . . .
Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 8, 10, 12.
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле:
S=a1*a2-a2*a3+a3*a4-. . . . .
Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 5, 10, 12.
Написать функцию min с переменным числом параметров, которая находит минимальное из чисел типа int. Написать вызывающую функцию main, которая обращается к функции min не менее трех раз с количеством параметров 5, 10, 12.
Написать функцию min с переменным числом параметров, которая находит минимальное из чисел типа int или из чисел типа double, тип параметров определяется с помощью первого параметра функции. Написать вызывающую функцию main, которая обращается к функции min не менее трех раз с количеством параметров 5, 10, 12.
Написать функцию max с переменным числом параметров, которая находит минимальное из чисел типа int. Написать вызывающую функцию main, которая обращается к функции min не менее трех раз с количеством параметров 5, 10, 12.
Написать функцию max с переменным числом параметров, которая находит минимальное из чисел типа int или из чисел типа double, тип параметров определяется с помощью первого параметра функции. Написать вызывающую функцию main, которая обращается к функции min не менее трех раз с количеством параметров 5, 10, 12.
Написать функцию kvadr с переменным числом параметров, которая определяет количество чисел, являющихся точными квадратами (2, 4, 9, 16,. . . ) типа int. Написать вызывающую функцию main, которая обращается к функции kvadr не менее трех раз с количеством параметров 3, 7, 11.
Написать функцию sum с переменным числом параметров, которая находит сумму заданных обыкновенных дробей. Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 5, 10, 12.
Написать функцию с переменным числом параметров для перевода чисел из десятичной системы счисления в восьмеричную. Написать вызывающую функцию main, которая обращается к этой функции не менее трех раз с количеством параметров 3, 5, 8.
Написать функцию с переменным числом параметров для перевода чисел из десятичной системы счисления в троичную. Написать вызывающую функцию main, которая обращается к этой функции не менее трех раз с количеством параметров 3, 4, 7.
Написать функцию с переменным числом параметров для перевода чисел из двоичной системы счисления в троичную. Написать вызывающую функцию main, которая обращается к этой функции не менее трех раз с количеством параметров 3, 6, 7.
Написать функцию с переменным числом параметров для перевода чисел из восьмеричной системы счисления в десятичную. Написать вызывающую
Написать функцию days с переменным числом параметров, которая находит количество дней, прошедших между двумя датами (параметрами функции являются даты в формате «дд.мм.гг». Написать вызывающую функцию main, которая обращается к функции days не менее трех раз с количеством параметров 3, 5, 8.
Написать функцию prost с переменным числом параметров, которая находит все простые числа из нескольких интервалов. Интервалы задаются границами А и В.
Написать вызывающую функцию main, которая обращается к функции prost не менее трех раз с количеством параметров 3, 5, 6.
Написать функцию nok с переменным числом параметров, которая находит наименьшее общее кратное для нескольких чисел.
(НОД- наибольший общий делитель)
Написать вызывающую функцию main, которая обращается к функции nok не менее трех раз с количеством параметров 3, 5, 6.
Написать функцию (или макроопределение), которая определяет принадлежит ли точка с координатами (х , у) окружности с заданным радиусом R. Написать функцию belong с переменным числом параметров, которая определяет сколько точек с координатами (х , у) принадлежат заданной окружности. Написать вызывающую функцию main, которая обращается к функции belong не менее трех раз с количеством параметров 3, 9, 11.
Написать функцию (или макроопределение), которая определяет можно ли из чисел x, y, z построить треугольник. Написать функцию triangle с переменным числом параметров, которая определяет сколько троек рядом расположенных чисел типа int могут быть длинами сторон треугольника. Написать вызывающую функцию main, которая обращается к функции triangle не менее трех раз с количеством параметров 3, 9, 11.
Написать функцию (или макроопределение), которая находит угол треугольника по его сторонам. Написать функцию angles c переменным числом параметров, которая находит углы n-угольника по заданным сторонам. Написать вызывающую функцию main, которая обращается к функции angle не менее трех раз с количеством параметров 3, 9, 11.
Написать функцию (или макроопределение), которая находит площадь треугольника по его сторонам. Написать функцию square c переменным числом параметров, которая находит площадь n-угольника по заданным сторонам. Написать вызывающую функцию main, которая обращается к функции square не менее трех раз с количеством параметров 3, 5, 8.
Написать функцию (или макроопределение), которая находит длину стороны по координатам его точек.. Написать функцию belong, которая определяет принадлежит ли точка М с координатами (х , у) треугольнику, заданному координатами вершин. Написать функцию c переменным числом параметров, которая определяет принадлежит ли точка М выпуклому многоугольнику, заданному координатами своих вершин.
Написать функцию (или макроопределение), которая находит длину стороны по координатам его точек.. Написать функцию square, которая вычисляет площадь треугольника, заданного координатами вершин. Написать функцию squaren c переменным числом параметров, которая определяет площадь выпуклого многоугольника, заданного координатами своих вершин.
Написать функцию (или макроопределение), которая находит длину стороны по координатам его точек.. Написать функцию square, которая вычисляет площадь треугольника, заданного координатами вершин. Написать функцию square1 c переменным числом параметров, которая определяет площадь треугольника, содержащего диагональ наибольшей длины выпуклого многоугольника, заданного координатами своих вершин.