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

Оптимизация вычислений - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ C++ http://www.cyberforum.ru/cpp-beginners/thread517156.html
#include <iostream> #include <math.h> using namespace std; int main(){ double x,a,abs; cout<<"input a: "<<endl; cin>>a; x=abs(a); cout<<"x="<<x<<endl; return 0;
C++ программа вылетает. привет всем! я новичок. программа ошибок не выдаёт. После ввода всех переменных программа вылетает я не успеваю увидеть ответ. вот он код: #include <iostream> using namespace std; int main () { int a,b,c; cout<<"vvedi 4islo a"<<endl; cin>>a; http://www.cyberforum.ru/cpp-beginners/thread517153.html
Сравнение кол-ва слов в строке и сопоставление аналогичной строке. C++
Добрый день. У меня есть 2 разных текста в richtextbox1 и richtextbox2, каждое предложение начинается с новой строки. Задача заключается в том, чтобы выполнялся подсчет количества слов в каждой строке и при совпадении такого же кол-ва слов в другой строке(из richtextbox2) эти пары строк переносились в другой richtextbox(к примеру в richtextbox3 и 4). public static int...
stl vector или ограниченный массив C++
Скажите пожалуйста целесообразно ли использовать вектор структур с весом 100 байт и размером вектора не больше 10, а так же использовать функцию erase(). Или лучше задать массив таких структур размера 10. Негодные элементы у меня отмечаются флагом.
C++ не могу найти ошибку в кодировании Хаффмана http://www.cyberforum.ru/cpp-beginners/thread517142.html
занимаюсь сжатием Jpeg написала почти все, теперь начинаю проверять на программе JPEGsnoop с помощью МОЕЙ программы строю дерево хаффмана для значений int **MASS_DEREVO_Diff_CrCb; MASS_DEREVO_Diff_CrCb = new int *; for(k_huf=0; k_huf<3; k_huf++) { MASS_DEREVO_Diff_CrCb= new int; } int znach_kod_Diff_CrCb;
C++ не разрешённый символ в функции GetForegroundWindow(); Всем привет! возникла такая проблема: строчка HWND wnd = GetForegroundWindow(); в консольном приложении работает нормально, а вот когда пишу тот же самый код в WindosForm, то возникают ошибки: error LNK2019: ссылка на неразрешенный внешний символ "extern "C" struct HWND__ * __stdcall GetForegroundWindow(void)" (?GetForegroundWindow@@$$J10YGPAUHWND__@@XZ) error LNK2028: ссылка на... подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.03.2012, 11:32     Оптимизация вычислений
Цитата Сообщение от Ksan Посмотреть сообщение
Прокомментируйте пожалуйста код, не совсем понимаю что к чему
Почитайте где-нибудь про макросы
первый FOR(1, 1, ...) раскрывается как
C
1
2
3
4
5
6
for (a1 = 1; a1 <= 9 && sum <= 10; ++a1)
{
    sum += a1;
    ...
    sum -= a1;
}
Ну и этот код перебирает все десятизначные числа.

Вот код, который перебирает числа от 0 до 10^16.
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
#include <stdio.h>
 
#define FOR(x, code)                                    \
    for ( a##x = 0; a##x <= 9 && sum <= 16 ; ++a##x )   \
    {                                                   \
        sum += a##x;                                    \
        code                                            \
        sum -= a##x;                                    \
    }           
    
 
 
int main()
{   
    freopen("output.txt", "w", stdout);
    
    int sum = 0;
    int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16;
    
    FOR(1, 
    FOR(2, 
    FOR(3, 
    FOR(4, 
    FOR(5, 
    FOR(6, 
    FOR(7, 
    FOR(8, 
    FOR(9, 
    FOR(10, 
    FOR(11,
    FOR(12,
    FOR(13,
    FOR(14,
    FOR(15,
    FOR(16,
        
        if ( sum == 16 )
        {
            char str[17];
            
            str[0] = a1 + '0';
            str[1] = a2 + '0';
            str[2] = a3 + '0';
            str[3] = a4 + '0';
            str[4] = a5 + '0';
            str[5] = a6 + '0';
            str[6] = a7 + '0';
            str[7] = a8 + '0';
            str[8] = a9 + '0';
            
            str[9 ] = a10 + '0';
            str[10] = a11 + '0';
            str[11] = a12 + '0';
            str[12] = a13 + '0';
            str[13] = a14 + '0';
            str[14] = a15 + '0';
            str[15] = a16 + '0';
            
            str[16] = '\0';
            
            char * p = str;
            while (*p == '0')
                ++p;
                
            printf("%s ", p);
        }
        
    ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
    
    return 0;                                   
}
Работает у меня ровно 100 секунд, но проверить правильность я не могу, т.к. размер файла доползает до 2.1 гб, а больше у меня, видимо, создать нельзя, поэтому еще половина чисел попросту недописывается =\
А вообще это быдлокод, конечно, лучше использовать вариант, который предложил valeriikozlov.
 
Текущее время: 09:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru