Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Число - степень тройки?

Автор: Footballplayer 2.08.2009 20:20

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

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

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


Автор: RathaR 2.08.2009 21:00

Цитата(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 2.08.2009 21:32

Цитата(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 2.08.2009 23:42

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

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


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

Автор: RathaR 3.08.2009 1:06

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

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

yes2.gif

Автор: Footballplayer 3.08.2009 13:22

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


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



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

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

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


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


Автор: Lapp 4.08.2009 7:00

Цитата(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 4.08.2009 20:20

всем спасибо.
но уверен буду обращаться ещё smile.gif

Автор: мисс_граффити 7.08.2009 2:15

Цитата(Lapp @ 4.08.2009 4:00) *

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

1/3 тоже степень тройки. и корень из 3 - степень. ;)

Автор: sheka 7.08.2009 13:49

i:=0;
while exp(i*ln(3))<a do inc(i);
if exp(i*ln(3))=a then ('yavlaetsa');

Вроде так тоже должно работать smile.gif. Спасибо Lappу.

Автор: volvo 7.08.2009 15:17

sheka, судя по твоей программе, 81 - уже НЕ степень тройки? А чему тогда равно 34?

А ведь предупреждали: не сравнивайте вещественные числа между собой. Нет же, пока САМ не обожжется - должен попробовать.

Автор: Lapp 8.08.2009 1:47

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

Автор: мисс_граффити 10.08.2009 8:29

Цитата(Lapp @ 7.08.2009 22:47) *

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


Ты не прав ;)

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

Автор: RathaR 10.08.2009 20:15

Цитата(мисс_граффити @ 10.08.2009 4:29) *

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

блин, до чего же можна усложнять задачу то ?!
если человек начал проходить цыкл "While" , его задача не заключаеться в том чтобы найти все-все степени 3, а в том чтобы научиться цыкл использовать правильно smile.gif чему я думаю его уже научили smile.gif

Автор: Lapp 11.08.2009 10:43

Цитата(RathaR @ 10.08.2009 17:15) *
блин, до чего же можна усложнять задачу то ?!

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

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