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

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

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

 
 Ответить  Открыть новую тему 
> прога не работает
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Мужской
Реальное имя: Артём

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


Люди у меня есть задача и даже прогу, которая решает эту задачу я написал но она(прога) не тработает.
ПЛЗ. пораскиньте, кто чем может.
----------------------------------------------
Задача даны числа k, l, m, выяснить, можно ли любое число преобразовать в единицу за m раз следующим образом
если число(n) чётно, то подельть его на два,
если нет, то умножить его на три и прибавить единицу.
----------------------------------------------
Прога виснет при некоторых значениях к, l, m.(см diapazon.pas)

Сообщение отредактировано: art88 -


Прикрепленные файлы
Прикрепленный файл  DIAPAZON.PAS ( 681 байт ) Кол-во скачиваний: 287
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






art88,
Цитата
Прога виснет при некоторых значениях
покажи, при каких именно значениях у тебя виснет программа.

И заодно объясни, что такое K и L?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Прогрессор
****

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

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


Программа виснет, потому что строчка ok1:=false может не выполняться, и тогда цикл while (n <= l) and ok1 будет крутиться вечно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Мужской
Реальное имя: Артём

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


Цитата(volvo @ 18.10.2005 21:38)
art88,
покажи, при каких именно значениях у тебя виснет программа.

И заодно объясни, что такое K и L?


k и l задают интервал, в котором изменяется n
прога не работает например при k=1 l=3 n=10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






У тебя же программа при этих значениях крутится с одинаковыми числами (бесконечный цикл). Вот так хотя бы сделай:
program diapazon;
var
k, l, m, n : integer;
ok1, ok2 : Boolean;
i, j : integer;
begin
writeln('...:::Diapazon:::...');
{ write('k='); readln(k);
write('l='); readln(l);
write('m='); readln(m); }
k := 1;
l := 3;
m := 10;

i:=0;
n:=k-1;
ok1:=true;
ok2:=false;
while (n <= l) and ok1 do begin
n := k + 1; inc(k); { <-- Это кто будет делать? }

{ Для проверки: }
writeln('k = ', k, ' n = ', n);

while not ok2 do begin

inc(i);

if odd(n) then n := succ(3 * n)
else n := n div 2;

ok2 := (n = 1);
end;

ok1 := (i <= m);
end;

if ok1 then writeln('yes ', i)
else writeln('no ', i);
readln;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Мужской
Реальное имя: Артём

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


volovo, твой вариант программы работает не правильно, если мы вводим к=1, l=3 и m=6, то программа напишет 'yes 1' , хотя на самом деле число 3, преобразуется в единицу, указанным в задаче способом за семь раз (3, 10, 5, 16, 8, 4, 2, 1).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






art88, ты меня конечно извини, но это ТВОЙ вариант программы работает неправильно, я просто вывел его из "вечного цикла", ничего при этом не меняя в логике !!!

На самом деле, вот это:
      i := 0; ok2 := false; { <-- Нужно делать именно здесь !!! }
{ Перед самым циклом, а не где-то в другом месте. Тогда все работает... }
while not ok2 do begin

 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 1.09.2025 20:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name