Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
usernet112
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 9
1

Запись и чтение двумерного массива в бинарный файл

15.12.2017, 17:34. Просмотров 239. Ответов 0
Метки нет (Все метки)

Поломал голову несколько дней. Не могу додуматься, как организовать запись и чтение двумерного массива в бинарный файл. Ранее работал только с одномерными массивами. Использовать только стандартные библиотеки System. Помогите, пожалуйста.
Save_B - кнопка записи в бинарный файл
Load_B - кнопка чтения из файла и расчёта результата
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace _1._3_1._2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.ColumnCount = Convert.ToInt32(numericUpDown1.Value);
            dataGridView1.RowCount = Convert.ToInt32(numericUpDown1.Value);
            dataGridView2.RowCount = 3;
            dataGridView2.ColumnCount = 1;   
        }
 
        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            dataGridView1.ColumnCount = Convert.ToInt32(numericUpDown1.Value);
            dataGridView1.RowCount = Convert.ToInt32(numericUpDown1.Value);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView2[0, 0].Value = "";
            dataGridView2[0, 1].Value = "";
            dataGridView2[0, 2].Value = "";
             int n = Convert.ToInt32(numericUpDown1.Value);
            double[,] mas = new double[n, n];
            using (BinaryReader br = new BinaryReader(
                File.Open("source.dat", FileMode.Open)))
            {       
                byte[] b = new byte[sizeof(double)];
                while (br.Read(b,0,b.Length) > 0)
                {
                    for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    mas[i,j]= BitConverter.ToDouble(b,0);
                }
            }
            double Max = mas[0, 1];
            for (int i = 0; i < n - 1; i++)
                for (int j = i + 1; j < n; j++)
                    if (mas[i, j] > Max)
                        Max = mas[i, j];
            int count = 0;
            for (int j = 0; j < n - 1; j++)
                for (int i = j + 1; i < n; i++)
                    if (mas[i, j] > Max)
                        count++;
            if (count == 0)
            {
                dataGridView2[0, 0].Value = ("Искомых элементов нет");
                dataGridView2[0, 1].Value = ("");
                dataGridView2[0, 2].Value = ("");
            }
            else
            {
                double[] finalmas = new double[count];
                int index = 0;
                for (int j = 0; j < n - 1; j++)
                    for (int i = j + 1; i < n; i++)
                        if (mas[i, j] > Max)
                        {
                            finalmas[index] = mas[i, j];
                            index++;
                        }
                for (int i = 0; i < count; i++)
                {
                    dataGridView2[0,i].Value = finalmas[i];
                }
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Random rnd = new Random();
            numericUpDown1.Value = rnd.Next(4) + 3;
            for (int i = 0; i < numericUpDown1.Value; i++)
                for (int j = 0; j < numericUpDown1.Value; j++)
                    dataGridView1[i, j].Value = rnd.Next(46) - 10;
        }
 
        private void Save_B_Click(object sender, EventArgs e)
        {
            int n = Convert.ToInt32(numericUpDown1.Value);
            using (BinaryWriter bw = new BinaryWriter
               (File.Open("source.dat", FileMode.Create)))
            {
                for (int i = 0; i < numericUpDown1.Value; i++)
                    for (int j = 0; j < numericUpDown1.Value; j++)
                    {
                        double k = Convert.ToDouble(dataGridView1[j, i].Value);
                        byte[] K = BitConverter.GetBytes(k);
                        bw.Write(K, 0, K.Length);
                    }
                }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2017, 17:34
Ответы с готовыми решениями:

Запись в бинарный файл, его чтение и редактирование
Здравствуйте, возникла проблема с записью данных в бинарный файл. Есть некая...

Чтение/запись дерева в текстовый и бинарный файл
Есть базовый класс и 2 наследника.Реализовано дерево указателей на базовый...

Чтение и запись (сохранение) двумерного массива
Имеется двумерный массив, нужно, чтобы пользователь мог его сохранить, а потом...

Запись массива структур в бинарный файл и считывание его
Есть такая структура: struct table { public string name; ...

Запись массива в файл и чтение
нужно записать массив чисел(смешаных) в файл и считать его оттуда. 0, 0.56,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2017, 17:34

Чтение/запись массива объектов в файл
Сделал процедуру, а она выдает ошибку при вызове &quot;В экземпляре объекта не...

Запись массива в файл и чтение из файла
Есть массив m, в котором 6 строк и j столбцов. 1) Как записать его в...

Чтение и запись массива double в файл с FileStream
Мне нужно записать в файл массив double, затем считать его из файла с помощью...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru