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

Подсчитывать количество цифр 2 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычисления с использованием подпрограмм, функции и процедуры http://www.cyberforum.ru/cpp-beginners/thread754326.html
Помогите пожалуйста!)) 1)Дважды вычислить значение выражения, первый раз используя процедуру, а второй - функцию. http://s020.***********/i704/1301/41/57860c703137.jpg
C++ Opengl и С++ для начинающего Приветствую всех! Можете пожалуйста подсказать хорошую книгу или видео урок по opengl и c++ для начинающего. Спасибо за ответы! ;) http://www.cyberforum.ru/cpp-beginners/thread754311.html
Разбить текст на страницы C++
Дан текстовый файл. Преобразовать его, разбив текст на страницы и пронумеровав их, причем номер нечетной страницы должен размещаться в правом нижнем углу, а номер четной страницы - в ее левом нижнем углу. Число стока странице задается, а ширина страницы определяется самой длинной строкой в данной странице. Конец страницы отмечается символом с кодом 12, который помещается в отдельной строке. ...
Как найти координаты точки на прямой удаленной от заданной точки на х C++
Добрый день! Помогите мне пожалуйста со следующей задачей. Дано 3 точки с координатами A(x1,y1), B(x2,y2), C(x3,y3) Нужно найти координаты точки D(x4,y4), которая лежит на прямой AB и удалена от точки С на 10. Два дня уже потратил на решение, но так и не добился результата. Спать по ночам уже не могу! :(
C++ игра змейка http://www.cyberforum.ru/cpp-beginners/thread754288.html
Здравствуйте! Знакомый попросил помощи, объяснить подробно как работает программа и как сделать разные уровни в игре. Но я не особо ее понимаю.. #include <allegro.h> void init(); void deinit(); void gene(int snakelong); void newgame(); int pause(); void miesto();
C++ Из данных точек перебрать все комбинации по 2 треугольника и проверить, принадлежит ли первый треугольник второму В общем пишу курсовую работу. Уже устал биться с ней... Вот задание: дано N точек, из них нужно перебрать все комбинации по 2 треугольника и проверить, принадлежит ли первый треугольник второму. Помогите... Вот код который я осилил, но не знаю как убрать проверку комбинаций треугольников, которые уже были мной проверены. #include <stdio.h> #include <math.h> float square(float m1, float n1,... подробнее

Показать сообщение отдельно
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
07.01.2013, 00:16     Подсчитывать количество цифр 2
не парился на счет кода, но вот что получилось
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
#include <iostream>
#include <windows.h>
#define n 100000000
using namespace std;
int kvo = 0;
void first() 
{
   for (int i = 0; i <= n; i++)
   {
       for (int j = i; j != 0; j /= 10)
          if (j%10 == 2) 
             kvo++;
   }
  //boost::this_thread::sleep(boost::posix_time::seconds(5));
}
 
int main() 
{
  int start=GetTickCount();
  first();
  cout<<kvo<<endl;
  int end=GetTickCount();
  cout<<end-start<<endl;
  getchar();
  return 0;
}
время 13759

вот 2 потока
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
#include <boost/thread/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <iostream>
#include <windows.h>
#define n 100000000
using namespace std;
    int kvo = 0;
void first(boost::mutex& mutex) 
{
  {
  boost::lock_guard<boost::mutex> lock(mutex);
 
   for (int i = 0; i < n/2; i++)
   {
       for (int j = i; j != 0; j /= 10)
          if (j%10 == 2) 
             kvo++;
   }
  }
  //boost::this_thread::sleep(boost::posix_time::seconds(5));
}
 
void second(boost::mutex& mutex)
{
    boost::lock_guard<boost::mutex> lock(mutex);
 
    for (int i = n/2; i <= n; i++)
    {
        for (int j = i; j != 0; j /= 10)
           if (j%10 == 2) 
              kvo++;
    }
}
 
int main() 
{
  int start=GetTickCount();
  boost::mutex io_mutex;
  boost::thread my_thread(boost::bind(&first, boost::ref(io_mutex)));
  boost::thread my_thread2(boost::bind(&second, boost::ref(io_mutex)));
  my_thread.join();
  my_thread2.join();
  cout<<kvo<<endl;
  int end=GetTickCount();
  cout<<end-start<<endl;
  getchar();
  return 0;
}
время 12480

не особая разница...(
может что-то не так делаю?..)

Добавлено через 11 минут
кстати, при варианте без синхронизации время намного меньше
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
#include <boost/thread/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <iostream>
#include <windows.h>
#define n 100000000
using namespace std;
int one = 0;
int two = 0;
void first() 
{
   for (int i = 0; i < n/2; i++)
   {
       for (int j = i; j != 0; j /= 10)
          if (j%10 == 2) 
             one++;
   }
}
 
void second()
{
    for (int i = n/2; i <= n; i++)
    {
        for (int j = i; j != 0; j /= 10)
           if (j%10 == 2) 
              two++;
    }
}
 
int main() 
{
  int start=GetTickCount();
  boost::thread my_thread(&first);
  boost::thread my_thread2(&second);
  my_thread.join();
  my_thread2.join();
  cout<<one+two<<endl;
  int end=GetTickCount();
  cout<<end-start<<endl;
  getchar();
  return 0;
}
7442
 
Текущее время: 00:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru