русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Одномерные массивы


Дата добавления: 2014-02-04; просмотров: 10196; Нарушение авторских прав


Основные понятия

Массив обозначается одним именем. Так всю совокупность действительных чисел

1.6, 14.9, -5.0, 8.5, 0.46

можно считать массивом и обозначить одним именем, например А. Образующие массив переменные называются элементами массива. Каждый элемент массива обозначается именем массива с индексом, заключенным в квадратные скобки.

A[1], A[2], A[3], ..., A[n].

Индекс определяет положение элемента массива данных относительно его начала.

Для рассмотренного выше примера элементами массива А являются:

A[1]=1.6, A[2]=14.9, A[3]=-5.0, A[4]=8.5, A[5]=0.46

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

Формат

Var

<идентификатор,…>:array[тип индекса] of <тип компонент>;

Например:

M: array[1..4] of integer;

MAS: array[1..60] of real;

Для описания массива можно использовать предварительно определенные константы.

Например,

Const

G1=4; G2=6;

Var

M1: array[1..G1] of integer;

M2: array[1..G2] of real;

Заполнение массива

1 Способ (заполнение с клавиатуры. Динамический ввод данных)

Var

M:array[1..10] of integer;

I: byte;

Begin

For I:=1 To 10 Do Begin

Write('Введите ',I,' значение ');

ReadLn(M[I]);

End;

End.

2 Способ (с использованием генератора случайных чисел)

Var

M: array[1..25] of integer;

I: byte;

Begin

For I:=1 To 25 Do Begin

M[I]:=Random(50);

Write(M[I]:4);

End;

End.

3 Способ (статический ввод данных)

Const

M: array[1..12] of integer = (31,28,31,30,31,30,31,31,30,31,30,31);

Var

I: Integer;

Begin

For I:=1 To 9 Do

Write(M[I]:3);

End.

6.1.4 Примеры решения задач

1. Алгоритмы поиска и присвоения значений элементам массива

1. Составить программу обработки массива размерностью n, заполненного целыми числами, введенными с клавиатуры. Вывести индексы и значения положительных элементов массива.

USES Crt;



CONST N=10;

VAR

A:ARRAY[0..N] OF INTEGER;

I:BYTE;

BEGIN

ClrScr;

{ Заполнение массива }

FOR I:=1 TO N DO Begin

Write('Введите ',I,' элемент массива '); ReadLn(A[I]);

End;

{ Обработка элементов массива }

FOR I:=1 TO N DO

IF A[I]>0 THEN WriteLn('Положительный элемент = ',A[I],' его индекс = ',I);

END.

2. Составить программу вычисления и печати значений функции Y=sin(x-1)/2x. Значения аргументов задать в массиве X, состоящего из 6 элементов. Значения функции записать в массив Y.

USES Crt;



VAR

X,Y:ARRAY[0..6] OF REAL;

I: BYTE;

BEGIN

ClrScr;

FOR I:=1 TO 6 DO Begin

Write('Введите ',I,' значение аргумента '); ReadLn(X[I]);

End;

FOR I:=1 TO 6 DO Begin

Y[I]:=SIN(X[I]-1)/(2*X[I]);

WriteLn(' X= ',X[I]:4:1,' Y=',Y[I]:5:2);

End;

END.

3. Дан массив M, состоящий из 30 элементов. Элементы массива - произвольные целые числа. Выдать на экран значение каждого пятого и положительного элемента. Указанные элементы выдать в строку.

USES Crt;



VAR

M:ARRAY[0..30] OF INTEGER;

I: BYTE;

BEGIN

ClrScr; Randomize;

WriteLn(' Значения элементов массива');

FOR I:=1 TO 30 DO Begin

M[I]:=Random(20)-4; Write(M[I]:3);

End; WriteLn;

I:=5;

WriteLn(' Значения каждого пятого и положительного элемента массива');

While I<=30 DO Begin

IF M[I] > 0 THEN Write(M[I]:3);

I:=I+5;

End;

END.

Примеры для самостоятельного решения:

1. Дан одномерный массив размерностью 10, заполненный целыми числами, введенными с клавиатуры, и величина N. Отрицательные элементы заменить на N. Измененный массив вывести на экран одной строкой.

