Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2008, 17:51   #1
terminadoor
Пользователь
 
Регистрация: 26.06.2008
Сообщений: 86
По умолчанию Помогите с задачей.

Дано число N - количество столбцов в двухмерном массиве. Масив за полнен по спирале: (матрица 5Х5)
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Потом задано ёщё два числа - координата пересекания i-того и j-ого рядка. Вивести число которое будет на пересёке. У меня вопрос: как заполнить массив по спирале?
TerMinAdoOR
terminadoor вне форума Ответить с цитированием
Старый 22.07.2008, 17:58   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Я помню что ктото давал код для любой размерности массива.....
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 22.07.2008, 18:00   #3
terminadoor
Пользователь
 
Регистрация: 26.06.2008
Сообщений: 86
По умолчанию

не понял. Можно поконкретнее. хотяби алгоритм.
TerMinAdoOR
terminadoor вне форума Ответить с цитированием
Старый 22.07.2008, 18:21   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Гдето на форуме давали исходник.....
Вот он только с моей переработкой и форматированием....

Код:
Begin
N := StrToInt(LabeledEdit1.Text);
Sg1.ColCount := N;
Sg1.RowCount := N;
For I := 1 To Sg1.RowCount Do
For J := 1 To Sg1.ColCount Do
Sg1.Cells[I - 1, J - 1] := IntToStr(I * 10 + J);

X := 0;
y := 1;
Number := 1;
Add := N;
Direction := 1;

While (Add <> 0) Do
  Begin
    I := 0;
    While (I <> Add) do
      Begin
        X := X + Direction;
        Sg1.Cells[X - 1, Y - 1] := IntToStr(Number);
        Number := Number + 1;
        I := I + 1;
      End;
    I := 0;
    Add := Add - 1;
    While (I <> Add) Do
      Begin
        Y := Y + Direction;
        Sg1.Cells[X - 1, Y - 1] := IntToStr(Number);
        Number := Number + 1;
        I := I + 1;
      End;
    Direction := Direction * (-1);
  End;

End;
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 22.07.2008, 18:38   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот разбор этой задачи.
http://programmersforum.ru/showpost....76&postcount=1
To Карась
Я когда-то списал Ваш код, а потом забыл чей он и не мог найти в поиске, и сейчас не нашел. Я долго думал зачем
Код:
For I := 1 To Sg1.RowCount Do   
For J := 1 To Sg1.ColCount Do   
Sg1.Cells[I - 1, J - 1] := IntToStr(I * 10 + J);
а потом убрал это и понял что ни зачем, это просто лишнее.

Последний раз редактировалось puporev; 22.07.2008 в 18:53.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с задачей drossel Общие вопросы C/C++ 9 01.06.2008 21:45
Помогите с задачей.. vit_al Паскаль, Turbo Pascal, PascalABC.NET 3 24.04.2008 13:48
Помогите с задачей в С++ vovchara Помощь студентам 2 22.04.2008 22:49
Помогите с задачей Лёха Паскаль, Turbo Pascal, PascalABC.NET 7 08.02.2008 20:08
Помогите с задачей bel_ka Общие вопросы C/C++ 13 26.12.2007 19:23