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

Неправильная запись в файл - C++

Восстановить пароль Регистрация
 
VictorTomsk
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 4
20.01.2010, 20:57     Неправильная запись в файл #1
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#pragma hdrstop
#pragma argsused
#include <fstream>
#include <iostream>
#include <string>
#include<sstream>
 
using namespace std;
/*Нахождение простых чисел с помощью решета Эратосфена*/
int* Sieve_of_Eratosthenes(int n)
{
    int *a = new int[n];
    int j = 1, m = 2, Count = 0;
    a[0] = 0; a[1] = 0;
    for (int i = 2; i < n; i++)
    {
        a[i] = 1;
    }
    while (m < n)
    {
        if (a[m] != 0)
        {
            j = m * 2;
            Count++;
            while (j < n)
            {
                a[j] = 0;
                j += m;
            }
        }
        m++;
    }
    int* b = new int[Count];
    int Index = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] != 0)
        {
            b[Index] = i;
            Index++;
        }
        if (Index == Count)
        {
            break;
        }
    }
    return b;
}
 
char* IntToChar(int Integer)
{
    string StrToInt;
    ostringstream StreamIndex;
    StreamIndex << Integer;
    StrToInt = StreamIndex.str();
    char* NewCountMail = new char [3];
    for (unsigned int i=0; i < StrToInt.length(); i++)
    {
        NewCountMail[i] = StrToInt[i];
    }
    NewCountMail[StrToInt.length()]='\0';
    return NewCountMail;
}
 
/*Перевод в нужные системы счисления*/
void Text_into_numbering_system(char *input_filename, int* Prime_numbers, int Size, int Max)
{
    int DetectSize, Detect;
    for (int j = 0; j < Size; j++)
    {
        Detect = 0;
        DetectSize = Max;
        while (DetectSize>0)
        {
            DetectSize = DetectSize / Prime_numbers[j];
            Detect++;
        }
        cout<<Detect<<" ";
        int* Recalculation = new int[Detect];
        for (int i = 0; i < Detect; i++)
        {
            Recalculation[i] = 0;
        }
        unsigned char Symbol;
        fstream file_in;
        file_in.open(input_filename, ios_base:: in);
        unsigned int Into_Int;
        if (!file_in)
        {
            cout<<"Error";
        }
        char* FileName = IntToChar(Prime_numbers[j]);
        strcat(FileName,".txt");
        fstream file_out;
        file_out.open(FileName,ios_base:: out);
        cout<<FileName<<"\n";
        delete []FileName;
        Symbol = file_in.get();
        while (!file_in.eof())
        {
            Into_Int=int(Symbol);
            for (int i = Detect - 1; i >= 0; i--)
            {
                Recalculation[i] = Into_Int % Prime_numbers[j];
                Into_Int = Into_Int / Prime_numbers[j];
                if (Into_Int == 0)
                {
                    break;
                }
            }
            for (int i = 0; i < Detect; i++)
            {
                file_out<<Recalculation[i];
                file_out<<" ";
                cout<<Recalculation[i];
                cout<<" ";
            }
            Symbol = file_in.get();
        }
        file_in.close();//закрыли файл, т. к. он больше не нужен
        file_out.close();
        delete []Recalculation;
        cout<<"\n";
    }
}
 
int main()
{
    const int Size = 31;
    const int Max = 128;
    int* Prime_numbers;
    Prime_numbers = Sieve_of_Eratosthenes(Max);//Вывод всех простых чисел до Max
    for (int i=0; i<Size; i++)
        cout<<Prime_numbers[i]<<"  ";
    Text_into_numbering_system("Initial_text.txt",Prime_numbers, Size, Max);
    system ("pause");
    return 0;
}
Писал в Borland Developer Studio 2006 С++ консольное приложение.
Переводит в различные системы счисления текст, потом записывает в файл с названием 2.txt - если система счисления по основанию 2, 5.txt - если основание 5 и т. д.
Так вот в чем загвозка.
В консоль выводит правильно, а вот в файл записывает не верно, но только в том случае, если основание системы счисления с одним разрядом, т. е. 2.txt - запись не верно, а 11.txt - записывает верно.
Записывает верно, если числа в файле не разделять пробелом, но мне необходимо их записывать с пробелом. Помогите кто сможет. Очень надо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2010, 20:57     Неправильная запись в файл
Посмотрите здесь:

Запись в файл C++ Builder
C++ запись в файл
C++ Запись в файл
C++ запись в файл
C++ Запись в файл на си++
Неправильная запись в текстовый файл C++
Нет вывода и неправильная запись (запись) C++
Запись в файл C++
Запись в файл C++
Запись в файл С++ C++
C++ Неправильная запись в файл
запись в файл C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 04:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru