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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с массивами и матрицами http://www.cyberforum.ru/cpp-beginners/thread146608.html
1.Задача 12. Заданы массивы A(5), B(6) и C(7). Найти минимальное из трех чисел a,b,c, где a – среднее значение массива A; b – среднее значение массива B; c – среднее значение массива С. Ввод элементов массива и вычисление среднего значения массива оформить в виде подпрограммы. Образец к первой задачи . Заданы три массива Х(4), Y(3) и Z(5). Требуется, упорядочить по возрастанию числа а,b,с,...
C++ Перевести с Delphi на C/C++. program zadacha5; {$APPTYPE CONSOLE} uses SysUtils; var a,b,s,k,v :real ; begin http://www.cyberforum.ru/cpp-beginners/thread146593.html
Вычислить сумму ряда C++
вычислить
Заполнение случайными числами C++
у меня вот какая проблема...вот часть программы заполнения массива случайными числами....но каждый разпри выполнении программы у меня выдает один и тот же массив...ну то есть если в паскале при каждом запуске массивы всегда разные то тут один и тот же.....как сделать чтобы всегда разный был?... for(i=0;i<N;i++) a=rand()%100-10; for(i=0;i<N;i++) printf("%5d",a); ...
C++ Связный список и вставка элемента http://www.cyberforum.ru/cpp-beginners/thread146553.html
Мне надо написать прогу, которая создает связный список (линейный), вставляет в любом месте элемент. Написала создание связного списка, написала вставку. При запуске компилятор ошибку не выдает, но при выполнении кода, который делает вставку, программа выводит ошибку. Скажите, что у меня не так в коде с этой вставкой?! #include "stdafx.h" #include <iostream> using namespace std; #include...
C++ Дано натуральное число n (n>99). Определить число сотен внем Дано натуральное число n (n>99). Определить число сотен внем. на паскале это выглядит такprogram z64; {$APPTYPE CONSOLE} uses SysUtils; var a,b : integer ; подробнее

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

Дан двоичный файл, содержащий расположенные по строкам 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);
Подскажите, как грамотно вывести массив, не зная количества элементов?
 
Текущее время: 21:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru