|
||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Линейные массивы
Линейным массивом можно обозначить, например, оценки учеников класса. Каждая оценка является значением элемента массива оценок "A" и имеет порядковый номер (индекс). В Турбо-Паскале значение индекса указывается в квадратных скобках после имени массива. Можно создать массив фамилий "S" учеников класса. Значением элемента массива будет фамилия ученика, а индексом - порядковый номер по списку. Пусть дан список фамилий учеников и их оценки:
N Фамилии оценки Описание массивов: Var A: array[ 1.. 30 ] of byte; 1. Иванов 5 S: array[ 1.. 30 ] of string; 2. Петров 4 {или} SO: array[ 1.. 30 ] of string[12]; 3. Сидоров 5 4. Титов 5 Присвоение значений элементам массива: ............. "A" - A[1]:= 5; A[2]:= 4; и т. д. 30. Якупов 4 "S " - S[1]:= 'Иванов'; S[2]:= 'Петров'; и т. д.
Приведем таблицу обозначений и соответствия элементам массива, их значений и индексов: Номер элемента (индекс) 1 2 3 4 i 30 Элементы массива "S “ S[ 1 ] S[ 2 ] S[ 3 ] S[ 4 ] S[ i ] S[ 30 ] Значения элементов Иванов Петров Сидоров Титов... Якупов Элементы массива "A “ A[ 1 ] A[ 2 ] A[ 3 ] A[ 4 ] A[ i ] A[ 30 ] Значения элементов 5 4 5 5... 4
Если известна зависимость, по которой изменяются значения элементов массива, то присвоение значений удобно проводить в операторах цикла c параметром или с условием. Например, присвоим значения элементам массива "y" по зависимости: y=sin(x), где x= Pi * i/180, 0<= i <=180. For i:= 0 to 180 Do y[i]:= sin(Pi * i/180);
Присвоим случайные значения в диапазоне от -30 до +40 ста элементам массива "R": Randomize; for i:= 1 to 100 Do R[i]:= - 30 + Random(71);
Присвоим значения семи элементам массива "A" оператором Readln:
For i:= 1 to 7 Do begin Write(' Введите A[ ', i, ' ] = '); Readln(A [ i ]) end;
При выводе массива на экран удобно размещать данные в виде таблицы - в несколько колонок. Для вывода обозначений переменных ("шапки таблицы") можно использовать операторы вывода символов в цикле, например:
For j:=1 to 66 do Write('-'); Writeln; For j:=1 to 3 do Write('|_ _ Фамилия _ _| _ оценка _|'); Writeln; For j:=1 to 66 do Write('-'); Writeln;
- шапка для вывода в три пары колонок значений переменных "S" и "A". Шапка занимает 66 позиций (по ширине экрана в текстовом режиме размещается 79 символов и пробел). Оператор Writeln; переводит курсор на новую строчку.
Вывод значений ста элементов массивов "S" и "A" в три пары колонок, произведем операторами:
For i:= 1 to 100 do begin Write('|', s[i]:11,'|', a[i]:8, '|'); if (i mod 3) = 0 Then Writeln; if (i mod 60) = 0 then readln end;
В этом случае данные таблицы полностью не умещаются на экране и можно задержать прокрутку экрана при выводе данных, применяя оператор Readln после вывода, например, 20 строк.
В цикле удобно определять сумму элементов массива, наибольший (наименьший) элемент и создавать новые массивы, удовлетворяющие некоторому условию, например: s:= 0; for i:= 1 to 100 do s:= s + a[i]; { s - сумма элементов массива }
a_max:= a[1]; for i:= 1 to 100 do { поиск наибольшего элемента a[j] } if a[i] > a_max then begin a_max:= a[i]; j:= i end; j:= 0; k:= 0; for i:=1 to 100 do {создание новых массивов с элементами: b[j] >=0, c[k] <0} if a[i] >= 0 then begin j:= j+1; b[j]:= a[i] end else begin k:= k+1; c[k]:= a[i] end; j:= 0; k:= 8; for i:= 1 to 100 do {создание массива номеров "M" для элементов: a[i] > a[k]} if a[i] > a[k] then begin j:= j+1; M[j]:= i end;
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |