русс | укр

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

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

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

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


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

Тоже самое, но с использованием вложенных циклов


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


Program sort2;

const n=10;

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

i, k, c : integer;

begin

for i:=1 to n do readln(a[i]);

for i:=1 to n-1 do

for k:=1 to n-i do

if a[k]>a[k+1] then begin c:=a[k];

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

a[k+1]:=c;

end;

for i:=1 to n do writeln(a[i]);

еnd.

 

Двухмерные массивы.

Описание двумерного массива определяет имя, размер массива (количество строк и столбцов) и базо­вый тип. Формат описания в разделе переменных:

Var <имя маcсива > : array [<тип индекса1> , <тип индекса2>] of <базовый тип>;

Двумерный массив — массив, у которого положение каждого элемента характеризуется двумя числами, первое из них определяет номер строки, второе – номер столбца, на пересечении которых находится элемент. Он так же, как и одномерный массив, состоит из значений одного типа. В двумерных массивах хра­нятся значения прямоугольных таблиц. Примеры описания двумерных массивов:

Var С : array [1. .5, 1. .10] of real;

R1, R2: array [0. .10, 1. .365] of char;

Sim : array [1. .20, 1. .10] of string[20];

Const M=10; N=20;

Var X, S : array [1. .M, 1. .N] of byte;

1. Организация данных в виде массивов помогает нам решать многие задачи. Вот еще одна: разработать программу, обслуживающую шахматный турнир.

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

Обычно результаты турниров заносятся в турнирные таблицы. Средством обработки таких таблиц в языках программирования служат двумерные массивы.

2. Описание двумерного массива в языке паскаль записывается так:

<Имя_массива> : array[<n1>..<n2>,<k1>..<k2>] of [<тип>]



где строки таблицы имеют номера с n1 по n2, а столбцы - с k1 по k2. Запись <Имя_массива>[n,k] указывает на элемент, стоящий на пересечении n-й строки и k-го столбца. Например, описание

Tab : array[1..10,1..15] of Integer

задает таблицу из 10 строк и 15 столбцов (всего 10 х 15 = 150 элементов), состоящую из целых чисел. Tab[3,5] указывает на 5-й элемент в 3-й строке.

Турнирную таблицу для N участников удобно хранить в двумерном массиве N x N типа Real, т.к. результатом шахматной партии для каждого участника может быть победа (1 очко),

поражение (0 очков) или ничья (0.5 очка). Вот описание таблицы:

Tab : array[1..N,1..N] of Real .

3. Для простоты не будем пока рассматривать фамилии участников, а будем различать их по номерам. Вводить результаты встреч будем в таком виде: номер первого участника, номер второго участника, результат первого участника (количество очков). Понятно, что одна встреча приводит к заполнению сразу двух элементов таблицы. Так будет выглядеть фрагмент программы, предназначенный для ввода результата одной встречи:

writeln('Введите номера участников встречи');

readln(n1,n2);

writeln('Сколько очков у участника ',n1,' ?');

readln(Tab[n1,n2]);

Tab[n2,n1] := 1-Tab[n1,n2];

4. Эти действия нужно повторять столько раз, сколько встреч состоится в турнире. Если все запланированные встречи состоятся, то их количество можно сосчитать по формуле n(n-1) - подумайте, почему. Однако, может случиться, что по каким-то причинам часть встреч не состоится, а какие-то будут сыграны дважды. Поэтому удобнее как-то обозначить окончание ввода данных в программе, например, после каждой встречи выяснять, будут ли еще вводиться данные. Вот фрагмент программы, предназначенный для ввода результатов всех встреч турнира:

kon := 'Д';

while kon <> 'Н' do

begin

writeln('Введите номера участников встречи');

readln(n1,n2);

writeln('Сколько очков у участника ',n1,' ?');

readln(Tab[n1,n2]);

Tab[n2,n1] := 1-Tab[n1,n2];

writeln('Будут ли еще встречи ? (Д/Н)');

readln(kon);

end;

5. По окончании турнира нужно вывести турнирную таблицу на экран:

for i := 1 to N do

begin

for k := 1 to N do

write(Tab[i,k]:3:1);

writeln;

end;

7. Бывают задачи, в которых данные удобно хранить в виде трехмерного (и даже четырех- и более -мерного) массива. Например, результат встречи в футбольном турнире представляет собой не одно, а три числа - количество забитых и пропущенных мячей и количество очков (2 - победа, 0 - поражение, 1 - ничья). Такую таблицу удобно заносить в массив

Football : array[1..N,1..N,1..3] of Integer;

Элемент Football[3,5,2] содержит информацию о количестве мячей, пропущенных 3-й командой в матче с 5-й командой.

Поразмышляйте самостоятельно над процедурой ввода результатов футбольного турнира.



<== предыдущая лекция | следующая лекция ==>
Сортировка простым выбором. | Работа с элементами


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


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

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

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


 


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

 
 

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

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