Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU
(Тестовый режим)

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 18
от 27.01.2005, 16:40

Администратор:Калашников О.А. (adm@rusfaq.ru)
В номере:Вопросов: 1, Ответов: 3


Вопрос № 16143
У меня довольно таки сложная задача - надо заполнить 2-мерный массив 10 на 10 числами от 1 до 100 по спирали. Придумал только зто

Приложение:

Отправлен: 22.01.2005, 16:37
Вопрос задал: Punco Alexander Sergeevich (статус: Читатель)
Всего ответов отправлено: 3

Отвечает: sir henry
Здравствуйте, Punco Alexander Sergeevich!
А шаг у спирали какой? Если 1, то можно так:
For i:=0 to 9 {Это колонки}
{А это ряды}
If Odd(i) Then
For j:=9 downto 0 {Заполнение в обратном порядке}
array(i,j):=Число
Else
For j:=0 to 9 {Заполнение в прямом порядке}
array(i,j):=Число
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 24.01.2005, 09:46

Отвечает: DSota
ъДТБЧУФЧХКФЕ, Punco Alexander Sergeevich!
мЕЗЮЕ ОБТЙУПЧБФШ, ЮЕН ПВШСУОЙФШ - ОХ УРЙТБМШ Ч ЛЧБДТБФЕ (ЛПФПТБС ЙДЕФ РП ЧОЕЫОЕНХ ТСДХ ЛМЕФПЛ) НПЦОП ТБЪДЕМЙФШ ОБ 4 ПДЙОБЛПЧЩИ ЮБУФЙ, ЛБЦДБС ЙЪ ЛПФПТЩИ УПДЕТЦЙФ ЛЧБДТБФ, ЛПФПТЩК Ч ХЗМХ Й ЧУЕ ЛХВЙЛЙ УФПТПОЩ ПФ ОЕЗП Й ДП УМЕДХАЭЕЗП ХЗМБ... уН. РТЙНЕТ:
ЧБББ
Ч b ЙМЙ ab
Ч d dc
УУУd
фП ЕУФШ, ДЕМЙЫШ ЛЧБДТБФ ОБ ЛЧБДТБФЩ РПНЕОШЫЕ У ЧПЪТБУФБОЙЕН ЙМЙ ХНЕОШЫЕОЙЕН УФПТПО Й ЛБЦДЩК ДЕМЙЫШ ОБ ЬФЙ 4 ЮБУФЙ:
Ч ЙФПЗЕ РПМХЮБЕФУС (РТЙ УПЕДЙОЕОЙЙ ЧЕТИОЙИ ЛЧБДТБФПЧ):
fggg
fbch
fadh
eeeh
Й РП ОЙН ТБУУФБЧМСЕЫШ ГЙЖТЩ, ЛПФПТЩЕ ФЕВЕ ОХЦОЩ.

Приложение:

Ответ отправил: DSota (статус: 10-ый класс)
Отправлен: 24.01.2005, 12:46

Отвечает: Tigran K. Kalaidjian
Здравствуйте, Punco Alexander Sergeevich!
Вот программа заполнения массива n*m. Это нам в 9-м классе в своё время задали =)
program spiral;
const n=7;m=6;
type tigmas2=ARRAY[1..N,1..M] of integer;
VAR b: tigmas2;
s,a,i,j: Integer;
procedure vivod2 (f: tigmas2);
begin
for i:=1 to n do begin
for j:=1 to m do write (f[i,j]:4);
writeln;
end;
end;
procedure oper (var a : tigmas2);
begin
i:=1;j:=1;s:=2;
a[1,1]:=1;
REPEAT
{1}
if a[i-1,j-1]<>0 then
repeat
if s>n*m then break;
j:=j+1;a[i,j]:=s;s:=s+1;
until (j+1>m) or (a[i,j+1]<>0);
{2}
if (i-1<0)and(j+1>m) or (a[i-1,j+1]<>0) then
repeat
if s>n*m then break;
i:=i+1;a[i,j]:=s;s:=s+1;
until (i+1>n)or(a[i+1,j]<>0);
{3}
if (i+1>n)and(j+1>m) or (a[i+1,j+1]<>0) then
repeat
if s>n*m then break;
j:=j-1;a[i,j]:=s;s:=s+1;
until (j-1<0)or (a[i,j-1]<>0);
{4}
if (i+1>n)and(j-1<0) or (a[i+1,j-1]<>0) then
repeat
if s>n*m then break;
i:=i-1;a[i,j]:=s;s:=s+1;
until (i-1<0)or (a[i-1,j]<>0);
UNTIL s>n*m;
end;
BEGIN
writeln;
oper (b);
vivod2(b);
writeln;
END.
Ответ отправил: Tigran K. Kalaidjian (статус: Профессионал)
Отправлен: 24.01.2005, 17:58


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Россия, Москва. Идея, дизайн, программирование: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное