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

Как узнать длину числа? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка и запись в файл http://www.cyberforum.ru/cpp-beginners/thread124323.html
Помогите разобраться как решить задачу.... Пробывал ничего не получилось Создайте программу, которая вводит с клавиатуры элементы массива структур(не более 20 элементов). Каждый элемент массива содержит три поля: символьные(фамилия длиной не более 15 символов) и два вещественных (доход и расход) Программа должна отсортировать и вывести в файл элементы массива (построчно) в порядке возрастания...
C++ вращение отрезка. осуществить вращение отрезка вокруг центра, лежащего внутри отрезка и не совпадающего с его центром http://www.cyberforum.ru/cpp-beginners/thread124318.html
C++ Анимация в borland v6
Доброго времени суток! Подскажите пожалуйста,как мне написать движение объекта в восьми направлениях? Ну,т.е. при нажатии на кнопку с клавиатуры,объект должен двигаться в заданном направлении
C++ В какой лучше работать с изображениями?
Подскажите пожалуйста где именно лучше работать с изображениями в MS visual C++ или в Ms visual studio 2008? Может они равноценны? Или что более оптимальное?
C++ Из списка фамилий упорядочить их по алфавиту http://www.cyberforum.ru/cpp-beginners/thread124262.html
Из списка фамилий упорядочить их по алфавиту проверить написание большой буквы Добавлено через 5 минут помогите плс...мучаюсь долго
C++ Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке 1) Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке. Например, дано число 156, нужно получить 651 2) Составить функцию нахождения наибольшего общего делителя четырех натуральных чисел. у кого-нибудь есть подходящие проги???? подробнее

Показать сообщение отдельно
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
03.05.2010, 11:50     Как узнать длину числа?
Цитата Сообщение от Evg Посмотреть сообщение
Однако код через деление выглядит прсотым до банальности, а потому я бы выбрал именно его
Он еще по результатам теста в среднем в два раза быстрее на моей машине.
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
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
 
int DigitCountGeniusIgnat(int number) {
  int result = 0;
  
  while (number != 0) {
    number /= 10;
    result++;
  }
 
  return result;
}
 
int DigitCountManjak(int number) {
  char buffer[65];
  int base = 10;
 
  itoa(number, buffer, base);
 
  return strnlen(buffer, _countof(buffer))
}
 
typedef int (*func_ptr)(int);
 
double Duration(const int* arr, int size, func_ptr func) {
  const std::clock_t start = std::clock();
 
  for (int i = 0; i < size; ++i)
    int count = func(arr[i]);
 
  const std::clock_t finish = std::clock();
 
  return static_cast<double>(finish - start) / CLOCK_PER_SEC;
}
 
int main() {
  const int  size = 1000000;
        int* arr  = new int[size];
 
  std::generate(arr, arr + size, std::rand());
 
  std::cout << "DigitCountGeniusIgnat duration: " << Duration(arr, size, DigitCountGeniusIgnat) << std::endl;
  std::cout << "DigitCountManjak duration: "      << Duration(arr, size, DigitCountManjak     ) << std::endl;
  
  return 0;
}
 
Текущее время: 16:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru