Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
andry_kawa
0 / 0 / 0
Регистрация: 27.04.2012
Сообщений: 6
1

Определить, является ли число степенью другого числа

10.05.2012, 22:34. Просмотров 2494. Ответов 13
Метки нет (Все метки)

Составить подпрограмму, определяющую , является ли число степенью другого числа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2012, 22:34
Ответы с готовыми решениями:

Определить, является ли натуральное число n степенью числа 3
Определить, является ли натуральное число n степенью числа 3

Определить, является ли число M степенью N
Ввести натуральные числа М и N < M. Определить, является ли число M степенью N....

Определить, является ли число степенью двойки.
Вводится натуральное число n. Определить, является ли оно степенью двойки.

Если число является степенью числа 3, то вывести True
Помогите исправить программу,она не работает int main() { int n;...

Переделать: вывести TRUE, если число является степенью числа 3 и FALSE в противном случае
Ввести целое число. Вывести TRUE ,если число является степенью числа 3 и...

13
Dr.Urban
63 / 58 / 14
Регистрация: 14.12.2011
Сообщений: 193
11.05.2012, 01:09 2
Реализация через логарифм. Если значение целое число значит является.
0
easybudda
Модератор
Эксперт CЭксперт С++
10089 / 6000 / 1503
Регистрация: 25.07.2009
Сообщений: 11,379
11.05.2012, 01:13 3
Ну да... Для положительных целых чисел:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <math.h>
 
int is_degree(double a, double b) {
    if ( a > 0.0 && b > 0.0 ) {
        double x = log(b) / log(a);
        return ( x == floor(x) ) ? (int)x : -1;
    }
    return -1;
}
 
int main(void) {
    int a, b;
    
    while ( printf("A = ") && scanf("%d", &a) == 1 && printf("B = ") && scanf("%d", &b) == 1 ) {
        int ret = is_degree((double)a, (double)b);
        if ( ret < 0 )
            printf("No way!\n");
        else
            printf("%d = %d ^ %d\n", b, a, ret);
    }
    
    return 0;
}
только при а = 1 забавно получается...
1
Dr.Urban
63 / 58 / 14
Регистрация: 14.12.2011
Сообщений: 193
11.05.2012, 01:38 4
А почему только целых?
0
easybudda
11.05.2012, 01:44
  #5

Не по теме:

Цитата Сообщение от Dr.Urban Посмотреть сообщение
А почему только целых?
А вот вышло так - ввод от другого примера лень было переписывать :)

0
-=ЮрА=-
Заблокирован
Автор FAQ
11.05.2012, 15:01 6
Думаю так будет проще
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
//http://www.cyberforum.ru/c-beginners/thread570837.html
 
int main()
{
    int a, b, iflag = 0, pwr = 0;
    printf("Program check b is a power of a\n");
    printf("Enter a : ");scanf("%d",&a);
    printf("Enter b : ");scanf("%d",&b);
 
    while(1 < a && !iflag)
    {
        iflag = a % b;
        a = a / b;
        pwr = pwr + 1;
    }
    printf("pow(b,%d) %c= a \n",pwr,iflag ? '!' : '=');
    system("pause");
    return 0;
}
http://codepad.org/Xgqc9Sl5
1
Миниатюры
Определить, является ли число степенью другого числа  
-=ЮрА=-
Заблокирован
Автор FAQ
11.05.2012, 15:42 7
А это вариант для вещественных степеней
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
//http://www.cyberforum.ru/c-beginners/thread570837.html
 
int main()
{
    double a = 0, b = 0, ipart; 
    printf("Program check b is a power of a\n");
    printf("Enter a : ");scanf("%lf",&a);
    printf("Enter b : ");scanf("%lf",&b);
 
    printf
    (
        "pow(b,%d) %c= a\n",int(ipart), 
        !int(modf(pow(a,1/b),&ipart)*10) ? '=' : '!'
    );
    system("pause");
    return 0;
}
1
Миниатюры
Определить, является ли число степенью другого числа  
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
12.05.2012, 12:55 8
-=ЮрА=-, опять с ошибками http://liveworkspace.org/code/77a05d8c1c8bec3c4ed035e51ea43e9f
0
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.05.2012, 14:34 9
go, Юра пишет на C++.
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
12.05.2012, 14:55 10
fasked, раздел и теги
глянте пожалуйста. Зачем такое делать.
0
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.05.2012, 15:07 11
go, Юра думает, что пишет на Си
1
-=ЮрА=-
12.05.2012, 22:09
  #12

Не по теме:

Парни я вас не понял, жаль нету времени на холивор...
Вам что уже и кодпад не комильфо?Или в 7-м посте я на кодпад постил так просто, чтобы никто не обращал внимания:)

0
easybudda
Модератор
Эксперт CЭксперт С++
10089 / 6000 / 1503
Регистрация: 25.07.2009
Сообщений: 11,379
12.05.2012, 22:58 13
-=ЮрА=-, да оно и в мелкостудии почти наверняка скомпилилось бы, но опять же, как С++ программа (это про второй твой пример). В С просто нет конструкции int(somethink), есть (int)somethink.
1
-=ЮрА=-
12.05.2012, 23:34     Определить, является ли число степенью другого числа
  #14

Не по теме:

easybudda, первый код подавал как решение, второй тоже при желании можно свести к стандартному(приведение типа - ну что ж да да привёл не так...увы мне увы:))
Вообще же не реализация важна - а принцип - извлекли корень n-й степени и если число целое то пихаем его как ответ, если же нет то пишем ая-яй. В любом случае такой алгоритм безопасней логорифмирования где можно вляпаться по уши если выражение под логорифмом 0 скажем или единичка, а то и того хуже меньше нуля...
PS:Судя из того что автор темы удовлетворился постом 7 думаю всё остальное уже просто ненужный разбор успешного полёта.

0
12.05.2012, 23:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2012, 23:34
Привет! Вот еще темы с ответами:

Дано натуральное число n>1. Проверить является ли число n степенью 2
Дано натуральное число n&gt;1. Проверить является ли число n степенью 2. Программа...

Является ли число k степенью 3
Логической переменной t присвоить значение True или False в зависимости от...

Проверка, является ли число степенью 3
собственно надо ввести число, и проверить, является ли это число степенью числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru