Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 129; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.205.114 (0.009 с.) |