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

Быстрое чтение и запись файлов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Уравнение с тремя переменными С++ http://www.cyberforum.ru/cpp-beginners/thread362850.html
Уважаемые форумчане, помогите решить задачу на С++. Задано уравнение третьей степени 11*x*x*x-13*y*y*y+17*z*z*z-4503=0 Определить, имеет ли оно решение в целых числах. Если имеет, то сколько их и чему они равны. кроме того обязательным условием является использование в коде подпрограммы. Сам я написал вот такой "сложный" код с двумя вложенными циклами без всяких подпрограмм, в результате...
C++ Две не сложные задачки 1. Составьте программу, определяющую остаток от деления числа А на число В. 2. Даны два различных вещественных числа. Определить какое из них меньше. ЗАРАНЕЕ СПАСИБО http://www.cyberforum.ru/cpp-beginners/thread362814.html
C++ Считавание и выполнение математического выражения из файла
Всем привет! Нужно сделать программу, которая бы считывала математическое выражение из файла input.txt, и записывала результат в output.txt Вот что я сделал: #include <iostream.h> #include <stdio.h> int main()
работа с файлами C++
подскажите как можно сохранить/считать с файла *.dat и чтобы этот файл не смогли прочесть(даже открыть) другие пользователи.
C++ Вычислить значение выражения http://www.cyberforum.ru/cpp-beginners/thread362782.html
2. Вычислите значения выражений при int x = 7, y = 10: a) x & y; b) x | y; c) x ^ y; d) ~x;
C++ Помогите со структурами (дописать программу) Структуры вводятся с клавиатуры. В ряде вариантов заданий с клавиатуры вводится не вся структура, а только ее отдельные поля. Необходимо выполнить обработку сформированного массива структур и результаты обработки вывести на экран дисплея. Массив должен содержать сведения о книгах. Каждая структура должна иметь следующие поля: автор (авторы), название, год издания, цена и издательство. Вывести... подробнее

Показать сообщение отдельно
Coyote112358
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
09.10.2011, 01:13  [ТС]     Быстрое чтение и запись файлов
покажите пожалуйста как конкретно это сделать с моим файлом

input.txt:
3
1 2 3
4 5 6
7 8 9

?

Добавлено через 13 часов 57 минут
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
#include <stdio.h>
#include <stdlib.h>
#include "iostream"
using namespace std;
 
int main ()
{
    FILE * pFile;
    long lSize;
    char * buffer;
    size_t result;
 
    pFile = fopen ( "input.txt" , "rb" );
    
    if (pFile==NULL)
    {
        fputs ("File error",stderr);
        exit (1);
    }
 
    // obtain file size:
    fseek (pFile , 0 , SEEK_END);
    lSize = ftell (pFile);
    rewind (pFile);
 
    // allocate memory to contain the whole file:
    buffer = (char*) malloc (sizeof(char)*lSize);
 
    if (buffer == NULL)
    {
        fputs ("Memory error",stderr);
        exit (2);
    }
 
    // copy the file into the buffer:
    result = fread (buffer,1,lSize,pFile);
 
    if (result != lSize)
    {
        fputs ("Reading error",stderr);
        exit (3);
    }
 
    /* the whole file is now loaded in the memory buffer. */
 
    // terminate
    fclose (pFile);
 
    for (int i=0; i<lSize; i++)
    {
        cout << i << "  " << buffer[i] << endl;
    }
 
    int SizeOfMatrix = 0, Counter = 0, k=1;
    while (buffer[Counter]>='0' && buffer[Counter]<='9')
    {
        Counter = Counter + 1;
        cout << "Counter=" << Counter << endl;
    }
    for (int i=Counter-1; i>=0; i--)
    {
        SizeOfMatrix = SizeOfMatrix + (buffer[i]-'0')*k;
        k=k*10;
    }
    cout << "SizeOfMatrix=" << SizeOfMatrix << endl;
 
    int **Matrix = new int * [SizeOfMatrix];
    for (int i=0; i<SizeOfMatrix; i++)
    {
        Matrix[i] = new int [SizeOfMatrix];
    }
    for (int i=0; i<SizeOfMatrix; i++)
    {
        for (int j=0; j<SizeOfMatrix; j++)
        {
            Matrix[i][j]=0;
        }
    }
 
    Counter=Counter+2;
    bool Flag = 0;
    int Signum;
    int CurrentNumber;
    int Row=0, Column=0;
    while (Counter<lSize)
    {
        Signum=1;
        Flag=0;
        if (buffer[Counter]='-')
        {
            Signum=-1;
            Counter=Counter+1;
        }
        CurrentNumber=0;
        while (buffer[Counter]>='0' && buffer[Counter]<='9')
        {
            CurrentNumber=CurrentNumber*10 + buffer[Counter]-'0';
            Counter=Counter+1;
            Flag=1;
        }
        if (Flag)
        {
            if (Column==SizeOfMatrix)
            {
                Row=Row+1;
                Column=0;
            }
            Matrix[Row][Column] = Signum*CurrentNumber;
            Column=Column+1;
        }
        Counter=Counter+1;
    }
 
    cout << endl;
    for (int i=0; i<SizeOfMatrix; i++)
    {
        for (int j=0; j<SizeOfMatrix; j++)
        {
            cout << Matrix[i][j] << "   ";
        }
        cout << endl;
    }
 
    free (buffer);
    for (int m=0; m<SizeOfMatrix; m++)
    {
        delete [] Matrix[m];
    }
    delete [] Matrix;
    system("pause");
    return 0;
}
что-то не получается из одномерного массива числа переписать в двумерный

