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

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

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

> Судоку, проблема с массивом
marwell
сообщение 28.11.2010 15:16
Сообщение #1


Бывалый
***

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

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


Появилась надобность написать программу генерации таблиц судоку (думаю, всем известна эта игра)
в инете нашел описание одного метода http://malover.ucoz.ru/sudoku/
естественно, выбрал третий способ.
но есть проблема, в 3 пункте при получении второй строки мне надо собрать один массив из трех.Никак не могу придумать, как это сделать в цикле
var i,x,j:integer;
mas1,mas2,mas3,mas4,mas5,mas6,mas7,mas8,mas9:array [1..9] of integer;
A,B,C:array [1..3] of integer;
flag:boolean;

procedure Ran; // генерирую число
begin
Randomize;
x:=Random(9)+1;
end;

procedure Fla; //проверка строки(для избежания повтора)
begin
for j:=1 to 9 do
if mas1[j]=x then flag:=False;
end;

begin
Flag:=True;
i:=1;
While i<=9 do begin
Ran;
Fla;
if Flag=True then begin
mas1[i]:=x; i:=i+1; end
else Flag:=True;
end;
for i:=1 to 3 do begin
if i=1 then begin
A[i]:=mas1[1];
B[i]:=mas1[4];
C[i]:=mas1[7]; end;
if i=2 then begin
A[i]:=mas1[2];
B[i]:=mas1[5];
C[i]:=mas1[8]; end;
if i=3 then begin
A[i]:=mas1[3];
B[i]:=mas1[6];
C[i]:=mas1[9]; end;
end;
...
end.
буду благодарен совету

Сообщение отредактировано: marwell - 28.11.2010 15:35
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 29.11.2010 11:59
Сообщение #2


Гость






Кстати, вот этот кусок:
Цитата
for i:=1 to 3 do begin
if i=1 then begin
A[i]:=mas1[1];
B[i]:=mas1[4];
C[i]:=mas1[7]; end;
if i=2 then begin
A[i]:=mas1[2];
B[i]:=mas1[5];
C[i]:=mas1[8]; end;
if i=3 then begin
A[i]:=mas1[3];
B[i]:=mas1[6];
C[i]:=mas1[9]; end;
end;
я бы переписал так:
for i := 1 to 3 do
begin
A[i] := mas1[(i - 1)*3 + 1];
B[i] := mas1[(i - 1)*3 + 2];
C[i] := mas1[(i - 1)*3 + 3];
end;

(опять же, чисто визуально, не вникая в логику...)
 К началу страницы 
+ Ответить 

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


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

 



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