Задача 05 Сломанный монитор (60 баллов) Олимпиада по информатике Муниципальный этап 1 тур 7 декабря 2013.

Презентация:



Advertisements
Похожие презентации
Тема: « Вставка- удаление элементов массива » :18:06.
Advertisements

const n=10; var a:array[1..n] of integer; i,j,c,b,k:integer; begin randomize; for i:=1 to n do begin a[i]:=random(11)-5;write(a[i]:5) end;writeln;
Задача: определить является ли простым заданное число.
Задача Разбить предложение по словам. В предложении могут быть знаки «.», «!», «?» и «,»
Тема: «Понятие квадратная матрица» :17:47.
3. Дана прямоугольная матрица, элементами которой являются целые числа. Поменять местами ее строки следующим образом: первую строку с последней, вторую.
A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5] Двумерный массив можно представить.
PROGRAM example1; CONST N = 8; M = 10; VAR a : ARRAY [ 1.. N, 1.. M ] of INTEGER; i, j : INTEGER; BEGIN FOR i := 1 TO N DO FOR j := 1 TO M DO a[ i, j ]
Двумерным массивом называется совокупность данных, каждое значение которых, зависит от его положения в строке и в столбце.
Р ЕШЕНИЕ ЗАДАНИЙ С2 Одномерные массивы. 1, 2 …5 номер элемента А имя массива Значения Индексы А[3]=9 Имя массива Индекс Значение Теория по.
Двумерные массивы ( матрицы ) на языке PASCAL Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел – номера.
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса за итоговый тест.
Квадратная матрица (массив) Учитель МОБУ СОШ 2 с. Исянгулово Шадрина О.М.
Двумерные массивы. Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Их можно представить в виде прямоугольной.
PROGRAM example1; const m=100; var a : ARRAY [1.. m] of INTEGER; i,k,n,q : INTEGER; BEGIN readln (n); randomize; WRITELN('Полученный массив:' ); FOR i.
Двумерные массивы. Заполнение и вывод элементов. Понятие. Двумерный массив – это массив с двумя измерениями (прямоугольные таблицы, матрицы). Пример:
Одномерные массивы Решение задач. Табличный способ организации данных Одномерные и двумерные массивы.
Индекс – величина, характеризующая положение элемента, относительно начала массива. МАССИВЫ Конечная, упорядоченная по номерам совокупность значений, объединенных.
1 Индекс – величина, характеризующая положение элемента, относительно начала массива. МАССИВЫ Конечная, упорядоченная по номерам совокупность значений,
Автор: учитель информатики МКОУ Плесской средней общеобразовательной школы Юдин Андрей Борисович Часть 1.
Транксрипт:

Задача 05 Сломанный монитор (60 баллов) Олимпиада по информатике Муниципальный этап 1 тур 7 декабря 2013

Ввод данных и определение координат «белых пикселей» - W. Тут же определяется количество точек W. readln (n,m); for i:=1 to n do for j:=1 to m do begin t[i,j]:='.'; t[1,3]:='W'; t[1,6]:='W'; t[4,3]:='W'; t[4,6]:='W'; {t[2,2]:='W'; t[4,3]:='W';} {t[1,1]:='W'; t[1,4]:='W'; t[1,6]:='W'; t[2,4]:='W';} {t[2,2]:='W';} end; {ввод массива} f:=0; for i:=1 to n do for j:=1 to m do if t[i,j]='W' then begin f:=f+1; y[f]:=i; x[f]:=j; end; {координаты W вводятся в массивы Х – номер столбца и У – номер строки}

Если точка W одна, то выводим на экран массив без изменений if f=1 then for i:=1 to n do begin for j:=1 to m do begin t[y[1],x[1]]:='W'; write (t[i,j]); end; writeln (); end;

Если точек больше одной, то сортируем массивы Х и У по возрастанию (можно мах искать) for i:=1 to f do for j:=1 to f-1 do if x[j]>x[j+1] then begin a:=x[j+1]; x[j+1]:=x[j]; x[j]:=a; end; for i:=1 to f do for j:=1 to f-1 do if y[j]>x[j+1] then begin a:=y[j+1]; y[j+1]:=y[j]; y[j]:=a; end;

Вычисляем расстояния между наиболее удаленными точками W по столбцам L и строкам D L:=abs(x[1]- x[f]); D:=abs(y[1]- y[f]);

Условия, при которых невозможно нарисовать квадрат: 1) размеры «монитора» меньше, чем сторона квадрата 2) расстояние между строками (первой и последней) не равно расстоянию между столбцами IF (l>n) or (d>m) or (l<>d) then writeln(-1);

При условии, что квадрат существует и W не находятся в углах квадрата, строим его. Оставляем точки W на месте, заполняем 2 строки +, а затем и 2 столбца заполняем +. if (l d) and (f>1) then begin for i:=1 to n do begin for j:=1 to m do begin IF (t[i,j]<>'W') and (j>=x[1]) and (j<=x[1]+l+1) and ((i=y[1]) or (i=y[f])) then t[i,j]:='+'; IF (t[i,j]<>'W') and ((j=x[1]) or (j=x[1]+l+1)) and (i>y[1]) and (i<y[f]) then t[i,j]:='+'; write (t[i,j]); end; writeln (); end;

Строим квадрат при условии, что он существует и W находятся в углах квадрата. Оставляем точки W на месте, заполняем 2 строки +, а затем и 2 столбца заполняем +. if (l 1) then begin for i:=1 to n do begin for j:=1 to m do begin IF (t[i,j]<>'W') and (j>=x[1]) and (j<=x[1]+L) and ((i=y[1]) or (i=y[f])) then t[i,j]:='+'; IF (t[i,j]<>'W') and ((j=x[1]) or (j=x[1]+L)) and (i>y[1]) and (i<y[f]) then t[i,j]:='+'; write (t[i,j]); end; writeln (); end; end; end. Разница с предыдущим условием выделена красным цветом