Решение задачи введем новое понятие массив




Скачать 119.69 Kb.
НазваниеРешение задачи введем новое понятие массив
Дата публикации23.02.2013
Размер119.69 Kb.
ТипРешение
shkolnie.ru > Информатика > Решение
М А С С И В Ы


ПОСТАНОВКА ЗАДАЧИ - существует большое число задач, требующих много

однотипных переменных. Например, присвоить переменным значения среднесуточных температур в течение года.

Работать с таким количеством переменных очень трудно: процесс описания, присваивания, способы обработки переменных и т.д.
РЕШЕНИЕ ЗАДАЧИ - введем новое понятие - массив.

МАССИВ - это упорядоченный по номерам набор значений, объединенных общим типом и именем. Упорядоченность в том, что элементы массива располагаются в последовательных, пронумерованных ячейках памяти. Массив имеет фиксированные: имя, тип и количество значений. Массиву выделяется место в памяти.

Элементы массива - это переменные с индексами. Индексы можно вычислять.
ОПРЕДЕЛЕНИЕ МАССИВА - массивы, как и простые переменные, подлежат описанию в разделе переменных:
VAR <имя>: ARRAY[] OF <тип элементов>;
array (эррэй) - массив. of (оф) - из.

Тип индексов - любой скалярный тип кроме real. Индексы можно вычислять.

Тип элементов - любой для данной версии языка.

[min..max] - размер массива. min - нижняя, max –верхняя границы индексов. min<=max. Границы можно задать с помощью переменных.
Можно задавать постоянный массив:

const x: array [1..10] of integer=(4,6,3,5,2,1,7,8,9,13);

const x: array [1..8] of char=('a','b','c','d','e','f','g','h');

Элементы таких массивов являются константами.
Если массивы одинаковы и отличаются лишь именами, то их можно описать в одной строке:

var a,b,c :array[1..n] of real; , где n -верхняя граница индекса и n описывается в разделе констант.
^ ВИДЫ МАССИВОВ :
Одномерные - ряд элементов. B[5] - 5-ый элемент массива.

Двумерные - таблицы. B[3,5] - элемент таблицы B ,стоящий в 3 строке и в 5 столбце.

Многомерные - ряд таблиц (изучаются в Вузе).
^ ЗАПОЛНЕНИЕ МАССИВА:

1. С помощью CONST.

2. С помощью READ и циклической конструкции.

3. Часто требуется обнуление ячеек массива. For I:=1 to n do A[I]:=0;

4. Для отладки программ и для программирования игр, тестов применяют заполнение массива случайными числами. randomize; For I:=1 to n do A[I]:=random(q-p+1)+p; qp

5. Присваивание значений. A[1]:=7; A[2]:=77; A[3}:=33; и т. д.
^

ЗАПОЛНЕНИЕ И ВЫВОД МАССИВОВ



Заполнить и вывести на экран одномерный массив целых чисел.
Program Primer1; uses crt;

var a: array[1..5] of integer;

i: integer;

Begin

clrscr;
{******* заполнение массива c клавиатуры *******}

for i:=1 to 5 do

begin

write('a[',i,']='); readln(a[i]);

end;

clrscr;
{***** вывод массива на экран *****}

Write(‘Массив А: ’); for i:=1 to 5 do write(a[i],’ ‘);
readkey;

End.

З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Увеличить число элементов массива.
3. Описать размерность массива с помощью переменных.
Заполнить и вывести на экран одномерный массив символов.
Program Primer2; uses crt;

const a: array[1..5] of char=('a','b','c','d','e');
procedure Print(n: integer);

var i: integer;

begin

for i:=1 to n do write (a[i]:2)

end;
Begin

clrscr;

write('Массив А: '); Print(5);

readkey;

End.

З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Вывести на экран первые 3 буквы.
3. Вместе с тремя буквами вывести на экран последнюю букву.
3. Заполнить массив дробными и отрицательными значениями.
4. Заполнить и вывести на экран одномерный массив, содержащий 200 одинаковых элементов.
5. Вывести элементы построчно ( используйте wherex, см. практическое занятие 17 ).
6. Вывести элементы в указанной с клавиатуры строке экрана.
ОБРАБОТКА ОДНОМЕРНЫХ ЧИСЛОВЫХ МАССИВОВ.
^

#1. СУММИРОВАНИЕ ЭЛЕМЕНТОВ МАССИВА



ПОСТАНОВКА ЗАДАЧИ: Найти сумму элементов одномерного массива.

Найти среднее арифметическое.

Program Summa; uses crt;

const n=5;

var a: array[1..n] of integer;

m,i,s: integer; Автоматическое заполнение

случайными числами от1 до20

procedure Input; Procedure Input;

begin begin

for i:=1 to n do p:=1; q:=20; randomize;

begin for i:=1 to n do a[i]:=random(q-p+1)+p;

write('a[',i,']='); readln(a[i]); end;

end

end;

procedure Print;

begin

write('Массив целых чисел А: ');

for i:=1 to n do write(' ',a[i])

writeln; writeln; { пропуск строки }

end;

procedure Sum( m: integer);

begin

s:=0;

for i:=1 to m do s:=s+a[i];

end;

Begin

ClrScr;

Input; { заполнение массива из 5 элементов }

ClrScr;

Print; { печать заполненного массива }

write('Сколько элементов суммировать: '); readln(m);

Sum(m); writeln; { суммирование m элементов массива }

writeln('Сумма ',m,' элементов массива равна: ', s);

{ суммирование всех элементов массива }

^ Sum(n); writeln;

writeln('Сумма всех ',n,' элементов массива равна: ', s);

Write ('Среднее арифметическое всех элементов равно ', s/n);

Readkey;

End.
З А Д А Н И Я:

1. Набрать и исполнить программу.

2. Увеличить число элементов массива.

3. Найти сумму 8 элементов массива.

4. Осуществить ввод количества элементов массива с клавиатуры.

ОБРАБОТКА ОДНОМЕРНЫХ ЧИСЛОВЫХ МАССИВОВ
^

СУММА ЭЛЕМЕНТОВ МАССИВА ПО УСЛОВИЮ




ПОСТАНОВКА ЗАДАЧИ: Заполнить и вывести массив на экран.

