Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/41: Рейтинг темы: голосов - 41, средняя оценка - 4.61
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108

Найти показатель степени числа

21.05.2013, 09:51. Показов 7880. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть число 0.0045 представляем его в виде 4.5*10^(-3). Мне нужно сохранить -3. Или допустим 425 тогда 4.25*10^(2). Вопрос нету встроенной функции какой нибудь? Кода тут на один счетчик, просто интересно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2013, 09:51
Ответы с готовыми решениями:

Найти показатель степени числа, являющегося степенью двойки
Дано целое число N (>0), являющееся некоторой степенью числа 2: N = 2K. Найти целое число K — показатель этой степени.

Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку
Ребят, такая проблема, задание: Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. ...

Рекурсивная функция, число и показатель степени
Ребят помогите пожалуйста не могу понять как решить данную задачу: Напишите программу, которая запрашивает число и показатель...

17
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
21.05.2013, 10:17
для положительных x:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int GetPow(double x)
{
    int n=0;
    if(x>=10)
      while(x>=10)
      {
            n++;
            x/=10;
      }
   else if(x<1)
        while(x<1)
        {
              n--;
              x*=10;
        }
    return n;
 
}
Добавлено через 4 минуты
Для любых x
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int GetPow(double y)
{
    double x=fabs(y);
    int n=0;
    if(x>=10)
      while(x>=10)
      {
            n++;
            x/=10;
      }
   else if(x<1)
        while(x<1)
        {
              n--;
              x*=10;
        }
    return n;
 
}
1
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108
21.05.2013, 11:43  [ТС]
Спасибо, но я же спросил о встроенной функции, может она уже есть и писать ничего не надо.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.05.2013, 13:43
Цитата Сообщение от Петр91 Посмотреть сообщение
Спасибо, но я же спросил о встроенной функции, может она уже есть и писать ничего не надо.
- да есть
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main()
{
    const char * data = "4.5*10^(-3)";
    double value = 0;
    double power = 0;
    if(sscanf(data, "%lf*10^(%lf)", &value, &power) == 2)
        printf("value : %lf\npower : %lf\n", value, power);
    getchar();
    return 0;
}
Миниатюры
Найти показатель степени числа  
1
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108
21.05.2013, 16:21  [ТС]
смеетесь?)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.05.2013, 17:41
Что это значит?Вопрос был какой стандартной функцией можно подобрать степень в структурированной строке
Цитата Сообщение от Петр91 Посмотреть сообщение
4.5*10^(-3)
- ответ sscanf позволяет реализовывать забор данных путём задания спецификатора формата, в данном случае таком
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
%lf*10^(%lf)
. По крайней мере из всего я понял твоё задание так. Напиши ещё раз что требуется.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
21.05.2013, 17:53
-=ЮрА=-, он имел в виду что на входе числа в виде: 0.0045 или 425
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.05.2013, 17:57
Если именно забрать степень из числа то можно использовать stringstream в сочетании с std::scientific
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
25
26
#include <string>
#include <sstream>
#include <iomanip>
#include <iostream>
using namespace std;
 
int main()
{
    double param = 0.0045;
    double value = 0;
    double power = 0;
    stringstream ss;
    string str;
    ss<<std::scientific<<param;
    if(ss>>str)
    {
        size_t pos = str.find('e', 0);
        if(pos != string::npos)
            str.replace(pos, 1, " ");
    if(sscanf(str.c_str(), "%lf %lf", &value, &power) == 2)
        cout<<"value : "<<value<<endl
            <<"power : "<<power<<endl;
    }
    cin.get();
    return 0;
}
Миниатюры
Найти показатель степени числа  
1
21.05.2013, 17:59

Не по теме:

В принципе sscanf должен был брать сразу два параметра разделённых символом е т.е 4.5е-3
if(sscanf(str.c_str(), "%lfe%lf", &value, &power) == 2) но не сработало, пришлось мастерить городуху с риплэйс

0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
21.05.2013, 18:00
Логарифм по основанию 10 не зря придумали
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    cout << log10( 1000 ) << endl;
    cout << log10( .001 ) << endl;
    return 0;
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.05.2013, 20:57
Цитата Сообщение от lazybiz Посмотреть сообщение
Логарифм по основанию 10 не зря придумали
- да но для данной задачи он не применим абсолютно cout<<log10(0.0045) . Логориф показывает лишь показатель степени в которую нужно возвести основание. Ниже немного шаманский 100% вариант разделения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
#include <sstream>
#include <iomanip>
#include <iostream>
using namespace std;
 
