48466 (Работа с двумерными числовыми массивами), страница 3

2016-07-30СтудИзба

Описание файла

Документ из архива "Работа с двумерными числовыми массивами", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48466"

Текст 3 страницы из документа "48466"

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

  1. {обработчик Файл->Сохранить}

  2. procedure TMainForm.saveClick(Sender: TObject);

  1. var

  2. outFile: TextFile;

  3. begin

  4. //отобразим диалог выбора файла для сохранения, если отмена - выходим

  5. if SaveDialog.Execute = false then exit;

  6. AssignFile(outFile, SaveDialog.Files[0]);

  7. ReWrite(outFile);//создадим файл

  8. readMatrix;//прочтём матрицу из таблицы

  9. Write2DArray(workMatrix, outFile);//запишем матрицу в файл

  10. CloseFile(outFile);//закроем файл.

Процедура loadClick ведёт себя так же, только не создаёт файл, а открывает его для чтения:

  1. {обработчик Файл->Загрузить}

  1. procedure TMainForm.loadClick(Sender: TObject);

  2. var

  3. inFile: TextFile;

  4. begin

  5. //отобразим диалог выбора фала для загрузки, если отмена - выходим

  6. if OpenDialog.Execute = false then exit;

  7. AssignFile(inFile, OpenDialog.Files[0]);

  8. Reset(inFile);//подготовим файл к чтению

  9. Read2DArray(workMatrix, inFile);//прочтём матрицу из файла

  10. writeMatrix;//отобразим матрицу

  11. CloseFile(inFile);//закроем файл

  12. end;

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

2.4 Описание формата исходных файлов

Матрица в исходном файле представляется в текстовом виде. Каждая строка матрицы начинается с новой строки. Каждый элемент строки отделён от других произвольным числом пробелов и должен быть представлен целым числом, лежащим в диапазоне [-2147483648; 2147483647]. Если какой-то элемент выходит за границы этого диапазона, либо не является целым числом, то он интерпретируется как ноль.

Пример правильно составленного исходного файла:

  1. 100000 10000 20000 40000 -4000

  2. 50 100 -20 1000 2000

  3. -100 -50 -20 0 20

  4. -1000 -200 200 2 12

  5. 4000 -100000 -40000 -10000 80000

3. Эксплуатационная документация

3.1 Описание применения

Программа предназначена для выполнения определённого набора операций над матрицами. Описание каждой операции можно прочесть на соответствующей вкладке в интерфейсе программы.

Программа предназначена для исполнения на IBM-совместимых компьютерах с операционной системой Windows (тестирование проводилось на Windows XP).

Минимальные системные требования:

  • Дисплей с разрешением 1024x768

  • Клавиатура

  • 10 мегабайт свободной оперативной памяти

Требования приложения к оперативной памяти сильно зависят от размера обрабатываемой матрицы. Соответствующий минимальным требованиям компьютер сможет обрабатывать матрицы размером не менее ста элементов.

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

Выходные данные представляются в элементах формы, расположенных на соответствующей заданию вкладке (смотрите руководство оператора)

3.2 Руководство оператора

Интерфейс приложения разделён на две части. В верхней части формы отображается матрица исходных данных, которую можно редактировать и размеры которой можно менять. Нижняя часть формы представляет собой набор закладок, каждая из которых соответствует одной из поставленных задач. На каждой закладке содержится описание задания, кнопка «выполнить», а так же элементы, необходимы для отображения результата в рамках этого задания. Некоторые задания состоят в изменении исходной матрицы, результат выполнения таких заданий отображается непосредственно в исходных данных в верхней части формы. Всего существует как минимум три способа выбрать задачу: щёлкнуть мышкой по закладке, выбрать нужный пункт в меню «Задачи», нажать одну из кнопок F1 - F5.

Открытие файла с данными:

Выполнение задачи №1:

Результат выполнения задачи №1:

Переход к задаче №3:

Выполнение задачи №3:

Результат двукратного выполнения задачи №3:

Результат выполнения задачи №2:

Результат выполнения задачи №5:

Результат выполнения задачи №4:

Сохранение полученной матрицы в файл:

Завершение работы программы:

Содержание сохранённого файла:

  1. 100000 10000 20000 40000 -4000

  2. 50 100 -20 1000 2000

  3. -100 -50 -20 0 20

  4. -1000 -200 200 2 12

  5. 4000 -100000 -40000 -10000 80000

Выводы

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

    • При вызове SetLength с одним параметром размера будет выделена память только под первую размерность массива (например, будет увеличено число строк в матрице), остальные размерности затронуты не будут (в каждой добавленной строке будет ноль элементов).

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

    • Необходимо всегда знать границы каждой размерности, чтобы не выйти за пределы массива в чужую память. Для этого полезны функции low и high.

    • Необходимо всегда освобождать динамически выделенную память.

    • При присваивании динамических массивов копирования данных не происходит, присваиваются лишь указатели, таким образом, после присваивания два массива будут указывать на одну и ту же область памяти. Чтобы получить копию массива, можно использовать функцию Copy.

    • Copy копирует не весь многомерный массив, но только его первую размерность.

Приложения

Приложение 1. Тестовые примеры

Тест 1: Квадратная матрица 5x5.

