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

Работа с файлами - C++

Восстановить пароль Регистрация
 
IMD
2 / 2 / 0
Регистрация: 17.06.2010
Сообщений: 38
17.06.2010, 11:29     Работа с файлами #1
Помогите пожалуйста решить задачку:
Дан двоичный файл, содержащий расположенные по строкам M двумерных
вещественных массивов, каждый размером L X K ( L строк, K строк ).
Каждый элемент массива помещен в отдельную запись.
Составить программу, формирующую этот файл (например, 3 массива
размером 2 на 3).
Составить программу, осуществляющую сохранение двумерных массивов с
указанным с клавиатуры интервалом номеров в литерных файлах, имена
которых по запросу программы вводятся с клавиатуры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2010, 11:29     Работа с файлами
Посмотрите здесь:

C++ РАБОТА С ФАЙЛАМИ
C++ Работа с файлами
C++ Работа с файлами!
Работа с файлами C++
работа с файлами C++
C++ [C++] Работа с файлами
C++ Работа с файлами
работа с файлами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cx5xclxxl9
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 23
29.05.2011, 00:52     Работа с файлами #2
Тоже имеется схожая задача, не могу решить.

Дан двоичный файл, содержащий расположенные по строкам M двумерных
вещественных массивов, каждый размером L X K ( L строк, K строк ).
Каждый элемент массива помещен в отдельную запись.
Составить программу, формирующую этот файл (например, 3 массива
размером 2 на 3).
Составить программу, осуществляющую замену в двоичном файле
двумерных массивов в указанном с клавиатуры интервале номеров на
двумерные массивы, содержащиеся в других, литерных файлах, имена
которых вводятся с клавиатуры по запросу программы.


Добавлено через 6 часов 21 минуту
Я не могу понять, массивы составлять рандомно или из каких-то конкретных элементов?

Добавлено через 1 час 13 минут
Вот вроде первую часть написал, но программа почему-то вылетает с ошибкой.



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
// laba3.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <conio.h>
#include <Windows.h>
#include <iostream>
using namespace std;
#define cyrOut(_string_) CharToOem(_string_,szStr);\
cout << szStr
char szStr[512];
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    FILE *fin, *fout;
    fin=fopen("test.bin","rb");
    
 
 
    cyrOut("Введите количество двумерных вещественных массивов: ");
    int m;
    cin>>m;
    cyrOut("Введите число строк в массивах: ");
    int l;
    cin>>l;
    cyrOut("Введите число столбцов в массивах: ");
    int k;
    cin>>k;
    char x[10][10][10];
    
 
 
    for(int i=0;i<m;i++)
    {    for(int a=0;a<l;a++)
       {
 
        cyrOut("Введите элементы "); cout<<a+1; cyrOut(" строки "); cout<<i+1; cyrOut(" массива: ");
    
        for(int b=0 ;b<=k-1;b++)
            cin >> x[i][a][b];
       }
    }
 
 
 
    for (int i=0;i<m;i++)
    {
        for (int o=0;o<l;o++)
        {
            for (int p=0;p<k;p++)
 
             fprintf(fin,"%f",x[i][o][p]);
        }
    }
 
 
    fclose(fin); 
 
 
 
 
    
 
 
    system("PAUSE");
    return 0;
}
Добавлено через 29 минут
Цитата Сообщение от cx5xclxxl9 Посмотреть сообщение
FILE *fin, *fout;
fin=fopen("test.bin","rb");
Всё, нашёл. Ошибка была здесь.
нужно было
C++
1
2
FILE *fin, *fout;
 fin=fopen("test.bin","wb");
Добавлено через 21 час 38 минут
бамп.

Добавлено через 7 часов 20 минут
Вот, попытался сделать вторую часть программы

Цитата Сообщение от cx5xclxxl9 Посмотреть сообщение
Составить программу, осуществляющую замену в двоичном файле
двумерных массивов в указанном с клавиатуры интервале номеров на
двумерные массивы, содержащиеся в других, литерных файлах, имена
которых вводятся с клавиатуры по запросу программы.
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
#include <fstream>
#include "stdafx.h"
#include <conio.h>
#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;
#define cyrOut(_string_) CharToOem(_string_,szStr);\
cout << szStr
char szStr[512];
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    char y[10][10][10];
    char t[10][10][10];
    ifstream is("text.dat", ios::binary);
        int b[1000];
        is.read(reinterpret_cast<char*>(y),sizeof(y));
        is.close();
 
    cyrOut("Введите количество двумерных вещественных массивов, которые вы хотите заменить: ");
    int m;
    int n;
    string file;
    cin>>m;
    
    
    for (int i=1;i<=m;i++)
    {   cyrOut("Введите номер двумерного вещественного массива, который вы хотите заменить: ");
        cin>>n;
    cyrOut("Введите имя файла из которого нужно взять массив для замены: ");
    cin>>file;
    ifstream is(file, ios::binary);
        is.read(reinterpret_cast<char*>(t),sizeof(t));
        is.close();
        strcpy(y[n],t[1]);
    }
 
 
 
    for(int a=1;a<10;a++){
        for(int b=1;b<10;b++){
            for(int c=1;c<10;c++)
                cout<<y[a][b][c];
        }
    }
 
    
 
 
 
 
 
system("PAUSE");
    return 0;
}
Компилятор ругается на вот эту строчку
C++
1
    strcpy(y[n],t[1]);
Не получается скопировать один массив в другой. Циклом тоже не выходит, может кто знает как ещё можно?

Добавлено через 30 минут
Сделал вот так, вроде работает

C++
1
memcpy(y,t,sizeof y);
Подскажите, как грамотно вывести массив, не зная количества элементов?
Yandex
Объявления
29.05.2011, 00:52     Работа с файлами
Ответ Создать тему
Опции темы

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