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

Оптимизация программы на С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ оптимизация, медленный доступ к трехмерному массиву http://www.cyberforum.ru/cpp-beginners/thread815355.html
Здравствуйте, публикуюсь здесь потому что нет доступа к разделу экспертов. Требуется перевести буфер из одного формата в другой по определенной формуле с плавающей точкой, а именно из формата yuyv в формат rgb24 (если это что-то кому то скажет). Хотел сократить расчеты записав все значения в массив и просто беря оттуда нужные значения. Но оказывается что каждый раз считать получается быстрее,...
C++ Разработать программу «Заработная плата» 3) Разработать программу «Заработная плата», позволяющую определить размер месячного вознаграждения работника, состоящего из суммы должностного оклада, премии, надбавки, в зависимости от должности, ставки, льгот, за вычетом налоговых отчислений; http://www.cyberforum.ru/cpp-beginners/thread815348.html
Разработать программу «Стоимость компьютера», позволяющую вычислять стоимость комплекта для АРМ различных специалистов C++
2)Разработать программу «Стоимость компьютера», позволяющую вычислять стоимость комплекта для АРМ различных специалистов (бухгалтера, инженера, программиста, и т.п.);
C++ Разработать программу «Площадь поверхности многогранника», позволяющую вычислять объем площади поверхности простейших многогранников;
Разработать программу «Площадь поверхности многогранника», позволяющую вычислять объем площади поверхности простейших многогранников;
C++ Разработать программу «Стоимость компьютера», позволяющую вычислять стоимость комплекта для АРМ различных специалистов http://www.cyberforum.ru/cpp-beginners/thread815308.html
Разработать программу «Стоимость компьютера», позволяющую вычислять стоимость комплекта для АРМ различных специалистов (бухгалтера, инженера, программиста, и т.п.);
C++ Задача по методам оптимизации Всем доброго времени суток! Необходимо запрограммировать метод тяжелого шарика. Заранее спасибо! подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
22.03.2013, 15:02     Оптимизация программы на С++
Неплохо было бы узнать, какая была исходная задача? Если это то, что я думаю, можно сделать в два раза короче.
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
83
84
85
86
87
88
89
90
91
92
93
94
#include <ctime>
#include <cstdlib>
#include <cstring>
#include <iostream>
 
char *toBase(char *buffer, int number, int radix) {
  const static char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  char *result = buffer;
  for (; number > 0; number /= radix) {
    *buffer++ = digits[number % radix];
  }
  *buffer-- = '\0';
  for (char *i = result; i < buffer; ++i, --buffer) {
    char c = *i;
    *i = *buffer;
    *buffer = c;
  }
  return result;
};
 
int reverse(int number) {
  int result = 0;
  while (number > 0) {
    result = (result * 10 + number % 10);
    number /= 10;
  }
  return result;
};
 
bool isPalindrome(int number) {
  return number == reverse(number);
};
 
bool isPalindrome(const char *word) {
  const char *first = word;
  const char *last = word + strlen(word) - 1;
  while (first < last) {
    if (*first++ != *last--) {
      return false;
    } 
  }
  return true;
};
 
int main(int argc, char *argv[]) {
  srand(time(0));
  
  char buffer[512];
  
  int radix = 2 + rand() % 15;
  int firstNumber = 100;
  int lastNumber = 300000;
    
  int minPalindrome = -1; 
  int maxPalindrome = -1;
 
  std::cout << "Radix is " << radix << ", first number is " << 
    firstNumber << ", last number is " << lastNumber << 
    " exclusive." << std::endl;
 
  for (int number = firstNumber; number <lastNumber; ++number) {
    if (isPalindrome(number) &&
      isPalindrome(toBase(buffer, number, radix))) {
      std::cout << "Found number: " << number << " aka " << buffer << 
        " is palindrome in both 10 and " << radix << " radix." <<
        std::endl;
      if (minPalindrome > number || minPalindrome < 0) {
        minPalindrome = number;
      }
      if (maxPalindrome < number || maxPalindrome < 0) {
        maxPalindrome = number;
      }
    }
  }
 
  std::cout << "Minimal palindrome is " << minPalindrome <<
    ", in radix " << radix << ": " <<
    toBase(buffer, minPalindrome, radix) << std::endl;
  std::cout << "Maximal palindrome is " << maxPalindrome <<
    ", in radix " << radix << ": " <<
    toBase(buffer, maxPalindrome, radix) << std::endl;
 
  std::cout << "Sum of max and min palindroms is " <<
    minPalindrome + maxPalindrome <<
    ", in radix " << radix << ": " <<
    toBase(buffer, minPalindrome + maxPalindrome, radix) << std::endl;
  
  std::cout << "Difference of max and min palindroms is " <<
    maxPalindrome - minPalindrome <<
    ", in radix " << radix << ": " <<
    toBase(buffer, maxPalindrome - minPalindrome, radix) << std::endl;
 
  return 0;
}
 
Текущее время: 21:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru