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

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

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

> Задача на цикл
Барс
сообщение 22.03.2012 12:42
Сообщение #1


Новичок
*

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

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


Нужон хелп. Никак не могу добиться, чтобы лишний раз цикл не прокручивался.
Задача.Дано целое число N (> 1). Вывести наибольшее целое K, при котором выполняется неравенство 3^K < N, и само значение 3^K. 

Program j;
uses Crt;
var
b, n, k:integer;
begin
ClrScr;
write('Введите n='); readln(n);
b:=1; k:=0;
repeat
k:=k+1;
b:=b*3;
until b>n;
writeln('k=', k, ' 3^k=', b);
readln;
end.

С while тоже не получается.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 23.03.2012 10:18
Сообщение #2


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

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

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


Цитата(IUnknown @ 23.03.2012 5:47) *
Ай-яй-яй smile.gif А как же проверка граничных случаев?
Если честно, не делал ее тут. Виноват )).

Цитата
Ну вот я и возьму > 1. Двойку, к примеру. А мне твой цикл скажет, что тройка меньше двух? И вообще, что 30 = 3?
Володь, я не совсем понимаю, о чем ты.. При чем тут 3<2?
Для простоты, я приведу код, который я использовал, один в один:
var
n,k,b: longint;

begin
readln(n);
b:=1;
k:= -1;
repeat
Inc(k);
b:= b*3
until b>=n;
//k:= Trunc(ln(N-1)/ln(3));
writeln('k = ',k,' 3^k = ',Round(exp(ln(3)*k)));
readln
end.

И еще заодно ее выдачу:
Running "c:\_\dropbox\pas\fp\fp120322_bars\fp120322_bars_lapp.exe "
4
k = 1 3^k = 3

Running "c:\_\dropbox\pas\fp\fp120322_bars\fp120322_bars_lapp.exe "
3
k = 0 3^k = 1

Running "c:\_\dropbox\pas\fp\fp120322_bars\fp120322_bars_lapp.exe "
2
k = 0 3^k = 1

Running "c:\_\dropbox\pas\fp\fp120322_bars\fp120322_bars_lapp.exe "
1
k = 0 3^k = 1


Все вроде в порядке, включая n=2. На последний не обращай внимания, это так, за компанию )). Или я что-то не понимаю?..

Цитата(Барс @ 23.03.2012 9:31) *
Это не препод, это самообучение (решил, вот, заняться программированием, да и мозг покачать). А строку к:=-1 сам хотел вставить, но мне показалось, что это попахивает подгонкой результата.
Похвально, +1 ))
Подгонка - это не свойство программы. Это способ сдать задачу. Если ты понимаешь, что делаешь и почему - это не подгонка, а решение.

Цитата
Обратил внимание когда вы ответы публикуете. Реально в 4 или в 5 утра?
Нет, не реально ). У меня в этот момент 5-6 вечера, самое время отдохнуть от работы )).


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

Сообщений в этой теме


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

 



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