adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Помогите написать на Си
На страницу 1 2
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ
Автор Сообщение
RawRalf
Эксперт
Предупреждений : 1
СообщениеДобавлено: Вт 28-10-08 : 10-43    Заголовок сообщения: Помогите написать на Си Ответить с цитатой

Логической переменной t присвоить значение true или false в зависимости от того, является ли натуральное число k степенью 3 или нет.

Мозг высох! На Дэлфи могу, а на Си -никак!
И еще попросили составить что то типо6

Дано
Результат
Решение
Повторять


Пока


З.Ы. 1 курс, ФПМИ, задачка ко 2ой лабе! Не ржать! =))
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
EvilHedgehog
Гуру
СообщениеДобавлено: Вт 28-10-08 : 11-34    Заголовок сообщения: Ответить с цитатой

t = ((log((float)k)/log(3.0)) == (float)floor(log((float)k)/log(3.0))))? true : false;
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
RawRalf
Эксперт
Предупреждений : 1
СообщениеДобавлено: Вт 28-10-08 : 11-37    Заголовок сообщения: Ответить с цитатой

Спасибо, но я думаю ей все равно она не понравится.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
EvilHedgehog
Гуру
СообщениеДобавлено: Вт 28-10-08 : 11-52    Заголовок сообщения: Ответить с цитатой

Ну тогда так:

Код:

#include <math.h>
void main()
{
   bool t;
   unsigned k;
   printf("Enter k: ");
   scanf("%d",&k);
   t = (log((float)k)/log(3.0) == (float)floor(log((float)k)/log(3.0)))? true : false;
   printf("\n%d\n",t);
}


Работать будет же, чего ей еще надо? Smile
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
perf
Продвинутый форумчанин
СообщениеДобавлено: Вт 28-10-08 : 11-57    Заголовок сообщения: Ответить с цитатой

Цитата:
t = (log((float)k)/log(3.0) == (float)floor(log((float)k)/log(3.0)))? true : false;

жирным показано лишнее
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail  
EvilHedgehog
Гуру
СообщениеДобавлено: Вт 28-10-08 : 12-00    Заголовок сообщения: Ответить с цитатой

perf
Попросили, чтобы прям было. Наглядность повышает и все такое. Можно еще t как unsigned объявить, еще строчку съекономим Wink
ЗЫ или вообще убрать нафиг это t, кому оно нужно. Чистый функционал:
Код:

#include <math.h>
void main()
{
   unsigned k;
   printf("Enter k: ");
   scanf("%d",&k);
   printf("\nt = %d\n",log((float)k)/log(3.0) == (float)floor(log((float)k)/log(3.0)));
}

Very Happy
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Aprelle
Гуру
СообщениеДобавлено: Вт 28-10-08 : 12-24    Заголовок сообщения: Ответить с цитатой

Для цикла и наглядности нужно в цикле t делить на 3 пока не получим дробное число или 1.

Цитата:
Мозг высох! На Дэлфи могу, а на Си -никак!


Значит и на дельфях тоже не можешь.
Вообще все языки программирования похожи и различаются только справочником Smile
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
RawRalf
Эксперт
Предупреждений : 1
СообщениеДобавлено: Вт 28-10-08 : 17-14    Заголовок сообщения: Ответить с цитатой

Цитата:
Значит и на дельфях тоже не можешь.
Вообще все языки программирования похожи и различаются только справочником

Если бы мне знать справочник Си Smile


Спасибо!
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Mr.Zakk Wylde
Crazy Guitarist
СообщениеДобавлено: Вт 28-10-08 : 17-31    Заголовок сообщения: Ответить с цитатой

RawRalf
Препод - Хиценко? Wink
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
RawRalf
Эксперт
Предупреждений : 1
СообщениеДобавлено: Вт 28-10-08 : 18-12    Заголовок сообщения: Ответить с цитатой

Цитата:
Препод - Хиценко?