Ввести условие суммирования ( а[i]
Найти сумму и вывести на экран результат.
^ Program SumUsl; uses crt;

const a: array[1..10] of integer=(3,5,2,1,6,3,8,7,5,9);

var i, s, u: integer;
procedure Su;

begin

s:=0;

for i:=1 to 10 do if a[i]

write('Сумма элементов меньших ',u,' равна ',s);

end;
Begin

ClrScr;

Print; { смотри занятие 32 }

writeln; writeln;

write('Введите условие суммирования : '); readln(u);

Su;

Readkey;

End.
З А Д А Н И Я:
1. Изменить условие суммирования.
2. Написать процедуру Input.
3. Найти произведение элементов по условию.

ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ
^

ОПРЕДЕЛЕНИЕ ЧИСЛА ЭЛЕМЕНТОВ МАССИВА ПО УСЛОВИЮ



ПОСТАНОВКА ЗАДАЧИ:

Заполнить массив и вывести его на экран.

Ввести с клавиатуры условие.

Подсчитать количество элементов удовлетворяющих условию.
^ Program KolUsl; uses crt;

const m=1; { min индекс }

n=10; { max индекс }

var i, k, usl: integer;

a: array[m..n] of integer;
... { процедуры Input и Print см. занятие 32 }
procedure Kol_po_Usl;

begin

write('Введите ограничение :'); readln(usl);

k:=0;

for i:=m to n do if a[i]>usl then k:=k+1

write('Кoличество элементов больших ',usl, ' равно ', k);

end;
Begin

ClrScr;

Input;

ClrScr;

Print;

writeln; writeln;

Kol_po_Usl;

Readkey;

End.
З А Д А Н И Я:
1. Самостоятельно написать процедуры Input, Print и исполнить программу.
2. Изменить условие подсчета элементов.
3. Подсчитать сумму элементов по условию.

^

СУММА ДВУХ ОДИНАКОВЫХ ПО РАЗМЕРУ МАССИВОВ



В языке Pascal программист может описывать свои собственные типы и объекты, относящиеся к этому типу. Тип массив относится к структурированным типам.

Описание типа помещают в раздел определения типов после раздела описания констант и до раздела описания переменных (var).
Например: TYPE massiv=array[1..100] of integer;

var a, b, c: massiv;

Описание типа позволяет применить формальный параметр типа massiv.
^ ПОСТАНОВКА ЗАДАЧИ:

Заполнить и вывести на экран два одинаковых по размеру массива: А и B.

Найти массив C ,каждый элемент которого равен сумме

соответствующих элементов массивов А и В: C[i]=A[i]+B[i].
^ Program Summa_Mass; uses crt;

Type mas= array[1..100] of integer;

var a, b, c: mas;

I, n: integer;
procedure Input(var x: mas);

begin

for i:=1 to n do begin write('Элемент [',i,']='); readln(x[i]); end

end;
procedure Print(x: mas); begin for i:=1 to n do write(' ',x[i]); end;
procedure SumMass; begin for i:=1 to n do c[i]:=a[i]+b[i]; end;
Begin

ClrScr; n:=20;

writeln('Ввoд массива А:); Input(a);

writeln('Ввод массива В:); Input(b);

ClrScr;

write(' A: '); Print(a);

write(' B: '); Print(b);

SumMass;

write(' C: '); Print(c);

readkey;

End.

З А Д А Н И Я:
1. Набрать и исполнить программу.

2. Найти сумму элементов, стоящих на четных местах в массиве С.

3. Найти сумму четных элементов в массиве С.

^

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 36



#5. ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ

ОБЪЕДИНЕНИЕ ДВУХ МАССИВОВ С ЧЕРЕДОВАНИЕМ ЭЛЕМЕНТОВ



ПОСТАНОВКА ЗАДАЧИ:

Объединить два массива A и B ,содержащих по N элементов в один массив c, который будет содержать 2*N элементов, т.е. получить массив C=(а1,b1,a2,b2,..,an,bn).
^ Program Ob_Mass; uses crt;

type massiv=array[1..20] of integer;

var a,b,c: massiv;

I, n: integer;
procedure Input(var x: massiv; n: integer);

begin

for i:=1 to n do

begin

write('Элемент [',i,']='); readln(x[i]);

end

end;
procedure Print(x: massiv; n: integer);

...
procedure Ob(n: integer);

begin

for i:=1 to n do

begin

c[2*i-1]:=a[i];

c[2*i]:=b[i]

end

end;
Begin

ClrScr; n:=10;

Input(a,n); writeln;

Input(b,n);

ClrScr;

write('Массив А: '); Print(a, n); writeln;

write('Массив B: '); Print(b, n); writeln;

Ob(n);

write('Массив C: '); Print(c, 2*n);

readkey;

End.

З А Д А Н И Я:
1. Набрать и исполнить программу.

2. Изменить количество элементов в массивов.

3. Объединить массивы так, чтобы элементы одного массива следовали

за элементами другого: c=(а1,а2,а3,..,аn,b1,b2,b3,..,bn).

^

И Н В Е Р Т И Р О В А Н И Е МАССИВА



ПОСТАНОВКА ЗАДАЧИ:

Требуется изменить порядок следования элементов массива C, состоящего из n элементов, на обратный, используя вспомогательную переменную p.

Исходный массив C: 1 2 3 4 5

Конечный массив C: 5 4 3 2 1

Перестановка производится по одному элементу через промежуточную переменную:

1) 1-ый элемент передается в ячейку p;

2) последний элемент ставится на место 1-го;

3) элемент из ячейки p ставится на последнее место.

Количество таких перестановок равно trunc(n/2) или (n div 2) – деление нацело.
^ Program Inwert; uses crt;

{ описание переменных и массива }

{ описание процедуры ввода массива }

{ описание процедуры вывода массива }
procedure Inw;

var m: integer; p: real;

begin