Исходная матрица:

  1. -100 -50 -20 0 20

  2. 50 100 200 1000 2000

  3. 4000 10000 20000 40000 80000

  4. 100000 -100000 -40000 -10000 -4000

  5. -1000 -200 -20 2 12

Результат выполнения первого задания:

Максимальные элементы по строкам: 20; 2000; 80000; 100000; 12

Столбцы с максимальными элементами: 5; 5; 5; 1; 5

Результат выполнения второго задания:

S1 = 130

S2 = -40218

S1 > S2, матрица не была изменена

Результат выполнения третьего задания:

Число столбцов нечётно – был произведён сдвиг «вниз»

  1. -1000 -200 -20 2 12

  2. -100 -50 -20 0 20

  3. 50 100 200 1000 2000

  4. 4000 10000 20000 40000 80000

  5. 100000 -100000 -40000 -10000 -4000

Результат выполнения четвёртого задания:

Матрица, «развёрнутая» против часовой стрелки: -100; 50; 4000; 100000; -1000; -200; -20; 2; 12; -4000; 80000; 2000; 20; 0; -20; -50; 100; 10000; -100000; -40000; -10000; 40000; 1000; 200; 20000

Результат выполнения пятого задания:

Строки отсортированы в невозрастающем порядке сумм:

  1. 4000 10000 20000 40000 80000

  2. 50 100 200 1000 2000

  3. -100 -50 -20 0 20

  4. -1000 -200 -20 2 12

  5. 100000 -100000 -40000 -10000 -4000

Тест 2: прямоугольная матрица 3x8.

Исходная матрица:

  1. 1 - 18 17 -16 15 -14 13 -12

  2. -2 19 20 2000 200000 20000000 2000000000 11

  3. 3 -4 5 -6 7 -8 9 -10

Результат выполнения первого задания:

Максимальные элементы по строкам: 17; 2000000000; 9

Столбцы с максимальными элементами: 3; 7; 7

Результат выполнения второго задания:

S1 = -18 S2 = -4

S1 < S2, матрица была изменена:

  1. 1 -4 17 -16 15 -14 13 -12

  2. -2 19 20 2000 200000 20000000 2000000000 11

  3. 3 -18 5 -6 7 -8 9 -10

Результат выполнения третьего задания:

Число столбцов чётно – был произведён сдвиг «вверх»

  1. -2 19 20 2000 200000 20000000 2000000000 11

  2. 3 -18 5 -6 7 -8 9 -10

  3. 1 -4 17 -16 15 -14 13 -12

Результат выполнения четвёртого задания:

Матрица, «развёрнутая» против часовой стрелки: 1; -2; 3; -4; 5; -6; 7; -8; 9; -10; 11; -12; 13; -14; 15; -16; 17; -18; 19; 20; 2000; 200000; 20000000; 2000000000;

Результат выполнения пятого задания:

Строки отсортированы в невозрастающем порядке сумм:

  1. -2 19 20 2000 200000 20000000 2000000000 11

  2. 3 -4 5 -6 7 -8 9 -10

  3. 1 -18 17 -16 15 -14 13 -12

Тест 3: прямоугольная матрица 10x5, наполненная случайными числами.

Исходная матрица:

  1. 4490 6540 -12901 20330 -6046

  2. -27459 -22256 26705 14852 -30502

  3. 23701 -11502 -30162 -14325 -20739

  4. -15721 -14704 17504 -23934 21020

  5. -27932 7054 -30557 -28698 -19302

  6. -16794 -24715 28069 -2485 -11281

  7. 30727 18102 20673 -32373 23140

  8. -16762 -1303 5821 21065 -25295

  9. -24472 27091 -6385 -13002 -22009

  10. -12309 26284 20788 -21316 -25044

Результат выполнения первого задания:

Максимальные элементы по строкам: 20330; 26705; 23701; 21020; 7054

Столбцы с максимальными элементами: 4; 3; 1; 5; 2

Результат выполнения второго задания:

S1 = 4934

S2 = -21774

S1 > S2, матрица не была изменена

Результат выполнения третьего задания:

Число столбцов нечётно – был произведён сдвиг «вниз»

  1. -12309 26284 20788 -21316 -25044

  2. 4490 6540 -12901 20330 -6046

  3. -27459 -22256 26705 14852 -30502

  4. 23701 -11502 -30162 -14325 -20739

  5. -15721 -14704 17504 -23934 21020

  6. -27932 7054 -30557 -28698 -19302

  7. -16794 -24715 28069 -2485 -11281

  8. 30727 18102 20673 -32373 23140

  9. -16762 -1303 5821 21065 -25295

  10. -24472 27091 -6385 -13002 -22009

Результат выполнения четвёртого задания:

Матрица, «развёрнутая» против часовой стрелки: 4490; -27459; 23701; -15721; -27932; -16794; 30727; -16762; -24472; -12309; 26284; 20788; -21316; -25044; -22009; -25295; 23140; -11281; -19302; 21020; -20739; -30502; -6046; 20330; -12901; 6540; -22256; -11502; -14704; 7054; -24715; 18102; -1303; 27091; -6385; -13002; 21065; -32373; -2485; -28698; -23934; -14325; 14852; 26705; -30162; 17504; -30557; 28069; 20673; 5821

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5140
Авторов
на СтудИзбе
442
Средний доход
с одного платного файла
Обучение Подробнее