Помощь - Поиск - Пользователи - Календарь
Полная версия: Число - степень тройки?
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Footballplayer
Перелопатил весь форум, но подобного не нашёл... однако если такая тема есть заранее извиняюсь..
Короче решил летом постичь азы Паскаля по учебнику Окулова..вроде всё шло нормально пока не дошёл до задачек на использование цикла while..

Окончательно меня ввела в тупик вот эта задача:

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

RathaR
Цитата(Footballplayer @ 2.08.2009 16:20) *

Перелопатил весь форум, но подобного не нашёл... однако если такая тема есть заранее извиняюсь..
Короче решил летом постичь азы Паскаля по учебнику Окулова..вроде всё шло нормально пока не дошёл до задачек на использование цикла while..

Окончательно меня ввела в тупик вот эта задача:

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

эм...а разве тут могут быть проблемы? или число "длинное"? если нет, то в цикле делишь его на 3 до тех пор пока результат не станет меньше или равным 3,тогда проверяеш, равен ли он 3, если да то диствительно степень....

Добавлено через 5 мин.
program Stepen;
var
I:integer;
begin
read(I);
while I>3 do
I:=I div 3;

if I=3 then write('STEPEN') else write('Ne stepen');
end.
Footballplayer
Цитата(RathaR @ 2.08.2009 18:00) *

эм...а разве тут могут быть проблемы? или число "длинное"? если нет, то в цикле делишь его на 3 до тех пор пока результат не станет меньше или равным 3,тогда проверяеш, равен ли он 3, если да то диствительно степень....

Добавлено через 5 мин.
program Stepen;
var
I:integer;
begin
read(I);
while I>3 do
I:=I div 3;

if I=3 then write('STEPEN') else write('Ne stepen');
end.



Блин.. и то правда..йоперный театр ,кажись, я нифига не подающий надежды программист, раз на таком застрял..
Благодарю )))
amega
RathaR
введи число 10 и тебе видаст что оно есть степенью! поменяй тип на риел и постав знак деления...

Цитата
Блин.. и то правда..йоперный театр ,кажись, я нифига не подающий надежды программист, раз на таком застрял..
Благодарю )))


Поверь, я тоже сначла не понимал, но все пришло со временем)
RathaR
Цитата(amega @ 2.08.2009 19:42) *

RathaR
введи число 10 и тебе видаст что оно есть степенью! поменяй тип на риел и постав знак деления...

yes2.gif
Footballplayer
Цитата(amega @ 2.08.2009 20:42) *


введи число 10 и тебе видаст что оно есть степенью! поменяй тип на риел и постав знак деления...



да, я так сразу сделал))

Цитата(amega @ 2.08.2009 20:42) *

Поверь, я тоже сначла не понимал, но все пришло со временем)


Дай Бог чтоб и ко мне пришло.. хорошо что есть такие форумы, где могут помочь))

Lapp
Цитата(amega @ 2.08.2009 20:42) *
поменяй тип на риел и постав знак деления...
Я бы не рекомендовал переводить в действительный тип. Это и громоздко, и просто неправильно (если без учета точности вычислений).
Можно так:
var
a: LongInt;

begin
ReadLn(a);
while a mod 3=0 do a:=a div 3;
WriteLn(a=1)
end.


Добавлено через 2 мин.
Кроме того, не забывайте, что единица тоже есть степень тройки.
Footballplayer
всем спасибо.
но уверен буду обращаться ещё smile.gif
мисс_граффити
Цитата(Lapp @ 4.08.2009 4:00) *

Кроме того, не забывайте, что единица тоже есть степень тройки.

1/3 тоже степень тройки. и корень из 3 - степень. ;)
sheka
i:=0;
while exp(i*ln(3))<a do inc(i);
if exp(i*ln(3))=a then ('yavlaetsa');

Вроде так тоже должно работать smile.gif. Спасибо Lappу.
volvo
sheka, судя по твоей программе, 81 - уже НЕ степень тройки? А чему тогда равно 34?

А ведь предупреждали: не сравнивайте вещественные числа между собой. Нет же, пока САМ не обожжется - должен попробовать.
Lapp
Цитата(мисс_граффити @ 6.08.2009 23:15) *
1/3 тоже степень тройки. и корень из 3 - степень. ;)
Ну, если так, то программа несколько упрощается и становится такой:
begin
WriteLn(true)
end.
мисс_граффити
Цитата(Lapp @ 7.08.2009 22:47) *

Ну, если так, то программа несколько упрощается и становится такой:
begin
WriteLn(true)
end.


Ты не прав ;)

Footballplayer, какая там полная формулировка задачи? Какие степени рассматриваются? Только натуральные, или целые неотрицательные?
RathaR
Цитата(мисс_граффити @ 10.08.2009 4:29) *

Footballplayer, какая там полная формулировка задачи? Какие степени рассматриваются? Только натуральные, или целые неотрицательные?

блин, до чего же можна усложнять задачу то ?!
если человек начал проходить цыкл "While" , его задача не заключаеться в том чтобы найти все-все степени 3, а в том чтобы научиться цыкл использовать правильно smile.gif чему я думаю его уже научили smile.gif
Lapp
Цитата(RathaR @ 10.08.2009 17:15) *
блин, до чего же можна усложнять задачу то ?!

спасибо, Rathar, +1

Степенями целого неотрицательного числа испокон назывались степени с целым неотрицательным показателем, сами являющиеся целыми и неотрицательными.
На этом и закончим, пожалуй.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.