Предположим, известны результаты соревнований по стрельбе, в которых принимали участие 9 человек. Расположить данные результаты в порядке возрастания набранных при стрельбе очков.
rez : array[1..9] of integer;
for i:=1 to 9 do begin rez[i]:=random(101); write(rez[i]:5); end;
for j:=i+1 to 9 do
if rez[i]>rez[j] then
for i:=1 to 9 do write(rez[i]:5);
Рис. 10 – Схема алгоритма работы программы
Контрольные вопросы
- Что понимают под массивом данных?
- Что называют размерностью массива?
- Что понимают под индексом элемента массива?
- Какой массив называется одномерным?
- Приведите примеры одномерных массивов.
- Как описываются одномерные массивы на языке Turbo Pascal?
- Как задается диапазон изменения индексов массива?
- Как обозначаются индексы массивов на языке Turbo Pascal?
- Какого типа могут быть элементы массива?
- Какого типа могут быть индексы элементов массива?
- Какие стандартные алгоритмы по работе с одномерными массивами Вы знаете?
- Какими способами может быть заполнен массив? Приведите примеры.
- Как будет выглядеть блок схема для решения задачи сортировки одномерного массива?
- Как будет выглядеть блок схема для решения задачи поиска в одномерном массиве заданного элемента?
- Как будет выглядеть блок схема для решения задачи поиска в одномерном массиве максимального или минимального элемента?
Лабораторная работа № 5. Работа с двухмерными массивами
Цель работы: изучение принципов работы с двухмерными массивами на языке программирования Turbo Pascal. Получение навыков применения основных алгоритмов для решения задач с использованием двухмерных массивов.
Простая программа в Turbo Pascal
Теоретические сведения
Исходные данные для решения многих задач удобно представить в виде таблицы. Колонки и строки таблицы, как правило, содержат однородную информацию, если использовать терминологию Turbo Pascal – данные одинакового типа. Поэтому в программе для хранения и обработки табличных данных можно использовать совокупность одномерных массивов или двухмерный массив.
В общем виде описание двумерного массива выглядит следующим образом:
array – ключевое слово, показывающее, что объявляемый элемент данных является массивом;
– тип элементов массива.
Пример объявления двумерного массива:
Product: array[1..3,1..4] of integer;
Количество элементов массива может быть вычислено по формуле:
Таким образом, массив Product состоит из 12 элементов типа integer ((3–1+1)*(4–1+1)=3*4=12).
Приведем еще примеры описания двумерных массивов в Pascal–программах:
Type MATR=array[1..4,1..5] of integer;
Type B= array[2..9,0..6] of real;
Type C= array[–1..4,–1..4] of char.
Также допускается указание имени другого типа массива в качестве типа элементов массива, например:
Type VEC= array[1..4] of real;
MAS= array[1..5] of vec.
Turbo Pascal — пишем программу с нуля
В результате приведенного выше описания тип массива MAS будет объявлен как тип двумерного массива, первый индекс которого будет меняться от 1 до 5, а второй индекс – от 1 до 4, т.е. размерность массива составит 5*4 элементов.
Чтобы использовать элемент массива, нужно указать имя массива и индексы элемента. Первый индекс обычно соответствует номеру строки таблицы, второй – номеру колонки. Двумерные массивы, в которых диапазоны индексов начинаются с 1, также называются иногда матрицами. Если число строк матрицы равняется числу столбцов, то матрицы такого вида называются квадратными.
Элементы квадратной матрицы вида B[1,1], B[2,2]< B[3,3] составляют главную диагональ матрицы. Иногда вводят понятие побочной диагонали квадратной матрицы, которую составляют элементы B[1,N], B[2,N–1], B[3,N–2], .. B[N,1], где N – число строк (столбцов) матрицы.
При вводе и выводе значений элементов двумерных массивов используются вложенные циклы, в которых внешний оператор цикла, как правило, задает изменение строк массива, внутренний оператор цикла – изменение столбцов.
Пример использования вложенных циклов:
writeln(‘Введите элемент а[‘,i,’,’,j,’]’);
К типичным операциям с матрицами и двухмерными массивами можно отнести: вывод массива; ввод массива; сортировка массива; поиск в массиве элементов удовлетворяющих определенному условию; поиск в массиве максимального или минимального элемента; нахождение суммы элементов строк и столбцов матрицы.
Источник: studfile.net
Примеры решения задач в Turbo Pascal
Данная задача не должна представлять особой трудности, так как построена она на хорошо известных всем нам формулах расчета площади и периметра прямоугольника, поэтому зацикливаться на выведении этих формул мы не будем.
Составим алгоритм решения подобных задач:
1) Прочитать задачу.
2) Выписать известные и неизвестные нам переменные в «дано». (В задаче №1 к известным переменным относятся стороны: a,b ;к неизвестным — площадь S и периметр P)
3) Вспомнить либо составить необходимые формулы. (У нас: S=a*b; P=2*(a+b))
4) Составить блок-схему.
5) Записать решение на языке программирования Pascal.
Запишем условие в более кратком виде.
Решение задачи №1
Структура программы, решающей данную задачу, тоже проста:
- 1) Описание переменных;
- 2) Ввод значений сторон прямоугольника;
- 3) Расчет площади прямоугольника;
- 4) Расчет периметра прямоугольника;
- 5) Вывод значений площади и периметра;
- 6) Конец.
- Program Rectangle;
- Var a,b,S,P: integer;
- Begin
- write(‘Введите стороны прямоугольника!’);
- readln(a,b);
- S:=a*b;
- P:=2*(a+b);
- writeln(‘Площадь прямоугольника: ‘,S);
- write(‘Периметр прямоугольника: ‘,P);
- End.
Задача №2:Скорость первого автомобиля — V1 км/ч, второго – V2 км/ч, расстояние между ними S км. Какое расстояние будет между ними через T часов, если автомобили движутся в разные стороны? Значения V1, V2, T и S задаются с клавиатуры. Решение осуществляем, опять же, следуя алгоритму. Прочитав текст, мы переходим к следующему пункту. Как и во всех физических или математических задачах, это запись условий задачи: Дано: V1, V2, S, Т
Найти: S1 Далее идет самая главная и в то же время самая интересная часть нашего решения – составление нужных нам формул. Как правило, на начальных стадиях обучения все необходимые формулы хорошо нам известны и взяты из других технических дисциплин (например, на нахождение площади различных фигур, на нахождение скорости, расстояния и т.п.). Формула, используемая для решения нашей задачи, выглядит следующим образом: S1=(V1+V2)*T+S Следующий пункт алгоритма – блок-схема:
Решение задачи №2. А также решение, записанное в Pascal :
- Program Rasstoyanie;
- Var V1,V2,S,T,S1: integer;
- begin
- write(‘Введите скорость первого автомобиля: ‘);
- readln(V1);
- write(‘Введите скорость второго автомобиля: ‘);
- readln(V2);
- write(‘Введите время: ‘);
- readln(T);
- write(‘Введите расстояние между автомобилями: ‘);
- readln(S);
- S1:=(V1+V2)*T+S;
- writeln(‘Через ‘,t,’ч. расстояние ‘,S1,’ км.’);
- End.
Вам может показаться, что две эти программы правильны, но это не так. Ведь сторона треугольника может быть 4.5, а не 4, а скорость машины не обязательно круглое число! А Integer — это только целые числа. Поэтому при попытке написать во второй программе другие числа выскакивает ошибка: Обратите внимание в Паскале, как и в любом другом языке программирования десятичная дробь вводится с точкой, а не с запятой! Чтобы решить эту проблему вам надо вспомнить какой тип в Pascal отвечает за нецелые числа. В этом уроке мы рассматривали основные типы. Итак, это вещественный тип — Real. Вот, как выглядит исправленная программа:
-82%
Источник: videouroki.net
Язык Турбо Паскаль 7 0 Алфавит языка и
Источник: present5.com