Rambler's Top100

Скачать программы    Все программы автора

1. 10. 1. Линейные массивы

Линейным массивом можно обозначить, например, оценки учеников класса. Каждая оценка является значением элемента массива оценок "A" и имеет порядковый номер (индекс). В Турбо - Паскале значение индекса указывается в квадратных скобках после имени массива. Можно создать массив фамилий "S" учеников класса. Значением элемента массива будет фамилия ученика, а индексом - порядковый номер по списку. Пусть дан список фамилий учеников и их оценки:

 

 

Описание массивов:

 

Var A: array[ 1. . 30 ] of byte;

S: array[ 1. . 30 ] of string;

{ или } SO: array[ 1. . 30 ] of string[12];

 

Присвоение значений элементам массива:

 

"A" - A[1]:= 5; A[2]:= 4; и т. д.

"S " - S[1]:= 'Иванов'; S[2]:= 'Петров'; и т. д.

Приведем таблицу обозначений и соответствия элементам массива, их значений и индексов:

 

 

Если известна зависимость, по которой изменяются значения элементов массива, то присвоение значений удобно проводить в операторах цикла 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;

 

Практическое задание N 1. 18

 

1. Вывести на экран таблицу с колонкой "Фамилии" и тремя колоноками "оценки" по различным предметам и заполнить ее 10 строками данных. Значения элементов массива фамилий задаются в программе оператором присваивания, значения элементов массивов оценок задаются функцией Random.

2. Рассчитать общий средний балл десяти учащихся по одному предмету. Составить список фамилий учащихся с оценками, превышающими средний балл. Программа запрашивает ввод с клавиатуры фамилий и оценок учащихся и выводит на экран исходную таблицу: Фамилия - оценка, а также средний балл и таблицу учащихся с оценками, превышающими средний балл.

 

Практическое задание N 1. 19

 

1. Рассчитать наибольшее и наименьшее значения функции y= sin(x) - x 2 на интервале 0 =< x <= 1, изменяя значение "х" с шагом 0. 005. Вывести на экран таблицу значений "х" и "у" в три пары колонок, а также наибольшее и наименьшее значения функции "у" и соответствующие им значения "х".

2. Рассчитать наибольшее и наименьшее значения функции y= cos(x) + x на интервале 0 =< x <= Pi/2, разбив интервал на 99 отрезков. Вывести на экран таблицу значений "х" и "у" в две пары колонок, а также наибольшее и наименьшее значения функции "у" и соответствующие им значения "х".

 

Практическое задание N 1. 20

 

1. Рассчитать момент инерции массива точек относительно осей "x" и "y" :

Jx = m 1 * x 1 2 + m 2 * x 2 2 +. . . + m N * x N 2 ,

Jy = m 1 * y 1 2 + m 2 * y 2 2 +. . . + m N * x N 2 .

Массив "N" точек ( N = 60 ), имеющих массы "m" ( 5 =< m <= 25 ) определен на прямоугольнике с координатами - 10 <= x <= 10 и 10 <= y <= 20. Вывести на экран таблицу значений "N", "х", "у", "m", а также моменты инерции "Jx", "Jy".

Определить и вывести на экран номера точек с экстремальными значениями координат, массы и моментов инерции точки.

2. Расcчитать координаты центра тяжести массива точек: Xc = Xm/M, Yc = Ym/M, где

Xm = m 1 * x 1 + m 2 * x 2 +. . . + m N * x N ,

Ym = m 1 * y 1 + m 2 * y 2 +. . . + m N * y N ,

M = m 1 + m 2 +. . . + m N ,

Массив из "N" точек ( N = 45 ), имеющих массы "m" (3 =< m <= 35) определен на прямоугольнике с координатами - 22 <= x <= 33 и 11 <= y <= 44. Вывести на экран таблицу значений "N", "х", "у", "m", а также координаты центра тяжести "Xc", "Yc" и массу точек "M". Определить и вывести на экран номера точек с экстремальными значениями координат и массы.

3. Рассчитать массив "r" - расстояние между точками с соседними номерами и массива "s" - расстояние от каждой точки до последней вдоль ломанной, например:

r 1 = O ((x 1 - x 2 ) 2 + (y 1 - y 2 ) 2 ) - расстояние от точки "1" до точки "2",

s 1 = r 1 + r 2 + ... + r N - расстояние от точки "1" до последней точки "N",

s 2 = s 1 - r 1 - расстояние от точки "2" до последней вдоль ломанной.

 

 

Массив из "N" точек ( N = 30 ) определен на прямоугольнике с координатами 9<=x<=25 и 21<=y<=34. Вывести на экран таблицу значений "N", "х", "у", "s".

 

4. Рассчитать массив "s" - сумма расстояний от каждой точки до всех остальных, по формулам:

 

 

r ij = O ((x i -x j ) 2 +(y i -y j ) 2 ) - расстояние от i - ой

до j - ой точки,

s i = s i + r ij - суммирование производится во внутреннем цикле с параметром "j", а во внешнем цикле меняется параметр "i".

Массив из "N" точек ( N = 20 ) определен на прямоугольнике с координатами 3<=x<=15 и 8<=y<=14. Вывести на экран таблицу значений "N", "х", "у", "s".

5. К задаче п3. Определить массив "M" - номеров точек , которые придут к финишу быстрее первой, т. е. для которых выполняется условие: T[i] < T[1].

Здесь T[i] = S[i] / V[i] - время движения от i - ой точки до последней,

V[i] = 30 - i - скорость движения i - ой точки. Вывести на экран таблицу значений "N", "х", "у", "S", "V", "t" для всех точек и таблицу для "быстрых" точек.

6. К задаче п4. Определить массив номеров точек "M", которые ходят в гости к другим точкам дольше первой, т. е. для которых выполняется условие: S[i]>S[1] (точки каждый раз возвращаются в исходное положение (домой), скорость всех точек постоянна и одинакова). Вывести на экран таблицу значений "N", "х", "у", "s", для всех точек и таблицу для "медленных" точек.

Примечание к п.п. 1-6: Значения "x", "y", "m" задаются функцией Random.

 

Практическое задание N 1. 21

 

1. Разложить произвольное длинное целое число N на массив Z составляющих его цифр. Например, N=538, разлогается на Z[1]= 5, z[2]= 3, Z[3]= 8.

2. Определить массив всех простых чисел от 1 до N. Алгоритм состоит в нахождении чисел не делящихся нацело на ранеее найденные простые числа. Например, при Z[1]=2, Z[2]=3, проверяются числа >3, не делящиеся нацело на Z[1] и Z[2]. Наибольшее проверяемое число не превышает O N.

Примечание: Установить ограничение по числу элементов массива “Z”.

Вверх

Белорусский рейтинг MyMinsk.com Сайты беларуси Регистр "ЗУБР" Каталог на TIGA.BY, а также  новости, работа, объявления, фото и многое другое Rambler's Top100 Белорусский каталог программ Faststart - рейтинг сайтов, каталог интернет ресурсов, счетчик посещаемос­ти Яндекс.Метрика
Hosted by uCoz