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

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

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

 
 Ответить  Открыть новую тему 
> задачка на лампочки, имеющих два состояния
metallic
сообщение 22.11.2008 23:06
Сообщение #1





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

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


Имеется n>= ламп. расположенных в ряд, каждая из которых может быть в одном или двух состояний -"вкл" или "выкл". Каждую секунду лампы одновременно меняют своё состояние по правилам если лампа и ее соседи (для первой и последней лампы - один сосед, для остальных - два) находятся в одинаковом состоянии, то она принимает состояние "выкл", иначе она принимает состояние "вкл''. В начальном положении все лампы находятся в состоянии "выкл", кроме самой левой лампы, имеющей состояние ''вкл'' . Экспериментально найдите ( не менее 5), для каких n все все лампы будут в состоянии '' выкл''.

Сообщение отредактировано: metallic - 23.11.2008 13:05
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2008 5:59
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


М
Просьба привести название темы в соответствие с Правилами Форума (ссылка вверху страницы), п.4. В противном случае тема будет закрыта.



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2008 7:11
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Ответ к твоей задаче такой: гаснут те наборы, в которых число ламп есть степень двойки - остальные продолжают мигать бесконечно.

Решение есть. Готов обсуждать его после исправления названия темы..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2008 14:57
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Спасибо за название.

Как я уже сказал, если тебе интересно решение - давай пообсуждаем.
У тебя по поводу него какие мысли/заделы есть?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
metallic
сообщение 23.11.2008 15:24
Сообщение #5





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

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


Я решил ее , вот только не знаю правильно ли:
Program A1;
var i,k,n:integer;
BEGIN
writeln ('vvedite koli4estvo eksperimentov');
readln(k);
k:=k+1;
n:=0;
for i:=2 to k do
begin
if i mod 3=0 then
begin
n:=1;
writeln ('pri n=',n,' vse lampo4ki pogasnyt');
end;
end;
writeln ('pri n=2 vse lampo4ki pogasnyt');
readln;
END.


Сообщение отредактировано: metallic - 23.11.2008 15:27
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2008 15:29
Сообщение #6


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(metallic @ 23.11.2008 15:24) *
Я решил ее , вот только не знаю правильно ли:

Что-то я совсем не врубаюсь.. Поясни, при чем тут остаток по модулю 3?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
metallic
сообщение 23.11.2008 16:52
Сообщение #7





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

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


Все догадался)), вроде так:
Program Lamp;
var i,k:integer;
n:real;
BEGIN
writeln ('vvedite kol-vo opitov');
readln (k);
n:=2;
writeln ('vse lampi pogasnyt pri n=2');
for i:= 1 to k do
begin
n:=n+exp(i*ln(2));
writeln ('vse lampi pogasnyt pri n=',n);
end;
readln
END.


Сообщение отредактировано: metallic - 23.11.2008 16:53
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2008 17:03
Сообщение #8


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Что-то я вообще ничего не понимаю.. blink.gif Ты же просто считаешь степени двойки:
Цитата(metallic @ 23.11.2008 16:52) *

n:=n+exp(i*ln(2));
- да и все! Но ПОЧЕМУ? Как ты это вывел? Ты что ли основываешься на моем посте? Так это я тебе уже результат сказал. А ты просто делаешь прогу, чтоб она выводила то, что надо - и неважно, что внутри? так, что ли?
Ведь нужно-то ПРОВОДИТЬ эксперименты. Так? Или я чего-то не понимаю?
Отвечай поскорее, я собираюсь спать. Если нужен код - дам.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2008 17:42
Сообщение #9


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Ладно, бери код и разбирайся в нем.
Успехов!
const
m=26; // максимальное число ламп

var
n: integer;
L,L1: array [1..m] of boolean;

function On: boolean;
var
i: integer;
b: boolean;
begin
b:=false;
for i:=1 to n do begin
b:=b or L[i];
if b then Break
end;
On:=b
end;

procedure Show;
var
i: integer;
begin
for i:=1 to n do if L[i] then Write('0') else Write('-');
ReadLn
end;


var
i: integer;
j: LongInt;

begin
for n:=2 to m do begin
Write('Trying n=',n,' .. ');
L[1]:=true;
for i:=2 to n do L[i]:=false;
j:=0;
while On and(j<1 shl n) do begin
for i:=1 to n do
L1[i]:=(i>1)and(L[i] xor L[i-1])or(i<n)and(L[i] xor L[i+1]);
L:=L1;
Inc(j);
// Show;
end;
if On then WriteLn('Some On') else WriteLn('All Off');
end
end.

Если найдутся ошибки - не обессудь..
На вопросы, я думаю, тебе тут ответят. А я - спать..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
metallic
сообщение 23.11.2008 23:06
Сообщение #10





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

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


спасибо большое smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.11.2008 13:22
Сообщение #11


Гость






Цитата
Если найдутся ошибки - не обессудь..
Найдутся, найдутся smile.gif Причем трудноуловимые для новичка: если эту программу откомпилировать 16-битным компилятором и запустить, то получим не совсем то, чего ожидаем:
Цитата
Trying n=2 .. All Off
Trying n=3 .. Some On
Trying n=4 .. All Off
Trying n=5 .. Some On
Trying n=6 .. Some On
Trying n=7 .. Some On
Trying n=8 .. All Off
Trying n=9 .. Some On
Trying n=10 .. Some On
Trying n=11 .. Some On
Trying n=12 .. Some On
Trying n=13 .. Some On
Trying n=14 .. Some On
Trying n=15 .. Some On
Trying n=16 .. Some On
Trying n=17 .. Some On
Trying n=18 .. Some On
Trying n=19 .. Some On
Trying n=20 .. Some On
Trying n=21 .. Some On
Trying n=22 .. Some On
Trying n=23 .. Some On
Trying n=24 .. Some On
Trying n=25 .. Some On
Trying n=26 .. Some On
, потому как Integer-а не хватает для произведения операции 1 shl 16, надо сделать N "длинным целым" (LongInt)
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.11.2008 13:46
Сообщение #12


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(volvo @ 24.11.2008 13:22) *
Integer-а не хватает для произведения операции 1 shl 16, надо сделать N "длинным целым" (LongInt)

.. что, я, ессно, и сделал... но отправил, видимо, старую версию..
Спасибо, volvo


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 25.04.2024 11:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"