2. Дан одномерный массив размерностью N, заполненный случайными числами в интервале от -15 до 20. Вывести на экран значения элементов массива, абсолютное значение которых >10.

3. Дан одномерный массив размерностью N, заполненный случайными числами. Каждый третий элемент массива возвести в квадрат, если элемент отрицательный. Измененный массив вывести на экран.

4. Составить программу вычисления и печати значений функции Y=(sinx+1)Öcos4x. Значения аргументов задать в массиве X, состоящего из 10 элементов. Значения функции записать в массив Y.

5. Из элементов массива А, состоящего из 25 элементов, сформировать массив D той же размерности по правилу: первые 10 элементов находятся по формуле Di=Ai+i, остальные - по формуле Di=Ai-i.

2. Алгоритмы нахождения суммы, произведения и количества элементов массива. Работа с индексами элементов массива

1. Определить сумму элементов массива Р(n), значения которых > заданного Т

USES Crt;



Const N=30;

VAR

P:ARRAY[0..N] OF INTEGER;

I,T:BYTE; S:INTEGER;

BEGIN

ClrScr; Randomize;

{ Заполнение массива случайными числами }

WriteLn(' Значения элементов массива');

FOR I:=1 TO N DO Begin

P[I]:=Random(30); Write(P[I]:3);

End; WriteLn;

Write(' Введите значение переменной '); ReadLn(T);

S:=0;

FOR I:=1 TO N DO

IF P[I]>T THEN S:=S+P[I]; { сумма элементов массива > T }

WriteLn(' Сумма элементов массива > заданного значения = ',S);

END.

2. Дан массив целых чисел, состоящий из 25 элементов. Подсчитать сумму элементов массива, произведение положительных и количество нулевых элементов. Результат вычисления вывести на экран.

USES Crt;



VAR

A:ARRAY[0..25] OF INTEGER;

I: BYTE; S,K: INTEGER; P: REAL;

BEGIN

ClrScr; Randomize;

{ Заполнение массива случайными числами }

WriteLn(' Значения элементов массива');

FOR I:=1 TO 25 DO Begin

A[I]:=Random(10)-3; Write(A[I]:3);

End; WriteLn;

S:=0; K:=0; P:=1;

FOR I:=1 TO 25 DO Begin

S:=S+A[I]; { сумма элементов массива }

IF A[I]>0 THEN P:=P*A[I]; { произведение положительных элементов массива }

IF A[I]=0 THEN K:=K+1; { количество нулевых элементов массива }

End;

WriteLn(' Сумма элементов массива = ',S);

WriteLn(' Произведение положительных элементов массива = ',P:0:0);

WriteLn(' Количество нулевых элементов массива = ',K);

END.

3. Дан массив четных чисел, состоящий из 15 элементов. Заполнить его с клавиатуры. Найти:

· сумму элементов, имеющих нечетные индексы;

· подсчитать количество элементов массива, значения которых больше заданного числа T и кратны 5;

· номер первого отрицательного элемента, делящегося на 5 с остатком 2.

USES Crt;



CONST T=11;

VAR

A:ARRAY[0..15] OF INTEGER;

I,NP,FL: BYTE; S,K: INTEGER;

BEGIN

ClrScr; Randomize;

{ Заполнение массива с клавиатуры }

FOR I:=1 TO 15 DO Begin

Write('Введите ',I,' злемент массива '); ReadLn(A[I]);

End; WriteLn;

S:=0; K:=0; FL:=0;

FOR I:=1 TO 15 DO Begin

IF I mod 2 =0 THEN S:=S+A[I]; { сумма элементов, имеющих четные индексы }

IF (A[I]>T) AND (A[I] mod 5 =0) THEN K:=K+1; { количество }

IF (A[I]<0) AND (A[I] mod 5 =-2) AND (FL=0) THEN Begin NP:=I; FL:=1; End;

End;

WriteLn(' Сумма элементов,имеющих четные индексы = ',S);

WriteLn(' Количество элементов, значения которых > ',T,' и кратны 5 = ',K);

WriteLn(' Номер первого отрицательного элемента, делящегося на 5 с остатком 2 = ',NP);

END.

Примеры для самостоятельного решения:

1. Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти:

· сумму отрицательных элементов;