Добавлено через 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
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
#include <stdio.h>
#include <stdlib.h>
#include "iostream"
using namespace std;
 
int main ()
{
    FILE * pFile;
    long lSize;
    char * buffer;
    size_t result;
 
    pFile = fopen ( "input.txt" , "rb" );
    
    if (pFile==NULL)
    {
        fputs ("File error",stderr);
        exit (1);
    }
 
    // obtain file size:
    fseek (pFile , 0 , SEEK_END);
    lSize = ftell (pFile);
    rewind (pFile);
 
    // allocate memory to contain the whole file:
    buffer = (char*) malloc (sizeof(char)*lSize);
 
    if (buffer == NULL)
    {
        fputs ("Memory error",stderr);
        exit (2);
    }
 
    // copy the file into the buffer:
    result = fread (buffer,1,lSize,pFile);
 
    if (result != lSize)
    {
        fputs ("Reading error",stderr);
        exit (3);
    }
 
    /* the whole file is now loaded in the memory buffer. */
 
    // terminate
    fclose (pFile);
 
    for (int i=0; i<lSize; i++)
    {
        cout << i << "  " << buffer[i] << endl;
    }
 
    int SizeOfMatrix = 0, Counter = 0, k=1;
    while (buffer[Counter]>='0' && buffer[Counter]<='9')
    {
        Counter = Counter + 1;
        cout << "Counter=" << Counter << endl;
    }
    for (int i=Counter-1; i>=0; i--)
    {
        SizeOfMatrix = SizeOfMatrix + (buffer[i]-'0')*k;
        k=k*10;
    }
    cout << "SizeOfMatrix=" << SizeOfMatrix << endl;
 
    int **Matrix = new int * [SizeOfMatrix];
    for (int i=0; i<SizeOfMatrix; i++)
    {
        Matrix[i] = new int [SizeOfMatrix];
    }
    for (int i=0; i<SizeOfMatrix; i++)
    {
        for (int j=0; j<SizeOfMatrix; j++)
        {
            Matrix[i][j]=0;
        }
    }
 
    Counter=Counter+2;
    bool Flag = 0;
    int Signum;
    int CurrentNumber;
    int Row=0, Column=0;
    while (Counter<lSize)
    {
        Signum=1;
        Flag=0;
        if (buffer[Counter]=='-')
        {
            Signum=-1;
            Counter=Counter+1;
        }
        CurrentNumber=0;
        while (buffer[Counter]>='0' && buffer[Counter]<='9')
        {
            CurrentNumber=CurrentNumber*10 + buffer[Counter]-'0';
            Counter=Counter+1;
            Flag=1;
        }
        if (Flag)
        {
            if (Column==SizeOfMatrix)
            {
                Row=Row+1;
                Column=0;
            }
            Matrix[Row][Column] = Signum*CurrentNumber;
            Column=Column+1;
        }
        Counter=Counter+1;
    }
 
    cout << endl;
    for (int i=0; i<SizeOfMatrix; i++)
    {
        for (int j=0; j<SizeOfMatrix; j++)
        {
            cout << Matrix[i][j] << "   ";
        }
        cout << endl;
    }
 
    free (buffer);
    for (int m=0; m<SizeOfMatrix; m++)
    {
        delete [] Matrix[m];
    }
    delete [] Matrix;
    system("pause");
    return 0;
}
Это самый быстрый вариант чтения файла или может быть еще быстрее?
 
Текущее время: 06:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru