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

Составление одного числа из нескольких - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не ждать завершения запущенной внешней программы http://www.cyberforum.ru/cpp-beginners/thread628293.html
Я запускаю из своей программы внешний экзешник при помощи system(command). Но данный вариант меня не устраивает, т.к. приходится ждать завершения этой внешней программы, а мне надо оставить ее запущенной. Как можно еще запустить внешний экзешник, чтобы не ждать завершения его работы?
C++ Не удается использовать функцию gets в программе, где создается поток Приветствую всех. Я в меру своих возможностей изучаю С++ по книге Г. Шилдта. Время от времени пытаюсь самостоятельно писать небольшие программки - чтобы проверить свои знания, в связи с чем регулярно сталкиваюсь с непонятными трудностями. Надеюсь, вы мне поможете с текущей. Сейчас пытаюсь написать простенькую программу, которая бы создавала текстовый массив со строкой, а затем записывала бы... http://www.cyberforum.ru/cpp-beginners/thread628275.html
C++ Побитовое чтение
Есть файл видео и мне известна его структура. Например структура следующая: 8 бит 1 бит 1 бит 1 бит 13 бит и т.д. Как мне считать данные побитово? Или можно только считывать побайтово и выделять потом биты? Если побайтово, то как потом выделить биты из него? Можете объяснить, ну и показать пару примеров. Заранее благодарю.
Не вызывается нужный элемент массива по значению управляющей переменной в цикле for C++
Вот часть кода : for(int i=0; i < 5; i++){ cout << "Этот объект " << shapes->getName() << "\n"; cout << "Площадь равна " << shapes->area() << "\n"; cout << "\n"; } Проблема в том, что выполняется 5 итераций, но при этом вызывается всегда первый элемент массива. Когда устанавливаю вручную цифру, то без проблем можно вывести любой элемент этого массива, но и если вывести в этом же...
C++ Супер-быстрый перебор http://www.cyberforum.ru/cpp-beginners/thread628258.html
Используя минимальное количество библиотек(Вместо iostream - stdio.h) сделать рекурсивный перебор: Найти количество N-значных натуральных чисел, сумма цифр у каждого из которых равняется M. N и M заданные натуральные числа. Технические условия Входные данные. В строке файла записаны значения N и M. (1<=N<=100, 1<=M<=900). Выходные данные.
C++ Конкурс(поиск простых чисел) Я тут подумал, посмотрел по теме Hello world'a как всем нравится находить изощренные способы.Так вот - задание на засыпку: написать программу, вычисляющую простые числа от 1 до 300000.Программа ДОЛЖНА работать за 6 секунд.Обьем памяти неограничен.За 6 сек должна работать на процессоре примерно таком - 2 ядра по 3.2 ггц каждое! Ну что, кто напишет?))) Кто напишет, тому спасибо поставлю) подробнее

Показать сообщение отдельно
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
25.07.2012, 13:20     Составление одного числа из нескольких
Поигрался немного с boost proto

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
#include <iostream>
#include <string>
#include <vector>
#include <stdexcept>
#include <boost/proto/core.hpp>
#include <boost/proto/context.hpp>
 
namespace proto = boost::proto;
using proto::_;
 
template <typename expr>
struct calculator_expression;
 
struct calculator_domain
   : proto::domain <proto::generator <calculator_expression>> { };
 
template <int I> struct placeholder {  };
 
struct calculator_context
   : proto::callable_context <calculator_context const> {
   std::vector <int> v_numbers;
   typedef int result_type;
 
   explicit calculator_context(const std::vector <int> & v_numbers_)
      : v_numbers(v_numbers_) {  }
 
   template <int I>
   int operator ()(proto::tag::terminal, placeholder <I>) const {
      std::string result;
      
      for (auto & val : this->v_numbers) {
         result += std::to_string(val);
      }
    
      return stoi(result);
    }
};
 
template <typename expr>
struct calculator_expression
  : proto::extends <expr, calculator_expression <expr>, calculator_domain>
{
   explicit calculator_expression(expr const & expression = expr())
      : calculator_expression::proto_extends(expression)
   {  }
 
   BOOST_PROTO_EXTENDS_USING_ASSIGN(calculator_expression <expr>)
 
   int operator ()() const {
      calculator_context const ctx;
      return proto::eval(*this, ctx);
   }
 
   int operator ()(const std::vector <int> & v_numbers) const {
      calculator_context const ctx(v_numbers);
      return proto::eval(*this, ctx);
   }
};
 
calculator_expression <proto::terminal <placeholder <1>>::type> const _1;
calculator_expression <proto::terminal <placeholder <2>>::type> const _2;
 
int main() {
   try {
      std::vector <int> v_numbers = { 8, 230, 12, 20, 1 };
      int number = ((_1)(v_numbers));
      std::cout << number << std::endl;
   } catch (const std::out_of_range & exc) {
      std::cerr << exc.what();
   }
   
   return 0;
}
http://liveworkspace.org/code/1ab774...938c2802cd8fa0
 
Текущее время: 14:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru