• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Подскажите, пожалуйста, как решить задачу на Turbo Pascal и что неверно в моем коде

  • Автор темы Автор темы Vikki
  • Дата начала Дата начала

Vikki

Ученик
Регистрация
2 Дек 2012
Сообщения
7
Реакции
0
Баллы
0
Подскажите, пожалуйста, как решить задачу на 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.
 
Подскажите, пожалуйста, как решить задачу на Turbo Pascal и что неверно в моем коде
А что Вас не устраивает? Посмотрел Вашу программу - по-моему всё правильно, и метод остроумный. Что не так?
 
А что Вас не устраивает? Посмотрел Вашу программу - по-моему всё правильно, и метод остроумный. Что не так?

При отладке он выдает ошибку "Неизвестный идентификатор" при writeln(R[i,1],' ',R[i,2],' ',R[i,3]);. При попытке описать он выдает еще кучу ошибок и в итоге закрывает Паскаль. Пробовала решать другие задачи (думала, может с самим Паскалем, что-то случилось) все получается.
 
При отладке он выдает ошибку "Неизвестный идентификатор" при writeln(R[i,1],' ',R[i,2],' ',R[i,3]);. При попытке описать он выдает еще кучу ошибок и в итоге закрывает Паскаль. Пробовала решать другие задачи (думала, может с самим Паскалем, что-то случилось) все получается.
Ну что тут скажешь - запускал я Вашу программу, как есть, в своем DOS Free Pascal, так жрёт и не давится, и результат на экран выдает. :tehnari_ru_325:
 
Попробуйте снизить границу массива 5000 в несколько раз: может быть, для Вашего Паскаля это многовато?
 
Назад
Сверху