m:=trunc(n/2); { определение числа циклов }

for i:=1 to m do

begin

p:=c[i]; { перестановка i элемента в p }

c[i]:=c[n-i+1]; { перестановка на i место элемента n-i+1 }

c[n-i+1]:=p; { перестановка элемента из p нa n-i+1 место }

end

end;
Begin

ClrScr; n:=20;

Input;

ClrScr;

Print; writeln;

Inw;

Print; writeln;

Inw;

Print; writeln;

Readkey;

End.

З А Д А Н И Я:
1. Набрать и исполнить программу.

2. Увеличить число элементов.

3. Заменить числовой массив на символьный.

Получить из слова ГОРОД слово ДОРОГ и другие перевертыши.

4. Произвести инвертирование с сохранением исходного массива.

Подсказка: используйте новый массив.

ФОРМИРОВАНИЕ МАССИВА ИЗ ЭЛЕМЕНТОВ ДРУГОГО
^

МАССИВА УДОВЛЕТВОРЯЮЩИХ ЗАДАННОМУ УСЛОВИЮ



ПОСТАНОВКА ЗАДАЧИ: Требуется из данного массива А, состоящего из N элементов, выбрать элементы, удовлетворяющие заданному ( пусть А(i)>T ), и сформировать из них массив B.

Исходный массив А: 4 6 8 2 23 1 9 Условие: A(i)>=8

Новый массив B: 8 23 9
Особенность решения: Индексы элементов массивов A и B не совпадают,

так как не все элементы массива A включаются в массив B.

Введем переменную, формирующую индексы и являющуюся счетчиком

элементов нового массива.
^ Program Massiv_po_Uslowiu; Uses crt;

. . .
procedure Mass_Usl;

begin

write('Введите параметр условия: '); readln(t);

k:=0; {k- счетчик найденых элементов }

for i:=1 to n do if a[i]>=t then begin k:=k+1; b[k]:=a[i]; end;

end;
Begin

ClrScr; n:=20;

Input; { заполнение исходного массива A }

ClrScr;

Print(а, n); writeln; { печать исходного массива A }

Mass_Usl; { формирование массива по условию }

Print(b, k); writeln; { вывод на экран нового массива B }

Readkey;

End.
З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Изменить условие.
3. Вывести на экран сообщение о количестве найденных элементов.
4. Найти среднее арифметическое элементов нового массива.

^ ПОИСК МАКСИМАЛЬНОГО ЭЛЕМЕНТА В МАССИВЕ

С ЗАПОМИНАНИЕМ ЕГО ПОЛОЖЕНИЯ (ИНДЕКСА)
ПОСТАНОВКА ЗАДАЧИ: Найти в массиве A, состоящем из n элементов, наибольший

элемент и запомнить его индекс (K).
^ Program MaxElMassiva; uses crt;

{ описание массива и переменных }

{ процедура ввода массива }

{ процедура вывода массива }
procedure MaxEl;

begin

max:=a[1]; k:=1;

for i:=1 to n do if max

writeln('Максимальный элемент массива А равен ',max);