Shocked Shocked Shocked Shocked Shocked Shocked
Как, откуда?? Она самая!!!
Я тебя знаю??
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Nikolai
Продвинутый форумчанин
СообщениеДобавлено: Вт 28-10-08 : 18-22    Заголовок сообщения: Ответить с цитатой

RawRalf писал(а):
Цитата:
Препод - Хиценко?



Как, откуда?? Она самая!!!
Я тебя знаю??


Братья меньшие))))
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail  
RawRalf
Эксперт
Предупреждений : 1
СообщениеДобавлено: Вт 28-10-08 : 18-23    Заголовок сообщения: Ответить с цитатой

Цитата:
Братья меньшие))))

preved
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
RawRalf
Эксперт
Предупреждений : 1
СообщениеДобавлено: Вт 28-10-08 : 18-33    Заголовок сообщения: Ответить с цитатой

Цитата:
Для цикла и наглядности нужно в цикле t делить на 3 пока не получим дробное число или 1


Дано: k принадлежит N
Результат: t принадлежит 0;1
Решение: при ( я не знаю при чем)
Повторять
k=k/3
r=(k/3)
Пока {k!=1
{r=0

Если {k=1; r=0 то t=1, иначе t=0



Вот так типо схема решения. Я и на дэлфи ее запорол!!! lol

А прогу написать не могу!! ППЦ! Она сегодня съела мой мозг!! Очень злой!
Те проги, что писали - не подходят Sad
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
EvilHedgehog
Гуру
СообщениеДобавлено: Вт 28-10-08 : 19-47    Заголовок сообщения: Ответить с цитатой

Код:

void main()
{
   unsigned k ,r;
   printf("Enter k: ");
   scanf("%d",&k);
   do{   r = k%3; k/=3;}
   while (k>1 && !r);
   printf("\nt = %d\n",r==0);
}
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
RawRalf
Эксперт
Предупреждений : 1
СообщениеДобавлено: Вт 28-10-08 : 19-51    Заголовок сообщения: Ответить с цитатой

Прошу Вас!!! Прошу Вас!!! Прошу Вас!!! Спасибо тебе, добрый человек!!!!
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Aprelle
Гуру
СообщениеДобавлено: Вт 28-10-08 : 22-27    Заголовок сообщения: Ответить с цитатой

Он не добрый, он коварный Smile
Посмотрел сегодня Идиократию...
куда катится мир ))

и считать ли три в нулевой степени степенью тройки ?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
RawRalf
Эксперт
Предупреждений : 1
СообщениеДобавлено: Вт 28-10-08 : 23-20    Заголовок сообщения: Ответить с цитатой

Цитата:
и считать ли три в нулевой степени степенью тройки ?

Да не знаю, задам, что при К=1, тоже будет тру! dance oop
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
EvilHedgehog
Гуру
СообщениеДобавлено: Ср 29-10-08 : 10-57    Заголовок сообщения: Ответить с цитатой

Aprelle
Зато оно три в степени минус бесконечность корректно обрабатывает Taunt
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
perf
Продвинутый форумчанин
СообщениеДобавлено: Ср 29-10-08 : 11-55    Заголовок сообщения: Ответить с цитатой

EvilHedgehog писал(а):
Попросили, чтобы прям было. Наглядность повышает и все такое. Можно еще t как unsigned объявить, еще строчку съекономим

Дело не в экономии букв, а в избыточности: логическое выражение и так имеет тип bool, т.е. true или false, зачем к нему опять применять булевые проверки.
Для повышения читаемости того выражения гораздо лучше разбить его на части, так:
Код:

float a = log((float)k)/log(3.0);
float b = floor(log((float)k)/log(3.0));
bool t = (a==b);
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail  
Aprelle
Гуру
СообщениеДобавлено: Ср 29-10-08 : 12-14    Заголовок сообщения: Ответить с цитатой

А есть вообще гарантия, что степень для 3 скажем в 15-й вычислится именно как 15.0, а не как 14.999 или 15.001 ???
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ Часовой пояс: GMT + 7
На страницу 1 2
Страница 1 из 2

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы