Форум программистов, компьютерный форум CyberForum.ru

C++ мат. логика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конструкторы и деконструкторы http://www.cyberforum.ru/cpp-beginners/thread280619.html
Друзья при узучении С++ возникла проблема в понимание "Конструкторы и деконструкторы" Не могу понят как работают то вообще? #include<iostream> using namespace std; //Пишу класс class Answer //к примеру { public: Answer(int A);//конструктор Answer();//Деконструктор
C++ Сформируйте новую строку из пяти самых длинных слов. Дана строка слов, разделенных пробелами, запятыми, точками. Сформируйте новую строку из пяти самых длинных слов. Определите количество слов, начинающихся первой буквой алфавита (русского или латинского). http://www.cyberforum.ru/cpp-beginners/thread280618.html
Строки в Visual С. Срочно пожалуйста. C++
Определить, является ли указанная строка правильной записью адреса e-mail, или URL.
C++ Количество пар соседних элементов
Вычислить количество пар соседних элементов,которые имеют противоположные знаки. При условии что размерность массива 200 а диапазон значений -50-50!
C++ Как в DEV C++ добавить опцию компилятора *cpp? http://www.cyberforum.ru/cpp-beginners/thread280599.html
Друзья! У меня в папке несколько файлов с расширением cpp и они все должны быть включены в компиляцию. Так, а по умолчанию компилятор компилит только ОДИН файл, а остальные должны быть подключены к нему явно #include "drugoi_fail.cpp" Это плохо. Теперь, если компилить все эти файлы из командной строки: g++ *.cpp То всё вроде бы ОК, опция *.cpp говорит, что надо компилить все файлы...
C++ Вывести матрицу в заданном виде Требуется создать квадратную матрицу 9х9, заполнить и вывести в таком виде: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 3 4 0 0 0 0 0 5 6 7 8 9 0 0 0 10 11 12 13 14 15 16 0 17 18 19 20 21 22 23 0 0 0 24 25 26 27 28 0 0 0 0 0 29 30 31 0 0 0 0 0 0 0 32 0 0 0 0 0 0 0 0 0 подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3039 / 1684 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
21.04.2011, 14:35     C++ мат. логика
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/////////////////////////////////////////////////////////////////////////////////////////
//даны число n и а=1, а можно умножать на 2 и на 3.
//Вопрос: как получить из а максимальное число, не превышающее n?
/////////////////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <iostream>
#include <limits>
/////////////////////////////////////////////////////////////////////////////////////////
typedef unsigned long long  T_num;
typedef int                 T_pow;
/////////////////////////////////////////////////////////////////////////////////////////
T_num  a(T_pow  pow_2, T_pow  pow_3)
{
    return  T_num(pow(2.0, pow_2) * pow(3.0, pow_3));
}
/////////////////////////////////////////////////////////////////////////////////////////
void  get_2_3_powers_max(T_num  n, T_pow&  pow_2_best, T_pow&  pow_3_best)
{
    T_pow  pow_2  = T_pow(log(double(n)) / log(2.0));
    T_pow  pow_3  = 0;
 
    pow_2_best  = pow_2;
    pow_3_best  = pow_3;
 
    T_num  a_cur  = a(pow_2, pow_3);
    T_num  a_max  = a_cur;
 
    while(pow_2)
    {
        --pow_2;
        ++pow_3;
        a_cur = a_cur / 2 * 3;
        if(a_cur > n)
        {
            --pow_3;
            a_cur /= 3;
        }
        if(a_cur > a_max)
        {
            a_max       = a_cur;
            pow_2_best  = pow_2;
            pow_3_best  = pow_3;
        }
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    T_num  N_MIN = 1;    
    T_num  N_MAX = 1000000000000000000;
    T_num  n = 0;
    do
    {
        std::cout << "n ("
                  << N_MIN
                  << ".." 
                  << N_MAX 
                  << "): ";
        
        std::cin >> n;
    }while(   n      < N_MIN
           || N_MAX  < n     );
    
    T_pow  pow_2_best = 0;
    T_pow  pow_3_best = 0;
    get_2_3_powers_max(n, pow_2_best, pow_3_best);
 
    std::cout << std::endl
              << "Лучшее приближение числа "
              << n
              << " снизу: "
              << std::endl
              <<"2^"
              << pow_2_best
              << " * 3^"
              << pow_3_best
              << " = "
              << a(pow_2_best, pow_3_best)
              << "."
              << std::endl;    
}
 
Текущее время: 18:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru