Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 02.12.2012, 18:43   #1 (permalink)
Vikki
Новичок
 
Регистрация: 02.12.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Подскажите, пожалуйста, как решить задачу на 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.
Vikki вне форума   Ответить с цитированием

Старый 02.12.2012, 18:43
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти темы имеют некоторые сходства с вашей, советую пролистать

Помогите решить задачу Pascal
Помогите решить задачу Pascal
Помогите решить задачу в Pascal
Помогите решить задачу в Pascal ABC

Старый 02.12.2012, 20:19   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Подскажите, пожалуйста, как решить задачу на Turbo Pascal и что неверно в моем коде
А что Вас не устраивает? Посмотрел Вашу программу - по-моему всё правильно, и метод остроумный. Что не так?
Vladimir_S вне форума   Ответить с цитированием
Старый 02.12.2012, 20:49   #3 (permalink)
Vikki
Новичок
 
Регистрация: 02.12.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
А что Вас не устраивает? Посмотрел Вашу программу - по-моему всё правильно, и метод остроумный. Что не так?
При отладке он выдает ошибку "Неизвестный идентификатор" при writeln(R[i,1],' ',R[i,2],' ',R[i,3]);. При попытке описать он выдает еще кучу ошибок и в итоге закрывает Паскаль. Пробовала решать другие задачи (думала, может с самим Паскалем, что-то случилось) все получается.
Vikki вне форума   Ответить с цитированием
Старый 02.12.2012, 20:54   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vikki Посмотреть сообщение
При отладке он выдает ошибку "Неизвестный идентификатор" при writeln(R[i,1],' ',R[i,2],' ',R[i,3]);. При попытке описать он выдает еще кучу ошибок и в итоге закрывает Паскаль. Пробовала решать другие задачи (думала, может с самим Паскалем, что-то случилось) все получается.
Ну что тут скажешь - запускал я Вашу программу, как есть, в своем DOS Free Pascal, так жрёт и не давится, и результат на экран выдает.
Vladimir_S вне форума   Ответить с цитированием
Старый 02.12.2012, 20:57   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 02.12.2012, 21:16   #6 (permalink)
Vikki
Новичок
 
Регистрация: 02.12.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Попробуйте снизить границу массива 5000 в несколько раз: может быть, для Вашего Паскаля это многовато?
Действительно получилось. Спасибо большое!
Vikki вне форума   Ответить с цитированием
Старый 02.12.2012, 21:21   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vikki Посмотреть сообщение
Действительно получилось. Спасибо большое!
Ну и славно.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.