Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
61
Добавлен:
16.02.2016
Размер:
781.82 Кб
Скачать

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

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

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

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

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

7.2. "Функции с переменным числом параметров"

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

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

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

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

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

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

  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).

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

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

3. Варианты

  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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  11. Написать функцию days с переменным числом параметров, которая находит количество дней, прошедших между двумя датами (параметрами функции являются даты в формате «дд.мм.гг». Написать вызывающую функцию main, которая обращается к функции days не менее трех раз с количеством параметров 3, 5, 8.

  12. Написать функцию prost с переменным числом параметров, которая находит все простые числа из нескольких интервалов. Интервалы задаются границами А и В.

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

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

(НОД- наибольший общий делитель)

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

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

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

  3. Написать функцию (или макроопределение), которая находит угол треугольника по его сторонам. Написать функцию angles c переменным числом параметров, которая находит углы n-угольника по заданным сторонам. Написать вызывающую функцию main, которая обращается к функции angle не менее трех раз с количеством параметров 3, 9, 11.

  4. Написать функцию (или макроопределение), которая находит площадь треугольника по его сторонам. Написать функцию square c переменным числом параметров, которая находит площадь n-угольника по заданным сторонам. Написать вызывающую функцию main, которая обращается к функции square не менее трех раз с количеством параметров 3, 5, 8.

  5. Написать функцию (или макроопределение), которая находит длину стороны по координатам его точек.. Написать функцию belong, которая определяет принадлежит ли точка М с координатами (х , у) треугольнику, заданному координатами вершин. Написать функцию c переменным числом параметров, которая определяет принадлежит ли точка М выпуклому многоугольнику, заданному координатами своих вершин.

  6. Написать функцию (или макроопределение), которая находит длину стороны по координатам его точек.. Написать функцию square, которая вычисляет площадь треугольника, заданного координатами вершин. Написать функцию squaren c переменным числом параметров, которая определяет площадь выпуклого многоугольника, заданного координатами своих вершин.

  7. Написать функцию (или макроопределение), которая находит длину стороны по координатам его точек.. Написать функцию square, которая вычисляет площадь треугольника, заданного координатами вершин. Написать функцию square1 c переменным числом параметров, которая определяет площадь треугольника, содержащего диагональ наибольшей длины выпуклого многоугольника, заданного координатами своих вершин.

Соседние файлы в папке МетодУказЛабРабот