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

Необходимо ускорить выполнение - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Температура процессора и мат.платы http://www.cyberforum.ru/cpp/thread653705.html
Коллеги нужна очень срочна ваша помощь. Надо написать на С++ программу. Чтобы она определяла температуру как процессора так мат.платы.
C++ Нужно написать программу в Visual c++)) Нужно написать программу в Visual c++)) http://www.cyberforum.ru/cpp/thread653491.html
Создание класса на с++ C++
Ребят срочно помогите решить задачку плиз... Создайте класс Rectangle (прямоугольник). Класс имеет атрибуты length (длина) и width (ширина), каждый из которых по умолчанию равен 1. Он имеет...
C++ Прошу реализовать программу из предложенных языков программирования: Си, С++, С#, Java, Паскаль, Делфи
Выполнить программу на любом из предложенных языков программирования: Си, С++, С#, Java, Паскаль, Делфи. 1) В двумерном массиве случайных чисел (М строк. N столбцов) определить номера столбцов,...
C++ Можно ли реализовать КПС на С+? http://www.cyberforum.ru/cpp/thread650267.html
Можно ли реализовать КПС (Компьютерную поисковую систему) на подобии вот такой - КПС на С+? Каким способом?
C++ Найти сумму чисел Фибоначчи, меньших заданного числа 1) Задан массив М натуральных чисел, упорядоченный по неубыванию, т.е .: M<=M<=...<=M. Найти первое натуральное число, не представимое суммой никаких элементов этого массива, при этом сумма может... подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
18.09.2012, 20:56
Алгоритм
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    for (int i = 0; i < Size; ++i) {
        bool flag = false;
        for (int j = i; j < Size; ++j) {
            if (array1[j] > array1[i]) {
                array1[i] = array1[j];
                flag = true;
                break;
            }
        }
        if (!flag) {
            array1[i] = 0;
        }
    }
работает неправильно.
Вот вывод нескольких запусков программы
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
#include <ctime>
#include <iostream>
#include <algorithm>
#include <fstream>
 
const int Size = 10;
int array1[Size];
 
int main() {
    srand((unsigned)time(NULL));
 
    for(int i = 0; i < Size; ++i) {
        array1[i] =  rand();
    }
 
    clock_t time1 = clock();
    for (int i = 0; i < Size; ++i) {
        bool flag = false;
        for (int j = i; j < Size; ++j) {
            if (array1[j] > array1[i]) {
                array1[i] = array1[j];
                flag = true;
                break;
            }
        }
        if (!flag) {
            array1[i] = 0;
        }
    }
    time1 = clock() - time1;
 
    std::fstream F;
    F.open("output.txt", std::ios::out);
    for(int i=0;i<Size;i++)
    {
        F<<array1[i]<<"\n";
    }
    F<<std::endl;
    F.close();
 
 
    std::cout << "Время работы неопитимизированного алгоритма (сек): ";
    std::cout << ((double)time1)/CLOCKS_PER_SEC << std::endl;
 
}
(в столбик, чтобы удобнее читать было для больших массивов)
Код
0
1358406589
1786222289
889275314
1786222289
1786222289
0
1106820397
1106820397
0
Код
964432724
1078747914
1422710114
1422710114
1986008129
0
0
649280754
649280754
0
Вывод неверный, судя по условию (таких вариантов не должно быть вообще).

Добавлено через 2 минуты
yekka, кстати, какой у Вас компилятор? У меня на gcc 4.4.3 с включенной опцией -std=c++0x Ваш пример не компилится, видимо, из-за лямбда-функции.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru