Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3_1 ВУМИ ЛабРабота 1.DOC
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
445.44 Кб
Скачать

1. Разработка с-программы обработки динамических двухмерных массивов.

В процессе выполнения лабораторной работы приобретаются практические навыки и опыт разработки простейшей С-программы обработки двухмерных массивов с динамическим определением размера строк и столбцов c управлением переориентацией стандартных потоков ввода-вывода stdin и stdout, использованием новых функций поразрядного ввода-вывода cin >> и cout <<, созданием собственных встроенных модулей в виде функций. Работа с элементами массива и передача массивов в функции обработки реализуется с помощью аппарата адресной арифметики. Среда выполнения - Turbo-среда C++.

Цель лабораторной работы:

  • приобрести элементарные навыки написание простейшей С-программы,

  • научиться использовать простейшие средства ведение диалога и умению переориентировать стандартные потоки ввода-вывода,

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

  • освоить инструмент оптимизации передачи аргументов посредством использования инструментария адресной арифметики,

  • познакомится с технологиями управления выделением и освобождением оперативной памяти и технологиями создания динамических массивов на основе инструментария адресной арифметики,

  • освоить технологии редактирования, компиляции и компоновки С-программы в среде Turbo C++.

  • использовать простейшие средства ведение диалога.

Задание.

В лабораторной работы необходимо разработать С-программу обработки двухмерных массивов с динамическим определением размера строк и столбцов, c возможностью переориентации стандартных потоков ввода-вывода stdin и stdout. Ввод-вывод размерности массивов и значений их элементов выполнить с использованием новых функций поразрядного ввода-вывода cin >> и cout <<, созданием собственных встроенных модулей в виде функций. Студент должен дополнительно к основной функции С-программы (main) самостоятельно разработать как минимум следующие встроенные модули:

  • функцию ввода значения элементов массива(ов),

  • функцию решения задачи обработки массива(ов) согласно индивидуальному заданию,

  • функцию вывода результирующей информации.

По выбору студента одна или несколько функций должны быть обязательно размещены в тексте С-программы до основной функции (main) и одна или несколько функций должны быть обязательно размещены после данной функции, чтобы освоить аппарат использования прототипов функции.

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

  • фактические значения исходных данных и новых матриц, векторов, отдельных переменных (например, максимального значения) согласно индивидуальному заданию,

  • адреса размещения новых матриц, вектор, отдельных переменных.

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

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

Методические пояснения.

1.1. Стандартные средства языка С++ работы с массивами.

В языке С++ массивы служат для объединения в одном объекте программы группы элементов одного и того же типа. Так как в стандарте языка нет такого типа данных как «строка», то это понятие заменяет массив символов.

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

Формат определения массива:

Тип-Данных Имя-Массива [Константное-Выражение [ = {Инициализация} ] ];

или

Тип-Данных Имя-Массива [ ] = {Инициализация};

Количество элементов массива определяется константным выражением, а при его отсутствии размерность массива устанавливается количеством инициализаторов. Индексное выражение должно быть целочисленным. Отсутствие константного выражения допускается также, если массив объявлен как ссылка на другой массив, размер которого уже ранее определен, либо массив используется в функции, как один из её аргументов. Нумерация индекса для обращения к элементам массива начинается с нуля!

Пример.

#include <iostream.h>

cons t int SIZE = 3;

void main(void)

{ int a[SIZE]; // Выделена память под три элемента a[0], a[1], a[2].

int i, sum = 0;

for ( i = 0; I < SIZE; ++i )

{ a [ i ] = i * i ; cout << “a [ “ << i << ‘ ] = “ << a [ i ] << “\ t “; sum + = a [ i ]; }

cout << “ \n sum = “ << sum << endl;

}

Размерность массива определяется количеством константных выражений. Например, объявление двухмерной матрицы:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]