Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Подскажите, пожалуйста, как решить задачу на Turbo Pascal и что неверно в моем коде (http://www.tehnari.ru/f41/t81406/)

Vikki 02.12.2012 18:43

Подскажите, пожалуйста, как решить задачу на Turbo Pascal и что неверно в моем коде
 
Задача:
Вы начали составлять график дежурства для роты солдат, но вдруг столкнулись с одним очевидным фактом. Любые два солдата, побывавшие вместе на одном из дежурств, начинают раздражать друг друга. Если два солдата уже дежурили вместе три раза, на четвёртый раз они могут разозлить друг друга настолько сильно, что, очевидно, произойдёт непоправимое.
Поэтому вам нужно составить график дежурства на как можно большее количество дней таким образом, чтобы любые два солдата дежурили вместе не более трёх раз.

Исходные данные
В первой строке записано нечётное число n (3 ≤ n ≤ 99).
Результат
В первой строке выведите целое число k, максимальное количество дней, на которое можно составить график дежурств. В i-й из следующих k строк выведите через пробел номера трёх солдат, которые должны вступить на дежурство в i-й день. Солдаты занумерованы целыми числами от 1 до n.

Мой код:
Program Pr;
Uses CRT;
Var
n,i,j,t,k:integer;
A:array[1..100,1..100] of integer;
R:array[1..5000,1..3] of integer;
begin
CLRSCR;
Readln(n);

for i:=1 to N do
for j:=1 to N do
if i<>j then A[i,j]:=0 else A[i,j]:=3;

k:=0;
for i:=1 to N do
for j:=1 to n do
for t:=1 to n do

if (A[i,j]<3)and(A[i,t]<3) and(A[j,t]<3) then
begin
inc(k);
R[k,1]:=i;
R[k,2]:=j;
R[k,3]:=t;
inc(A[i,j]);
inc(A[i,t]);
inc(A[j,t]);
inc(A[j,i]);
inc(A[t,i]);
inc(A[t,j]);
end;
writeln(k);

for i:=1 to k do
writeln(R[i,1],' ',R[i,2],' ',R[i,3]);
Readln;
end.

Vladimir_S 02.12.2012 20:19

Цитата:

Подскажите, пожалуйста, как решить задачу на Turbo Pascal и что неверно в моем коде
А что Вас не устраивает? Посмотрел Вашу программу - по-моему всё правильно, и метод остроумный. Что не так?

Vikki 02.12.2012 20:49

Цитата:

Сообщение от Vladimir_S (Сообщение 827684)
А что Вас не устраивает? Посмотрел Вашу программу - по-моему всё правильно, и метод остроумный. Что не так?

При отладке он выдает ошибку "Неизвестный идентификатор" при writeln(R[i,1],' ',R[i,2],' ',R[i,3]);. При попытке описать он выдает еще кучу ошибок и в итоге закрывает Паскаль. Пробовала решать другие задачи (думала, может с самим Паскалем, что-то случилось) все получается.

Vladimir_S 02.12.2012 20:54

Цитата:

Сообщение от Vikki (Сообщение 827694)
При отладке он выдает ошибку "Неизвестный идентификатор" при writeln(R[i,1],' ',R[i,2],' ',R[i,3]);. При попытке описать он выдает еще кучу ошибок и в итоге закрывает Паскаль. Пробовала решать другие задачи (думала, может с самим Паскалем, что-то случилось) все получается.

Ну что тут скажешь - запускал я Вашу программу, как есть, в своем DOS Free Pascal, так жрёт и не давится, и результат на экран выдает. :tehnari_ru_325:

Vladimir_S 02.12.2012 20:57

Попробуйте снизить границу массива 5000 в несколько раз: может быть, для Вашего Паскаля это многовато?

Vikki 02.12.2012 21:16

Цитата:

Сообщение от Vladimir_S (Сообщение 827697)
Попробуйте снизить границу массива 5000 в несколько раз: может быть, для Вашего Паскаля это многовато?

Действительно получилось. Спасибо большое!

Vladimir_S 02.12.2012 21:21

Цитата:

Сообщение от Vikki (Сообщение 827706)
Действительно получилось. Спасибо большое!

Ну и славно.


Часовой пояс GMT +4, время: 10:25.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.