· количество тех элементов, значения которых положительны и не превосходят заданного числа А;

· номер последней пары соседних элементов с разными знаками.

2. Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти:

· сумму элементов, имеющих нечетное значение;

· вывести индексы тех элементов, значения которых больше заданного числа А;

· количество положительных элементов, кратных К. ( К вводится с клавиатуры ).

3. Дан массив целых чисел, состоящий из N элементов. Определить среднее арифметическое положительных элементов.

4. Дан массив чисел. Найти, сколько в нем пар одинаковых соседних элементов.

5. Оценки, полученные учащимися за урок, занесены в массив. Подсчитать количество «5» и «2», полученных учащимися за урок и средний балл.

6. В очереди за билетами стоят мужчины и женщины. Какое количество мужчин стоит в начале очереди до первой женщины.

3. Алгоритмы нахождения наибольшего или наименьшего элемента массива и его индекса

1. Дан массив K, состоящий из 45 элементов. Элементы массива - произвольные целые числа. Определить минимальный элемент массива и его индекс.

USES Crt;



VAR

K:ARRAY[0..45] OF INTEGER;

I,IND: BYTE; MIN:INTEGER;

BEGIN

ClrScr; Randomize;

WriteLn(' Значения элементов массива');

FOR I:=1 TO 45 DO Begin

K[I]:=Random(35)+6; Write(K[I]:3);

End; WriteLn;

MIN:=K[1]; IND:=1;

{ нахождение минимального значения и его индекса }

FOR I:=2 TO 45 DO

IF K[I]<MIN THEN Begin MIN:=K[I]; IND:=I; End;

WriteLn(' Минимальное значение = ',MIN);

WriteLn(' Индекс минимального значения = ',IND);

END.

2. Дан массив B, состоящий из N элементов. Элементы массива - произвольные целые числа. Определить сумму элементов, расположенных до максимального элемента массива.

USES Crt;



CONST N=20;

VAR

B:ARRAY[0..N] OF INTEGER;

I,IND: BYTE; MAX,S:INTEGER;

BEGIN

ClrScr; Randomize;

WriteLn(' Значения элементов массива');

FOR I:=1 TO N DO Begin

B[I]:=Random(35); Write(B[I]:3);

End; WriteLn;

MAX:=B[1]; IND:=1;

{ нахождение максимального значения и его индекса }

FOR I:=2 TO N DO

IF B[I]>MAX THEN Begin MAX:=B[I]; IND:=I; End;

WriteLn(' Максимальное значение = ',MAX);

{ нахождение суммы элементов, расположенных до максимального элемента }

S:=0;

FOR I:=1 TO IND-1 DO

S:=S+B[I];

WriteLn(' Cумма элементов, расположенных до максимального элемента =',S);

END.

3. Известны данные о среднемесячной температуре за год. Определить, какая была самая высокая температура летом и самая низкая зимой.

USES Crt;



VAR

MAS: ARRAY[1..12] OF REAL;

I: INTEGER; MIN,MAX:REAL;

BEGIN

ClrScr;

{ Заполнение массива с клавиатуры }

FOR I:=1 TO 12 DO Begin

Write(' Введите среднюю температуру за ',I,' месяц '); ReadLn(MAS[I]);

End;

MAX:=MAS[6]; MIN:=MAS[12];

{ Определение самой высокой температуры летом }

FOR I:=7 TO 8 DO

IF MAX<MAS[I] THEN MAX:=MAS[I];

{ Определение самой низкой температуры зимой }

FOR I:=1 TO 2 DO

IF MIN>MAS[I] THEN MIN:=MAS[I];

WriteLn(' Самая высокая температура летом ',MAX);

WriteLn(' Самая низкая температура зимой ',MIN);

END.

Примеры для самостоятельного решения:

1. Дан массив чисел. Найти значение максимального элемента. Если таких элементов несколько, то определить, сколько их.

2. Дан массив чисел. Найти среднее арифметическое максимального и минимального элемента. Вывести значения и индексы этих элементов.

3. Дан массив чисел. Определить количество элементов, находящихся в интервале от 1 до 12 и расположенных до максимального элемента массива.



<== предыдущая лекция | следующая лекция ==>
Примеры решения задач | Примеры решения задач


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.182 сек.