|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[14] Примечание: при модификации массива "А" не забудьте соответственно изменять расположение данных в сопутствующих массивах, например, "P" или "S". При создании новых массивов согласно некоторым условиям выбираются данные из элементов исходного массива. Например, для создания массива "В" из четных столбцов массива "А" можно использовать операторы: for j:= 1 to M do If (j Mod 2) = 0 then for i:= 1 to N do B[i,j Div 2]:= A[i,j]; Для создания массива "В", состоящего из строк массива "А", удовлетворяющих условию A[i, 1] > C, где C - заданное число, можно использовать операторы: k:= 0; for i:= 1 to N do If A[i,1] > C then begin k:= k + 1; for j:= 1 to M do B[k,j]:= A[i,j] end; Для сравнения значений элементов массива удобно строить столбиковые диаграммы (гистограммы). Например, для вывода "N" значений положительных элементов массива "SS" в виде горизонтальной гистограммы можно использовать операторы: k:= 30/S max;{ k - нормирующий масштабный коэффициент } { S max - наибольший элемент массива "SS" } for i:=1 to N do begin writeln;{ переход к новому столбику } yg:=round(k*SS[i]);{ yg - длина столбика гистограммы } for j:=1 to yg do write(#220); { вывод символа с кодом 220 } Добавив операторы вывода порядкового номера и значений SS[ i] получаем гистограмму в виде: 2 II 4. 1 3 II 3. 7 4 I1 3. 2 Практическое задание N 1. 23 1.Рассчитать средний балл по шести предметам для каждого из десяти учащихся. Массивы наименований предметов и фамилий учащихся задать в программе. Массив оценок "А" задать с использованием функции Random. Вывести на экран таблицу: Фамилии (по вертикали), предметы (по горизонтали), все оценки, а также колонку со средними значениями оценок каждого учащегося. Вывести фамилии учеников и наибольшим и наименьшим средним баллом. 2.Исходя из данных массива "А" п. 1, создать массивы "B", "C", "D", содержащие число пятерок, четверок и троек соответственно, полученных каждым учеником по всем шести предметам. Вывести на экран таблицу: фамилии, предметы, оценки с колонками данных массивов "B", "C", "D". Примечание к п. п. 1- 2 : Вывести гистограммы с указанием фамилии ученика и его среднего балла, либо число троек полученных по всем предметам. 3.Модифицировать массив. Исходные данные п. 1. Вставить в список учащихся новую фамилию ученика с номером 5. Фамилию и оценки ученика ввести оператором Read. Убрать из таблицы предмет с номером два. Вывести на экран исходную и новую таблицы -фамилии, предметы, массив оценок. 4.К заданию п. 1. Создать два массива оценок учеников с четными и нечетными номерами. Вывести на экран таблицы - массивы оценок для каждой группы с указанием предметов и фамилий учащихся. 5.К заданию п. 1. Создать и вывести на экран три таблицы фамилий учеников со средним баллом: от 3-х до 4-х (не включая 4), от 4-х до 5-ти и 5 (отличников) с указанием всех оценок и среднего балла. 6.К заданию п. 1. Создать и вывести на экран таблицу фамилий десяти учеников, имеющих пятерки по шести, пяти, и т. д. предметам в порядке убывания. Для этого создать линейный массив "В" - число пятерок у каждого ученика. Создание нового массива фамилий "S1" можно проводить используя циклы: k:=0; for i:=1 to 10 do for o:=6 downto 0 do if B[i]=o then k:=k+1; S1[k]:=S[i]; 1. 10. 4. Создание баз данных с использованием массивов записей При работе с записями можно использовать массивы в полях записи или создавать массивы записей. Приведем примеры операторов для обоих случаев. Type Pupil = Record Fam: String[20];{ Фамилия } Name: String[10];{ Имя} Otmetka: array[1..5] of Byte { Отметки по пяти предметам } end; Var 10 A, 10 B: array[1..30]of Pupil; {Переменные типа массив записей } N, i: byte;{ N - Число учеников в классе } BeginN:= 13; 10 A[1]. Fam:= Гришин; 10 A[1]. Name:= Анатолий; { и т. д. } Writeln (Введите оценки учеников по первому предмету: ); For i:= 1 to N do begin With 10 A[i] do Begin Write(Fam:21, Name:11, ); Readln(Otmetka[1]) end { ---------------------------------------------------------------- } Type pupil = Record{ массивы в полях записи } Fam: array[1..30] of String[20];{ Фамилия } Name: array[1..30] of String[10];{ Имя } N: Byte;{ Число учеников в классе } Otmetka: array[1..5, 1..30] of Byte { Отметки по пяти предметам } end; Var 10 A, 10 B: Pupil;{ Переменные типа запись } i: byte; With 10 A do Begin N:= 13; Fam[1]:= Гришин; Name[1]:= Анатолий;{ и т. д. } Writeln (Введите оценки учеников по первому предмету: ); For i:= 1 to N do begin Write(Fam[i]:21, Name[i]:11, ); Readln(Otmetka[1, i]) end Практическое задание N 1. 23 Создать базу данных для десяти учащихся класса с оценками по трем предметам. Вывести на экран таблицу учащихся в алфавитном порядке с оценками по всем предметам. Вывести на экран таблицу в порядке увеличения средней оценки ученика. 1. 10. 5. Работа с большими массивами Поскольку суммарный размер всех переменных, описанных в программе, не может превышать длины сегмента ( 64 К ), то использование массивов больших размеров вызывает определенные трудности. Опишем известный способ "разбиения" двумерного массива с использованием переменных типа ссылка. program Big Mas; CONST N1= 30; N2= 50; type M1= array [1 . . N1 ] of REAL; { тип M1 - массив переменных вещественного типа} M2= array[1..N2] of AM1; { тип M2 - массив ссылок на начальные адреса элементов массивов типа M1} var a1, a2: M2; { двумерные массивы N1xN2 переменных вещественного типа } i, j: word; for i:=1 to N2 do New(a1[i]); { размещение массива в оперативной памяти } for i:=1 to N2 do New(a2[i]); for j:= 1 to N1 do for i:= 1 to N2 do begin a1[i]A[j]:= j + Sin(Pi*i/N2);{ пример расчета значений } a2[i]A[j]:= j - Cos(Pi*i/N2){ элементов двумерных массивов } for i:= 1 to N2 do Dispose(a1[i]); { освобождение оперативной памяти } for i:= 1 to N2 do Dispose(a2[i]); Readln; |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||