IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на 2х мерный массив, Для первого курса %)))
Sahsok
сообщение 5.01.2005 7:58
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Исходные данные:
1.квадратная нечетная матрица размернастью (m x m ); Минимальный размер 5х5 максимальный 21х21.
2.начальные элементы матрицы нулевые.
3. троектория обхода матрицы на рисунке


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


П.с. если задать размер отличный от того, который на рисунке,троектория должна возрасти соответственно размерам.

P.p.s У меня в субботу пересдача, а меня без этой задачи на экзамен не пустят. Краем глаза видел экзаменационные билеты: ТАКОГО там точно нет. Я не могу понять к чему такие задачи дают на специальности, которые к компам имеют косвенное отношение.


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
dushik
сообщение 5.01.2005 14:40
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


Обход в твоей задаче состоит из четырех частей:
1. "бугорки" внизу матрицы.
2. Вертикальная "палка" слева (хотя это обходом можно и не считать).
3. "Ступеньки" в левом верхнем углу.
4. И треугольник вверху.

Я зделал первые три пункта, последний, скажу честно, лень. Просто вижу никто не торопится тебе делать задачу, так что на хотя бы это:
Код

Uses CRT;

Const
   m = 11;

Var
   mat   : Array [1..m, 1..m] of Byte;
   FName : String;
   F     : Text;
   i, j  : Integer;
   n, k  : Integer;
   l     : Integer;
   flag  : Boolean;

Begin
   ClrScr;
   Write('File Name: ');
   ReadLn(FName);
   Assign(F, FName);
   ReWrite(F);
   For i := 1 to m do
   Begin
       For j := 1 to m do
       Begin
           mat[i, j] := 0;
       End;
   End;
   n    := Round(m / 4);
   i    := m;
   j    := m;
   flag := True;
   l    := 0;
   While (j > 0) do               {obhod 1}
   Begin
       if (flag) Then
       Begin
       if (l = 0) Then
       Begin
           for k := i DownTo i-n+1 do
           Begin
               mat[k, j] := 1;
               j := j - 1;
           End;
           i := k+1;
       End
           Else
       Begin
           for k := i DownTo i-n+2 do
           Begin
               mat[k, j] := 1;
               j := j - 1;
               WriteLn(F, '(', k, ';', j, ')');
           End;
           i := k+1;
       End;
       End
           Else
       Begin
           for k := i To m do
           Begin
               mat[k, j] := 1;
               j := j - 1;
               l := l + 1;
               WriteLn(F, '(', k, ';', j, ')');
           End;
           i := k - 1;
       End;
       flag := not flag;
   End;                           {konez 1-ogo obhoda}

   n := (m div 2) + 1;            {2-oy obhod}
   j := 1;
   for i := k DownTo n do
   Begin
       mat[i, j] := 1;
       WriteLn(F, '(', i, ';', j, ')');
   End;

   l := n - 1;                    {3-iy obhod}
   for k := 1 to l do
   Begin
       for j := 1 to n do
       Begin
           mat[i, j] := 1;
           WriteLn(F, '(', i, ';', j, ')');
       End;
       i := i - 1;
       n := n - 1;
   End;
   mat[1, 1] := 1;
   WriteLn(F, '(1;1)');

   For i := 1 to m do
   Begin
       WriteLn;
       For j := 1 to m do
       Begin
           if (mat[i, j] = 1) Then
               TextColor(Green)
           Else
               TextColor(White);
           Write(mat[i, j], '|');
       End;
   End;
   ReadLn;
   Close(F);
End.


Сообщение отредактировано: dushik - 5.01.2005 14:42


--------------------
На самом деле самого дела нет. В самой деятельности заключена самость дела и наоборот. Наоборот получим оборот на, таким образом перевернем образ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 14:05
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"