Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2011, 16:33   #1
Renge
Пользователь
 
Аватар для Renge
 
Регистрация: 07.12.2010
Сообщений: 35
По умолчанию Задача Дирака

Не могу найти ошибку, программа не выводит ничего.
Задача Дирака о трех рыбаках.
Три рыбака вечером ловили рыбу договорившись поделить ее утром поровну.
Утром один из рыбаков проснулся раньше двух других и решил взять свою
долю и уехать не дожидаясь, когда проснутся его друзья.
Он пересчитал рыб, выкинул одну в реку и взял себе треть оставшихся.
Затем проснулся второй рыбак. Он не знал, что первый рыбак уже уехал
взяв свою долю. И второй рыбак тоже захотел забрать свою долю и уехать
не дожидаясь, когда проснутся его друзья.
Он тоже пересчитал рыб, выкинул одну в реку и взял себе треть оставшихся.
Потом проснулся третий рыбак. Он не знал, что его друзья-рыбаки уже уехали
взяв свою долю. И также захотел забрать свою долю и уехать не дожидаясь,
когда проснутся его друзья. Он тоже пересчитал рыб, выкинул одну в реку
и взял себе треть оставшихся.
Сколько рыб поймали рыбаки? Найти N первых таких чисел.
Для каждого полученного числа вывести на экран общее число пойманных рыб,
а также число рыб, унесенных каждым рыбаком.
PHP код:
    Readln(N);
    
x:=3; (решила начать с трех)
    
z:=0;
    
Repeat
    
If (x-1mod 3=0
    then
    BEGIN
    k1
:=(x-1div 3;
    
y1:=x-1-k1;
    If (
y1-1mod 3=0
    then begin
         k2
:=(y1-1div 3;
         
y2:=y1-1-k2;
         If (
y2-1mod 3=0
         then Begin
              k3
:=(y-1div 3;
              
y3:=y2-1-k3;
              
write(y3:4);
              
Writeln('Поймали: 'x:3'1-ый унес 'k1'2-ой унес 'k2'3-ий унес 'k3);
              
inc(z);
              
End;
          
End;
     
END;
    
inc(x);
    
Until (z<>N); 
Renge вне форума Ответить с цитированием
Старый 10.05.2011, 17:30   #2
Renge
Пользователь
 
Аватар для Renge
 
Регистрация: 07.12.2010
Сообщений: 35
По умолчанию

никто не поможет найти ошибку?
Renge вне форума Ответить с цитированием
Старый 10.05.2011, 18:52   #3
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Renge Посмотреть сообщение
программа не выводит ничего.
Код:
    ...
    Until (z<>N);
    ...
Здесь в Паскале условие выхода из цикла, насколько я помню, пишется. Первое x = 3 - не то (ничего и не напечатали); z (0) не равно N (3) - условие в Until выполнилось - всё. Вышли.

Ну и вот здесь
Код:
              k3:=(y-1) div 3;
y2, по-моему, должно быть.

Последний раз редактировалось Vago; 10.05.2011 в 18:59.
Vago вне форума Ответить с цитированием
Старый 12.05.2011, 18:02   #4
Renge
Пользователь
 
Аватар для Renge
 
Регистрация: 07.12.2010
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
y2, по-моему, должно быть.
да, точно, это опечатка.
Цитата:
Сообщение от Vago Посмотреть сообщение
Здесь в Паскале условие выхода из цикла, насколько я помню, пишется. Первое x = 3 - не то (ничего и не напечатали); z (0) не равно N (3) - условие в Until выполнилось - всё. Вышли.
Спасибо огромное, то-то я не заменила. Все заработало*
Renge вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51
задача в С++ myrka Помощь студентам 0 26.02.2011 16:23
задача myrka Помощь студентам 2 26.02.2011 09:53