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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2013, 16:27   #1
PASKAL12
Пользователь
 
Регистрация: 06.10.2013
Сообщений: 10
По умолчанию Пакостный попугай научился выдергивать у дедушки Василия волос, которое еще осталось у того на голове. Начав с одного волоса, он е

Пакостный попугай научился выдергивать у дедушки Василия волос, которое еще осталось у того на голове. Начав с одного волоса, он ежедневно увеличивал, порцию вдвое. Через сколько дней дедушке не понадобится расческа, если сначала у него на голове было аж N волос.Только стал учить циклы сильно не ругайте)) мой код
Код:
var v,n,m,i:longint;
begin
read (n);
for i:=1 to n do
begin
m:=m*2;
v:=v+1;
end;
write (v);
end.
PASKAL12 вне форума Ответить с цитированием
Старый 23.11.2013, 16:32   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Если бы я был компилятором, то написал бы, что переменные m, v не инициализированы.
То есть синт. ошибки нет, но программа ничего не считает. И выведет или черт знает что, или просто число равное n
.. и мгновенно закроется.
type_Oleg вне форума Ответить с цитированием
Старый 23.11.2013, 16:36   #3
PASKAL12
Пользователь
 
Регистрация: 06.10.2013
Сообщений: 10
По умолчанию

Исправил программа работает но)))не то)
PASKAL12 вне форума Ответить с цитированием
Старый 23.11.2013, 16:47   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Оператор for обычно используется, если количество циклов известно заранее. А здесь лучше использовать while у дедушки остались волосы, или repeat пока не останется ни одного
type_Oleg вне форума Ответить с цитированием
Старый 23.11.2013, 20:41   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,378
По умолчанию

Есть и другое, более простое решение.
В данной задаче выполняются условия геометрической прогрессии, в которой: а1 = 1; q = 2; Сумма членов прогрессии равна N.
Используем формулу для суммы k членов прогрессии:
N = a1*(q^k-1)/(q-1); Отсюда получаем: N*(q-1)/a1 + 1= q^k;
Логарифмируем обе части и получим формулу для k:
k = ln(N*(q-1)/a1 +1)/ln(q);
Подставим известные параметры и получим формулу для вычисления k - числа дней.
Код:
k := ln(N+1)/ln(2);
И зачем тут циклы????


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.11.2013, 20:49   #6
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

ViktorR, k надо еще округлить как то.

Может быть, товарищу надо с циклами. Чисто методически. А то получается, задание не по прогр. а по математике.
type_Oleg вне форума Ответить с цитированием
Старый 23.11.2013, 21:14   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,378
По умолчанию

Округлить - это да.
Волос то целое число, да и дней - тоже.
Но может ведь оказаться, что в следующий день попугай не сможет выдернуть заданное число волос. Об этом в постановке задачи ни слова.
С точки зрения метода решения.
Креативное мышление должно развиваться в первую очередь.
Иначе как-бы изобрели метод расчета суммы членов арифметической прогрессии?

В самой постановке задачи нет заключения о том, что требуются именно циклы. А фраза:
Цитата:
Только стал учить циклы сильно не ругайте)) мой код
говорит только об одном - только начал изучать циклы.
И что, сразу их (циклы) вот на такой задаче?


Как-то так, ...
PS: Я уж не говорю о том, что в постах по этой теме нет оценки того, сколько волос вырвано (надо бы суммировать).
И впринципе, цикл может быть и по N. Все равно цикл должен будет закончиться раньше, чем будет достигнут его конец. Просто в теле цикла можно вставить сравнение на превышение числа вырванных волос над N и сделать break.
Ну это в том случае, если мы изучаем циклы и то, что к ним принадлежит.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторное вхождение одного и того же числа (C) Alexandr- Помощь студентам 1 07.09.2013 21:27
скачивание одного и того же файла несколько раз. Miha1986 Работа с сетью в Delphi 1 16.01.2011 21:36
Несколько DLL. Использование одного и того же подуля. Selestis Lazarus, Free Pascal, CodeTyphon 1 07.01.2011 13:25
Последовательная отсылка одного и того же сообщения со списка UIN на 1 номер ICQ Ra1n Работа с сетью в Delphi 4 29.01.2010 16:37
Как избежать повторение одного и того же номера дважды CockPuncher Microsoft Office Excel 6 03.09.2009 09:53