writeln('Максимальный элемент массива стоит на ' ,k, ' месте);

end;
Begin

ClrScr; n:=20;

Input;

ClrScr;

Print; writeln;

MaxEl;

Readkey;;

End.

З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Найти минимальный элемент и его индекс.
3. Найти минимальный и максимальный элементы, и их индексы.
4. Заменить найденный минимальный элемент числом 100 и показать

на экране массив с этой заменой.

^

ПОИСК ЗАДАННОГО ЭЛЕМЕНТА В МАССИВЕ



ПОСТАНОВКА ЗАДАЧИ: Определить, есть ли в заданном массиве элемент равный L.

Имеется массив А: 3 1 2 5 3 4 8 L=5

В массиве А имеется элемент равный 5
В данной программе можно использовать "флажок" - специальную переменную, которая принимает значения "истина" или "ложь" в зависимости от того найден элемент или нет.
^ Program Poisk_El_Massiva; uses crt;
. . .
procedure Poisk(L: integer);

var fl: boolean;

begin

fl:=false;

for i:=1 to n do if a[i]=L then fl:=true;

if fl then write(' Элемент равный ',L,' имеется ')

else write(' Элемент равный ',L,' отсутствует');

end;
Begin

ClrScr; n:=20;

Input;

ClrScr;

Print; writeln; writeln;

write('Введите значение искомого элемента: '); readln(L);

Poisk(L);

Readkey;

End.

З А Д А Н И Я:
1. Набрать и исполнить программу, т. е. найти 3-4 элемента.
2. Если в массиве несколько одинаковых элементов, то найти первый из них и указать его индекс.
3. Подсчитать количество одинаковых элементов в массиве.


^

У П О Р Я Д О Ч Е Н И Е М А С С И В А



ПОСТАНОВКА ЗАДАЧИ: Расположить элементы массива в порядке возрастания.

Из множества сортировок рассмотрим поиск 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. Отсортировать массив латинских букв.

О Б Р А Б О Т К А М А Т Р И Ц
^

ВВОД И ВЫВОД МАТРИЦ



В Паскале двумерные массивы называют матрицами.

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. Вывести матрицу в указанное место экрана.

^ 1. СУММА ЭЛЕМЕНТОВ МАТРИЦЫ
ПОСТАНОВКА ЗАДАЧИ: Для двумерного массива 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. Ввести дробные и отрицательные числа.

^ 2. ВЫЧИСЛЕНИЕ СЛЕДА МАТРИЦЫ
СЛЕД МАТРИЦЫ - сумма диагональных элементов матрицы 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;
. . .

^ 3. ВЫЧИСЛЕНИЕ СУММЫ ЭЛЕМЕНТОВ СТРОК МАТРИЦЫ
ПОСТАНОВКА ЗАДАЧИ: Вычислить сумму элементов каждой строки матрицы В

размером 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. Получить вектор суммы столбцов матрицы.

Похожие:

Решение задачи введем новое понятие массив iconЗадача 1 Условие
Условие в тексте заданий понятие «вектор» есть синоним для «одномерный массив». Программная функция должна получать на вход параметр-массив...
Решение задачи введем новое понятие массив iconОдномерные и двумерные массивы (таблицы) Массив
Массив — это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются...
Решение задачи введем новое понятие массив iconЗадание № Одномерные массивы Постановка задачи
Анализ постановки задачи показывает, что в алгоритме задачи должны быть элементы циклической и разветвляющейся структур. Исходные...
Решение задачи введем новое понятие массив iconType Matrix=Array. 3,. 2 ] of Real; //Тип двумерный массив // вещественных...
Тип массив – структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя
Решение задачи введем новое понятие массив iconПлан стр. Введение Теоретические основы проблемы развития творческого...
Понятие «Творчество» определяется как деятельность, в результате которой ребенок создает новое, оригинальное, проявляя воображение,...
Решение задачи введем новое понятие массив iconНеобходимо переделать текст программы изложенный ниже для варианта выделенного зеленный цветом
Задание. Дан массив чисел Х=0,-1,22,-34,43,-51,-63,17,8,-95 Необходимо сформировать новый массив Y, в который включить следующие...
Решение задачи введем новое понятие массив iconR: Real; { Знаменатель дроби }
Дан одномерный массив целых чисел. Найти сумму положительных элементов массива с k1-го по k2, где k1 и k2 вводятся с клавиатуры....
Решение задачи введем новое понятие массив iconПрактическая работа №6
В соответствии с вариантами задания (табл. 4) представить: алгоритм вычисления значений заданной функции в виде схемы программы и...
Решение задачи введем новое понятие массив iconГородская спартакиада «Во славу Отечества» прошла 18 сентября 2013...
Рисунок. Инструктаж команды перед стартом на городской спартакиаде «Решение пожарно-тактической задачи»
Решение задачи введем новое понятие массив iconМодуль 2 Лабораторная работа №1
Замечание. Задачи из данного пункта решить двумя способами, используя одномерный массив, а затем двумерный. Размерность массива вводится...
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2014
shkolnie.ru
Главная страница