Опубликован: 02.02.2011 | Уровень: для всех | Доступ: платный
Лекция 7:

Решение задач с использованием указателей

< Лекция 6 || Лекция 7: 12 || Лекция 8 >

Лабораторная работа 6. Решение задач с использованием указателей

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

При выполнении лабораторной работы для каждого задания требуется написать программу на языке С++, которая получает на входе данные различных типов (в соответствии с условиями задач), выполняет их обработку в соответствии с требованиями задания и выводит результат на экран. Ввод данных осуществляется с клавиатуры с учетом требований к входным данным, содержащихся в постановке задачи. Ограничениями на входные данные является допустимый диапазон значений используемых числовых типов в языке С++.

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

Выполните приведенные ниже задания.

  1. Напишите функцию, параметрами которой служат адреса трех переменных типа double. Функция должна возвращать адрес (значение указателя) той из переменных, адресуемых параметрами, которая имеет максимальное значение. В основной программе с помощью обращения к функции поменяйте знак значения максимальной из трех переменных. Для решения данной задачи используйте вспомогательную функцию, возвращающую адрес максимальной из переменных, адресуемых двумя параметрами-указателями.
  2. Напишите функцию для вычисления значения многочлена Pn(x)=anxn+an-1xn-1+...+a1x1+a0. Коэффициенты an,an-1,...,a0, аргумент x и коэффициенты передавайте в функцию с помощью списка параметров изменяемой длины. В основной программе вычислите и напечатайте значения нескольких полиномов. Для вычисления полиномов используйте схему Горнера:
    Pn(x)=(...(anx+an-1)x+an-2)x+...+a1)x+a0.
  3. Напишите функцию, которая упорядочивает значение трех переменных, адреса которых передаются ей в качестве параметров. В основной программе продемонстрируйте применение написанной функции. Для решения данной задачи определите и используйте вспомогательную функцию, которая упорядочивает значения только двух переменных, адресуемых ее двумя аргументами.
  4. Напишите функцию с переменным числом параметров в соответствии с заданием, продемонстрировать вызов функции с различным числом параметров. Выполните вычисления для трех и десяти чисел. Решите задачу двумя способами: через передачу количества параметров как параметр функции и через использование признака конца списка параметров. В задаче требуется найти среднее гармоническое элементов числового ряда.

Указания к выполнению работы.

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

Следует реализовать каждое задание в соответствии с приведенными этапами:

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

Требования к отчету.

Отчет по лабораторной работе должен соответствовать следующей структуре.

  • Титульный лист.
  • Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
  • Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
  • Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
  • Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
  • Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
  • Выводы по лабораторной работе.
  • Ответы на контрольные вопросы.

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

  1. С какой целью в программах используют указатели на указатели?
  2. Что будет являться результатом однократной операции разыменования указателя, реализующего многочисленное перенаправление?
  3. Для чего в программе необходима инициализация указателя перед первым его использованием?
  4. С какой целью в прототипах функций с переменным числом параметров должны быть указаны обязательные параметры?
  5. Как в функции с переменным числом параметров осуществляется доступ к списку неизвестных параметров?
  6. Почему для доступа к списку неизвестных параметров достаточно знать адрес хотя бы одного обязательного параметра?
  7. Почему ошибки, связанные с некорректным использованием указателей, относятся к наиболее трудноустранимым?
< Лекция 6 || Лекция 7: 12 || Лекция 8 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Ольга Замятина
Ольга Замятина
Россия, Калиниград, РГУ им. И. Канта, 2009
Эдуард Санин
Эдуард Санин
Украина, Харьков, ХАИ