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

Одномерные массивы: задачи поиска, замены и перестановок элементов массива

< Лекция 11 || Лекция 12: 123 || Лекция 13 >

Лабораторная работа 11. Одномерные массивы: задачи поиска, замены и перестановок элементов массива

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

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

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

Ознакомьтесь с материалом лекции 11.

Задания к лабораторной работе.

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

  1. Дан одномерный целочисленный массив из N элементов, заданных с клавиатуры. Найти: количество и процентное соотношение положительных, отрицательных и нулевых элементов.
  2. Дан одномерный целочисленный массив из N элементов, заданных случайными числами на промежутке [a; b). Заменить все элементы массива, кратные 3, на сумму их цифр.
  3. Дан одномерный вещественный массив из N элементов ( N – нечетное), заданных случайными числами на промежутке [a; b). Поменять местами элементы симметричные относительно центрального.
  4. Дан одномерный целочисленный массив из N элементов, заданных случайными числами на промежутке [a; b). Поменять местами первый минимальный и последний максимальный элементы.
  5. Дан одномерный вещественный массив из N элементов, заданных случайными числами на промежутке [a; b). Выполните циклический сдвиг элементов с n -ой позиции вправо на k позиций.

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

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

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

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

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

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

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

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

  1. Какие классы задач предполагают изменение значений элементов массива?
  2. Какие классы задач предполагают только изменение порядка следования элементов в массиве?
  3. Каким образом можно выполнять обход массива?
  4. Почему в алгоритме циклического сдвига элементов массива важен порядок смещения элементов?
  5. Чем различаются алгоритмы поиска первого и последнего минимального (максимального) элемента в массиве?
< Лекция 11 || Лекция 12: 123 || Лекция 13 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

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

Спасибо!

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