int main()
{
    double param = 0.0045;
    char value[16];
    long   power = 0;
    char delim   = 0;
    stringstream ss;
    ss<<scientific<<param;
    if(sscanf(ss.str().c_str(), "%[^\e]%c%d", &value, &delim, &power) )
        cout<<"value : "<<atof(value)<<endl
            <<"power : "<<power<<endl;
    cin.get();
    return 0;
}
Миниатюры
Найти показатель степени числа  
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
21.05.2013, 21:04
-=ЮрА=-, не вопрос!
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    cout << floor( log10( .0045 ) ) << endl;
    cout << floor( log10( 425 ) ) << endl;
    return 0;
}
Вывод:
-3
2
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.05.2013, 21:11
lazybiz, с логорифмом могут быть проблемы когда показатель степени будет близок к 2,5 и вообще к любому числу с 0.5.
Поясняю 316,22776601683793319988935444327 это 10^2.5
вот что возвратит алгоритм с логорифмом http://codepad.org/ypIu8yiy

Не по теме:

Хотя один бог знает чего автору надо, я до конца так и не понял его задание.

1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
21.05.2013, 21:24
-=ЮрА=-, мой код вполне удовлетворяет примеру ТС. Зачем спорить попусту?)
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Поясняю 316,22776601683793319988935444327 это 10^2.5
Поясняю: floor( 2.1 ) == 2, floor( 2.9 ) == 2
Согласен с тем что ТС не совсем корректно задал вопрос.
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.05.2013, 22:03
Цитата Сообщение от lazybiz Посмотреть сообщение
Зачем спорить попусту?)
- да я и не спорил я писал о том что разложить число на мантиссу и показатель степени никакой логориф не сможет. Я предложил свой вариант(возможно он шире и раскладывает число на мантиссу и на степень) ты предложил свой (выделяет степень), вчера zss, свой Петр91-у, остаётся лишь зайти да скопипастить.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
21.05.2013, 22:09
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
остаётся лишь зайти да скопипастить.
Я руководствовался лишь собственными убеджениями.

Добавлено через 4 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
разложить число на мантиссу и показатель степени никакой логориф не сможет
Но помог же.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.05.2013, 22:51
Цитата Сообщение от lazybiz Посмотреть сообщение
Но помог же.
- lazybiz, число 0,00025 логорифм запишет в таком виде
value 2,5
power -4
???Повторюсь
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
что разложить число на мантиссу и показатель степени никакой логориф не сможет
если автору нужно только это
Цитата Сообщение от Петр91 Посмотреть сообщение
Есть число 0.0045 представляем его в виде 4.5*10^(-3). Мне нужно сохранить -3.
пусть берёт логорифм ничего против не имею, если нужно полное разложение 4.5 в 10^-4 то о логорифме следует забыть и использовать более сложные конструкции.

Не по теме:

Уже начанию непонимать суть нашей дискуссии.

1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
21.05.2013, 23:11
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- lazybiz, число 0,00025 логорифм запишет в таком виде
value 2,5
power -4
???
Да, он выдаст -4.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
если автору нужно только это
Как я понял, только это ТС и нужно.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
пусть берёт логорифм ничего против не имею
Ну так, тем более. И я об этом.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
если нужно полное разложение
Сомневаюсь. ТС об этом ни слова ни сказал.

P.S.: Юр, я не хочу с тобой спорить, вполне возможно твой вариант вполне рабочий (извини, не проверял). Я просто предложил свой рабочий вариант решения его задачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2013, 23:11
Помогаю со студенческими работами здесь

Реализовать возведение квадратной матрицы в степень, где показатель степени - заданный вектор
Даны квадратная матрица A порядка n и вектор b с n элементами. Получить вектор A^2b. Помогите пожалуйста не могу понять как можно...

Заданы числа a и n. Найти а в степени n не используя соответствующую функцию. n
Заданы числа a и n. Найти а в степени n не используя соответствующую функцию. n

Найти значение суммы используя рекурсию нахождения целого степени числа а
Найти значение суммы ряда используя рекурсию нахождения целого степени числа а

Найти ID цепочки ДНК, имеющей наибольший показатель содержания GC
Здравствуйте, как можно дописать код, чтобы программа заработала? Вот условие и сама программа: Дано: Максимум 10 цепочек ДНК в формате...

Даны натуральные числа n, k. Проверить, есть ли в записи числа n (в степени k) цифра m
За основу вот взял этот код: #include&lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { vector&lt;long...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru