Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Упорядочение массива. Обработка матрицСодержание книги
Поиск на нашем сайте
ПОСТАНОВКА ЗАДАЧИ: Расположить элементы массива в порядке возрастания. Из множества сортировок рассмотрим поиск MIN и перестановку. Исходный массив: 3 2 -5 2 0 8 4 Конечный массив: -5 0 2 2 3 4 8
Program SortirowkaMassiva; uses crt;
...
procedure Sort; var min: real; Begin for i:=1 to n do Begin min:=a[i]; k:=i; for j:=i to n do if a[j] a[k]:=a[i]; a[i]:=min End end;
Begin ClrScr; Input; ClrScr; write('Исходный массив: '); Print; writeln; Sort; write('Конечный массив: '); Print; readkey; End.
З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Отсортировать исходный массив по убыванию элементов.
3. Отсортировать исходный массив по возрастанию и убыванию элементов.
4. Отсортировать массив латинских букв.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 42
О Б Р А Б О Т К А М А Т Р И Ц ВВОД И ВЫВОД МАТРИЦ В Паскале двумерные массивы называют матрицами. TYPE MATRICA=ARRAY[1..N,1..M] OF REAL; - определение типа двумерного массива, где N -число строк, М -столбцов.
ПОСТАНОВКА ЗАДАЧИ: Заполнить матрицу и вывести ее на экран.
Заполнение матрицы может производиться также как и одномерного массива, только с помощью вложенных циклов.
Program Wwod_Wywod_Mat; uses crt; const n=3; var a: array[1..n,1..n] of integer; i,j: integer; Begin { ввод матрицы по строкам } ClrScr; for i:=1 to n do for j:=1 to n do Begin write('a[',i,',',j,']=');readln(a[i,j]) end; { вывод матрицы по строкам вывод в указанном месте} for i:=1 to n do for i:=1 to n do Begin begin for j:=1 to n do write(a[i,j],' '); gotoxy(10,5+i); writeln { перевод курсора на новую строку } for j:=1 to n do write(a[i,j]:3); end; end; readkey; readkey; End. End.
Можно задать постоянную матрицу:
const a: array[1..3,1..3] of integer=((1,2,3), (4,5,6), (7,8,9));
З А Д А Н И Я:
1. Набрать и исполнить программу. 2. Описать процедуры ввода и вывода матриц. 3. Задать постоянную матрицу. 4. Вывести на экран матрицу по столбцам. 5. Вывести матрицу в указанное место экрана.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 43
О Б Р А Б О Т К А М А Т Р И Ц СУММА ЭЛЕМЕНТОВ МАТРИЦЫ
ПОСТАНОВКА ЗАДАЧИ: Для двумерного массива B размером N х M необходимо вычислить сумму всех элементов матрицы.
Program Summa_Mat; uses crt;
...
procedure Sum; Begin s:=0; for i:=1 to n do for j:=1 to m do s:=s+b[i,j] end;
Begin ClrScr; Input_Mat; { если массив вводится с клавиатуры } ClrScr; Print_Mat; writeln; Sum; write('Сумма элементов матрицы равна ',s); readkey; End.
З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Ввести дробные и отрицательные числа.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 44
О Б Р А Б О Т К А М А Т Р И Ц ВЫЧИСЛЕНИЕ СЛЕДА МАТРИЦЫ СЛЕД МАТРИЦЫ - сумма диагональных элементов матрицы N х N.
ПОСТАНОВКА ЗАДАЧИ: Для матрицы В размером N х N надо вычислить сумму диагональных элементов B[i,i].
...
procedure Sled_Mat; { главная диагональ } Begin s:=0; for i:=1 to n do s:=s+b[i,i] end;
... ВЫЧИСЛЕНИЕ СУММЫ ЭЛЕМЕНТОВ СТРОК МАТРИЦЫ
ПОСТАНОВКА ЗАДАЧИ: Вычислить сумму элементов каждой строки матрицы В размером N х M. Результат получить в виде вектора D. ...
procedure Sum_Strok_Mat; Begin for i:=1 to n do Begin s:=0; for j:=1 to m do s:=s+b[i,j]; d[i]:=s End end;
... ...
З А Д А Н И Я:
1. Набрать и исполнить программу. 2. Получить сумму элементов побочной диагонали. 3. Напечатать вектор суммы строк вертикально справа от матрицы. 4. Получить вектор суммы столбцов матрицы.
Приложение: Процедуры обработки матриц:
Сумма указанной строки: S:=0; i:=3; For J:=1 to m do S:=S+b[i,j];
Транспонирование квадратной матрицы: For i:=1 to n-1 do For j:=1 to n do Begin P:= a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=p; end;
Удаление строки из матрицы: n:=n-1; For i:=1 to n do For j:=1 to m do b[i,j]:=b[i+1,j];
Включение строки в матицу: i:=n; while i>=k do begin for j:=1 to m do b[i+1,j]:=b[i,j]; i:=i-1; end; for j:=1 to m do b[k,j]:=c[j]; n:=n+1;
Перестановка строк матрицы: For k:=1 to k do c[k]:=a[i,k]; For k:=1 to k do a[i,k]:=a[j,k]; For k:=1 to k do a[j,k]:=c[k];
Поиск минимального элемента матрицы: Min:= a[1,1]; k;=1; L:=1; For i:=1 to n do For j:=1 to m do IF min>a[i,j] then begin min:=a[i,j]; k:=i; l:=j; end;
Сложение строк матрицы: For j:=1 to m do a[k,j]:=a[k,j]+a[l,j]*b;
З А Д А Н И Я:
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 45 ПОДГОТОВКА К КОНТРОЛЬНОЙ РАБОТЕ ПОСТАНОВКА ЗАДАЧИ: 1. ПОВТОРИТЬ ТЕМУ "МАССИВЫ (ВЕКТОРА И МАТРИЦЫ)". 2. В КОНТРОЛЬНОЙ РАБОТЕ 2 ЗАДАНИЯ: ОБРАБОТКА ОДНОМЕРНОГО МАССИВА (ВЕКТОРА); а) 1 -я обработка; б) 2 -я обработка. 3. ПРОГРАММА ДОЛЖНА ИМЕТЬ БЛОЧНУЮ СТРУКТУРУ. ПРИМЕР ЗАДАНИЯ: Заполнить одномерный числовой массив и выбрать из него отрицательные элементы. Найти среднее арифметическое отрицательных элементов массива. Отрицательные элементы отсортировать по возрастанию.
ПРИМЕР РЕШЕНИЯ: Program Vektor; uses crt; type mas=array[1..40] of integer; var i, k, s, n, p, q: integer; a, d: mas; procedure Input; Begin randomize; p:=-10; q:=10; for i:=1 to n do a[i]:=random(q-p+1)+p; end; procedure Print (y: mas; x: integer); Begin for i:=1 to x do write(y[i],' '); writeln; writeln; end; procedure Vybor; Begin k:=0; for i:=1 to n do if a[i] end; function Sredn_Arifm: real; Begin s:=0; if k<>0 then begin for i:=1 to k do s:=s+d[i]; Sredn_Arifm:=s/k; end else Sredn_Arifm:=0 end; procedure Sort; var l,j,min: integer; Begin k:=0; l:=0; for i:=1 to k-1 do begin min:=d[i]; for j:=i+1 to k do if d[j] min:=d[j]; l:=j; d[l]:=d[i]; d[i]:=min End End end;
Begin ClrScr; write('Число элементов(<40): '); readln(n); clrscr; Input; write('Исходный массив A: '); Print(a,n); vybor; write('Mассив D: '); Print(d,k); writeln('Среднее арифметическое отрицательных элементов массива равно ',Sredn_Arifm); if Sredn_Arifm=0 then writeln('Нет отрицательных элементов'); Sort; if Sredn_Arifm<>0 then Begin write('Отсортированный массив по возрастанию: '); Print(d,k) end; readkey; End. ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 46 ЗАПИСИ При работе с массивами существует один существенный недостаток – элементы в массиве одного типа. На практике часто требуется обрабатывать данные с элементами разного типа. Если одновременно вести работу с несколькими массивами разного типа, то программа получается очень громоздкой и требуется много времени для отладки такой программы. В Паскале предусмотрена возможность описывать сложные типы и работать с ними. ЗАПИСЬ – упорядоченное множество значений, называемых полями записи, которые могут иметь разные типы. ЗАПИСЬ – структура данных, построенная из компонент, имеющих в общем случае разные типы данных. Тип записи TYPE NAME=RECORD поле_1: тип; поле_2: тип; …….. поле_N:тип; END; VAR NAMREC: NAME; Record – служебное слово – запись, NAME – имя типа записи, Поле_N – поле записи указанного типа, в качестве поля может быть запись, NAMREC – имя записи – переменная определенного TYPE типа; Имена полей не должны совпадать, Если полей одного типа несколько, то их имена перечисляются через запятую: Record x,y: real; end;
Доступ к элементу записи производится с помощью компонентных переменных, имеющих форму R.T, где R – переменная типа записи, Т – имя поля. Если полей много, то обращение можно произвести с помощью оператора над записью или оператора присоединения WITH имя_записи DO Задача Для группы учащихся, имеющих итоговые оценки по 5 предметам вычислить средний балл и упорядочить список группы по убыванию среднего балла.
Нарисуем таблицу с указанием имен полей, их типов. Затем приступим к описанию переменных и написанию программы.
Табель успеваемости
Program Sr_Ball; uses crt; type grup=record fam:string[15]; mat,rus,xim,fiz:byte; sb:real; end; var tbl:array[1..20] of grup; y:grup; i,j,k,m:integer; x:real; Begin clrscr; write('Количество учащихся в группе: '); readln(m); writeln; for i:=1 to m do with tbl[i] do Begin write('fam[',i,']='); readln(fam); write('mat='); readln(mat); write('rus='); readln(rus); write('xim='); readln(xim); write('fiz='); readln(fiz); end; for i:=1 to m do with tbl[i] do sb:=(mat+rus+xim+fiz)/4; for i:=1 to m do Begin k:=i; x:=tbl[i].sb; for j:=i to m do if tbl[j].sb>x then begin k:=j; x:=tbl[j].sb end; y:=tbl[k]; tbl[k]:=tbl[i]; tbl[i]:=y; end; clrscr; writeln('Пн | Фамилия | Mat | Rus | Xim | Fiz '); writeln('---------------------------------------------'); for i:=1 to m do with tbl[i] do writeln(i:2,' |',fam:15,' | ',mat:2,' | ',rus:2,' | ',xim:2,' | ',fiz:2); readln; clrscr; writeln('Пн | Фамилия | Sredn ball '); for i:=1 to m do with tbl[i] do writeln(i:2,' |',fam:15,' |',sb:3:1); readkey; End. ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 47. ФАЙЛЫ Файл – форма хранения информации вне среды. Файл удобен: - данные из файла можно использовать в нескольких программах; - файл сохраняется после окончания работы программы; - данные часто не убираются в ОЗУ (игры); - с файлами можно выполнять множество полезных манипуляций. Типы файлов: 1) Последовательные – чтение/запись от начала к концу. 2) Файлы прямого доступа – доступ к записи по адресу. 3) Индексированные файлы – доступ к записи по адресу и по ключу. Порядок работы с файлами.
По организации работы с данными различают три вида файлов: типизированные, текстовые и нетипизированные.
|
||||||||||||||||
|
Последнее изменение этой страницы: 2016-08-12; просмотров: 241; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.007 с.) |