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

Разбор массивов/контейнеров - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ неправильное чтение бинарного файла. http://www.cyberforum.ru/cpp-beginners/thread156229.html
программа должна по идее вывести 99.. мне так казалось.. #include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; int main() {
C++ Вызов методов класса // practice.cpp : main project file. #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; const int size=20; //======================================== class publication { http://www.cyberforum.ru/cpp-beginners/thread156201.html
Ошибка сегментации C++
Здравствуйте, написал программу, запускаю- Windows пишет: "обнаружена ошибка. Приложение будет закрыто". Ошибка в функции: bool prov(int re){ int i=0,j=0; bool r; if ((re==re)and(re==re)){r=true;}; if ((re==re)and(re==re)){r=true;};
Можно ли использвовать диррективу препроцессора #warning в Visual Studio 2008 C++
Здравствуйте Товарищи ;) Хочу, организовать себе памятку на будущее (чтобы потом поправить код) надумал использовать диррективу препроцессора #warning. НО тут проблема, в компиляторе Visual Studio 2008, её почему-то нет (может расскажете почему именной её убрали ;) ), ну не заменять же её #error - кой Может кто в курсе, как решить этот вопрос, буду очень признателен за помощь!
C++ Нахождение площади методом половинного деления http://www.cyberforum.ru/cpp-beginners/thread156118.html
Народ подскажите как находить площадь фигуры методом половинного деления, Вот фигура напрвте как решать метод половинного деления знаю как пишется.
C++ Найти два максимальных числа Задача впринципе легкая, но меня что-то зациклило по полной. Найти два максимальных числа из 10 введенных. БЕЗ массива. Одинаковое число может быть введено только ОДИН раз. Следовательно цикл может быть только один. Можно конечно наверное заводить под каждое введенное значение новую переменную... Но есть ли резон в этом? Кто может помогите плз. Вот код ищет максимальное число. //Находит... подробнее

Показать сообщение отдельно
Kadet89
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
01.08.2010, 21:08     Разбор массивов/контейнеров
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <iostream>
#include <map>
#include <string>
#include <fstream>
#include <stdexcept>
#include <boost/serialization/utility.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
 
typedef std::map<std::string, std::pair<std::string, int> > users_type;
 
/** проверка на существование юзера */
bool user_exists(const users_type& users, const std::string& user) {
   return users.find(user) != users.end();
}
 
/** добавляешь юзера */
void add_user(users_type& users, const std::string& user, const std::string& description, int count = 0) {
   users[user] = std::make_pair(description, count);
}
 
/** получаешь описание юзера */
std::string get_user_description(const users_type& users, const std::string& user) {
   /** проверяешь, существует ли юзер */
   if ( user_exists(users, user) ) {
      /** возвращаешь описание */
      users_type::const_iterator it = users.find(user);
      return (*it).second.first;
   }
   /** иначе пустую строку */
   return std::string();
}
 
/** получаешь счетчик юзера */
int get_user_count(const users_type& users, const std::string& user) {
   /** проверяешь, существует ли юзер */
   if ( user_exists(users, user) ) {
      /** возвращаешь счетчик */
      users_type::const_iterator it = users.find(user);
      return (*it).second.second;
   }
   /** иначе -1 */
   return -1;
}
 
/** инкрементируешь счетчик юзера */
void inc_user_count(users_type& users, const std::string& user, int val = 1) {
   /** проверяешь, существует ли юзер */
   if ( user_exists(users, user) ) {
      /** инкрементируешь счетчик */
      users_type::iterator it = users.find(user);
      (*it).second.second += val;
   }
}
 
/** выводишь инфу о юзере */
void print_user_info(const users_type& users, const std::string& user) {
   /** проверяешь, существует ли юзер */
   if ( user_exists(users, user) ) {
      std::cout << "nick: " << user << std::endl;
      std::cout << "description: " << get_user_description(users, user) << std::endl;
      std::cout << "count: " << get_user_count(users, user) << std::endl << std::endl;
   }
}
 
/** сохранить юзеров в файл БД */
void save_users(const users_type& users, const std::string& fname) {
   std::ofstream file(fname, std::ios::binary|std::ios::trunc);
   if ( !file ) {
      throw std::runtime_error("can`t create file");
   }
   boost::archive::binary_oarchive(file) << users;
}
 
/** загрузить юзеров из файла БД */
void load_users(users_type& users, const std::string& fname) {
   std::ifstream file(fname, std::ios::binary);
   if ( !file ) {
      throw std::runtime_error("can`t open file");
   }
   boost::archive::binary_iarchive(file) >> users;
}
 
/***************************************************************************
users_type::iterator - при разыменовании получаем std::pair<>
равносильно:
std::pair<
   std::string, - ключ(first)
   std::pair< - значение(second)
      std::string, - second.first
      int - second.second
   >
>
 
***************************************************************************/
 
int main() {
   const std::string john = "John";
   const std::string mike = "Mike";
   users_type users;
   
   add_user(users, john, "John description");
   add_user(users, mike, "Mike description");
   
   print_user_info(users, john);
   print_user_info(users, mike);
   
   inc_user_count(users, john);
   inc_user_count(users, john);
 
   print_user_info(users, john);
   
   save_users(users, "file.db");
   users.clear();
   
   load_users(users, "file.db");
   std::cout << "after load:" << std::endl;
   print_user_info(users, john);
   print_user_info(users, mike);
 
   return 0;
}
вот весь код
 
Текущее время: 18:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru