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

Задан текстовый файл, необходимо по нему сформировать двоичный файл индексов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как замедлить выполнение for без Sleep http://www.cyberforum.ru/cpp-beginners/thread1306975.html
Хаюши умные дядьки такая проблема надо замедлить выполнение int qwe=10, asd=0, zxc=500; for (int i=1; i<=10; i++) { qwe-=1; Sleep(zxc); asd+=5; Sleep(zxc); }
C++ Передача динамического массива структур в функцию Помогите, пожалуйста переделать. Нужно передать динамический массив. Есть такой код: #include<iostream> using namespace std; void func(player p); struct player { char name; int count; int best_score; }; http://www.cyberforum.ru/cpp-beginners/thread1306960.html
C++ Криптоалгоритм Khazad
Предоставьте пожалуйста исходник.
Вычислить значения функции на заданном отрезке с заданной точностью C++
Необходимо подсчитать сумму: cosnx/n^3 на отрезке с заданной точностью e и шагом h. Программа работает, однако если подсчитать вручную, то результаты не совпадают. Например, если подставить a=1, b=6, c=5, то получается из формулы, что f(1) должно быть равно 0,5403023...а получается не так. Что я делаю не так? #include<iostream> #include<stdio.h> #include <cmath> using namespace...
C++ Определить сколько раз меняется знак в последовательности чисел http://www.cyberforum.ru/cpp-beginners/thread1306935.html
Нужна программа и блок-схема. Написать программу, определяющую сколько раз меняется знак в последовательности чисел, введенных с клавиатуры
C++ Вычисление двойного интеграла методом трех восьмых Подскажите пожалуйста алгоритм вычисления двойного интеграла, с обычным то все понятно я разобрался и сделал а вот с двойным возникли трудности. Код для обычного определенного интеграла: #include <stdio.h> #include <conio.h> #include <tchar.h> #include <iostream> #include <stdlib.h> #include <math.h> подробнее

Показать сообщение отдельно
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
21.11.2014, 19:41     Задан текстовый файл, необходимо по нему сформировать двоичный файл индексов
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
#include <iostream>
#include <fstream>
#include <string>
#include <memory>
#include <stdexcept>
#include <exception>
 
using char_t = char;
using txt_ifstream = std::basic_ifstream < char_t >;
using txt_ofstream = std::basic_ofstream < char_t >;
 
using idx_ifstream = std::basic_ifstream < std::streamsize >;
using idx_ofstream = std::basic_ofstream < std::streamsize >;
 
using string = std::basic_string < char_t >;
 
void make_idx(
        txt_ifstream &txt,
        idx_ofstream &idx,
        std::streamsize bsize = 4*1024
) {
    std::unique_ptr<char_t> buffer;
    std::streamsize position = 0;
    std::streamsize count;
    txt.seekg(0);
    buffer.reset(new char_t[bsize]);
    idx.seekp(0);
    idx.write(&position, 1);
    do {
        count = txt.readsome(buffer.get(), bsize);
        char_t* first = buffer.get();
        char_t* last = first + count;
        while (last != first) {
            if (*first == '\n')
                idx.write(&position, 1);
            ++first;
            ++position;
        }
    } while (count == bsize);
    idx.write(&position, 1);
}
 
string get_string(
            txt_ifstream &txt,
            idx_ifstream &idx,
            std::streamsize id
) {
    std::streamsize first, last, length;
    std::unique_ptr<char_t> line;
 
    if (!idx.seekg(id)) throw std::exception("idx.seekg",__LINE__);
    if (!idx.read(&first, 1)) throw std::exception("idx.read", __LINE__);
    if (!idx.read(&last, 1)) throw std::exception("idx.read", __LINE__);
    length = last - first;
 
    line.reset(new char_t[length + 1]);
    txt.seekg(first);
    txt.read(line.get(), length);
    line.get()[length] = char_t(0);
 
    return string(line.get());
}
 
int main(int argc, char_t **argv) {
    txt_ifstream txt;
    idx_ifstream in;
    idx_ofstream out;
 
    if (argc != 2) return 0xbad;
    string fname = argv[1];
    txt.open(fname + ".txt", std::ios::in | std::ios::binary);
    out.open(fname + ".idx", std::ios::out | std::ios::binary);
    make_idx(txt, out, 1024*1024);
    out.close();
 
 
    in.open(fname + ".idx", std::ios::in | std::ios::binary);
    std::cout << get_string(txt, in, 42) << std::endl;
 
    return 0;
}
как то так
 
Текущее время: 04:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru