русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Обработка двумерных массивов


Дата добавления: 2014-09-29; просмотров: 1794; Нарушение авторских прав


 

Цель лабораторной работы: изучение структурной организации массивов и способов доступа к их элементам; совершенствование навыков процедурного программирования на языке Турбо Паскаль при решении задач обработки массивов.

 

Задание на программирование: используя технологию процедурного программирования, разработать программу обработки двумерных массивов в соответствии с индивидуальным заданием.

 

Порядок выполнения работы:

 

1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные, их ограничения.

2) Разработать математическую модель: описать с помощью формул и рисунков структуру массивов и процесс их преобразования.

3) Построить схему алгоритма решения задачи.

4) Составить спецификации необходимых подпрограмм: создания матрицы, вывода матрицы, обработки матрицы и др.

5) Составить программу на языке Турбо Паскаль.

6) Использовать оконный интерфейс предыдущих лабораторных работ.

7) Входные данныевводить с клавиатуры по запросу.

8) Выходные данные выводить на экран с пояснениями.

9) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов, в том числе с ошибочными входными данными. Входные и выходные массивы должны выводиться в одном и том же формате.

10) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, спецификация подпрограмм, контрольные примеры.

 


Варианты индивидуальных заданий

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

 

В заданной матрице поменять местами последний столбец и столбец, содержащий наименьший элемент матрицы.

 

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



 

В заданной матрице поменять местами главную и побочную диагонали.

В заданной матрице поменять местами первый столбец со столбцом, содержащим наибольший элемент матрицы.

 

В заданной матрице поменять местами среднюю строку и средний столбец.

 

В заданной матрице поменять местами последнюю строку со строкой, содержащей наибольший элемент матрицы.

 

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

 

В заданной матрице поменять местами последний столбец со столбцом, содержащим наибольший элемент матрицы.

 

В заданной матрице поменять местами последнюю строку со строкой, содержащей наименьший элемент матрицы.

 

В заданной матрице поменять местами первый столбец со столбцом, содержащим наибольший элемент главной диагонали.

 

В заданной матрице поменять местами последний столбец и побочную диагональ.

В заданной матрице поменять местами две строки: строку с указанным номером и строку, содержащую наименьший элемент матрицы.

 

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

 

В заданной матрице поменять местами два столбца: столбец, содержащий максимальный элемент матрицы, и столбец, содержащий минимальный элемент матрицы.

 

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

 

В заданной матрице поменять местами первый столбец и побочную диагональ.

 

В заданной матрице поменять местами последнюю строку со строкой, содержащей минимальный элемент матрицы.

 

В заданной матрице поменять местами последний столбец и столбец, содержащий минимальный элемент матрицы.

 

В заданной матрице поменять местами последнюю строку со строкой, содержащей максимальный элемент матрицы.

 

В заданной матрице поменять местами последний столбец со столбцом, содержащим максимальный элемент матрицы.

 

В заданной матрице поменять местами первую строку и главную диагональ.

 

В заданной матрице поменять местами главную диагональ и последний столбец.

 

В заданной матрице поменять местами два столбца: столбец, содержащий максимальный отрицательный элемент матрицы, и столбец, содержащий минимальный положительный элемент матрицы.

 

В заданной матрице поменять местами последний столбец и столбец, содержащий минимальный положительный элемент матрицы.

 

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

 


Пример программы

 

Program ObrMatr;

{Программа поиска и перестановки в матрице двух строк:

строки с минимальным и строки с максимальным элементом}

Uses Crt; {Подключение модуля}

 

Const

R=10; {Размер строки (столбца) матрицы}

Type

TInd=1..R; {Тип индекса элемента матрицы}

TElem=Integer; {Тип элемента матрицы}

TVect=Array[Tind] Of TElem; {Тип вектор}

TMatr=Array[Tind] Of TVect; {Тип матрица}

{$R+}

Procedure InMatr(kStr,kStb:TInd;Var M:TMatr);

{Процедура ввода значений элементов матрицы.

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы.

Выходное данное: M - матрица.}

Var

i,j:TInd; {Локальные переменные}

Begin

WriteLn('Вводите матрицу по строкам:');

For i:=1 To kStr

Do Begin

For j:=1 To kStb

Do Read(M[i,j]);

ReadLn;

End;

End;{InMatr}

 

Function NomMin(kStr,kStb:TInd; Const M:TMatr):TInd;

{Функция определения номера строки с минимальным элементом.

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы,

M - матрица.

Выходное данное: NomMin - номер строки с миним. элементом.}

Var

i,j,nmin:TInd;

min:TElem; {Локальные переменные}

Begin

min:=M[1,1]; nmin:=1;

For i:=1 To kStr

Do For j:=1 To kStb

Do If M[i,j]<min

Then Begin

min:=M[i,j];

nmin:=i;

End;

NomMin:=nmin;

End; {NomMin}

Function NomMax(kStr,kStb:TInd; Const M:TMatr):TInd;

{Функция определения номера строки с максимальным элементом.

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы,

M - матрица.

Выходное данное: NomMax - номер строки с макс. элементом.}

Var

i,j,nmax:TInd;

max:TElem; {Локальные переменные}

Begin

max:=M[1,1]; nmax:=1;

For i:=1 To kStr

Do For j:=1 To kStb

Do If M[i,j]>max

Then Begin

max:=M[i,j];

nmax:=i;

End;

NomMax:=nmax;

End; {NomMax}

 

Procedure ObmenStr(kStr,kStb:TInd; Var M:TMatr);

{Процедура перестановки строк с минимальным и максимальным элементом.

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы,

M - матрица целых чисел.

Выходное данное: M - преобразованная матрица.}

Var

strM:TVect;

nmin,nmax:TInd; {Локальные переменные}

Begin

nmin:=NomMin(kStr,kStb,M);

nmax:=NomMax(kStr,kStb,M);

If nmin<>nmax

Then Begin

strM:=M[nmin];

M[nmin]:=M[nmax];

M[nmax]:=strM;

End;

End; {ObmenStr}

 

Procedure Okno(x1,y1,x2,y2,cf,ct:Byte);

{Процедура формирования окна}

Begin

Window(x1,y1,x2,y2); {Установка параметров окна}

TextBackGround(cf); {Установка цвета фона}

TextColor(ct); {Установка цвета текста}

ClrScr; {Очистка окна}

End;{Okno}

 

 

Procedure OutMatr(kStr,kStb:TInd; Const M:TMatr);

{Процедура вывода матрицы.

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы,

M - матрица.}

Var

i,j:TInd; {Локальные переменные}

Begin

For i:=1 To kStr

Do Begin

For j:=1 To kStb

Do Write(M[i,j]:3);

WriteLn;

End;

End;{OutMatr}

 

Var

n,m,nStb:TInd;

Matr:TMatr;

Begin

Okno(1,1,80,25,0,15); {На черном фоне белый текст}

Write('Размеры матрицы? ');

ReadLn(n,m);

Okno(1,6,38,20,2,15); {На зеленом фоне белый текст}

InMatr(n,m,Matr); {Ввод матрицы}

WriteLn('Исходная матрица');

OutMatr(n,m,Matr); {Вывод матрицы}

ObmenStr(n,m,Matr); {Перестановка строк}

Okno(40,6,80,20,3,15); {На голубом фоне белый текст}

WriteLn('Матрица после перестановки строк');

OutMatr(n,m,Matr); {Вывод матрицы}

ReadLn;

End.

 




<== предыдущая лекция | следующая лекция ==>
Обработка одномерных массивов | Методы сортировки


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.079 сек.