Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 9

Чтение матрицы и запись ее в двумерный массив

01.10.2018, 20:55. Показов 4627. Ответов 16

Студворк — интернет-сервис помощи студентам
нужно считать матрицу из файла.txt и записать ее в двумерный массив, ее размер заранее не известен значения матрицы пишутся через пробел, каждая строка в итоге кончается пробелом
пример матрицы:

32 35 15
4 5 23
23 2 15
56 0 135
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2018, 20:55
Ответы с готовыми решениями:

Чтение матрицы из файла и запись её в массив
Всем доброго времени суток, имеется файл 00011122331100 00000000000000 00012000000000 00003040010000 00200000020000 Величина...

Чтение матрицы и запись в файл
Считать матрицу из файла, найти минимальный элемент каждого столбца и записать результат в выходной файл

Чтение значений типа int из файла в двумерный массив
Я написал вот такой код: public void OpenArray() // Чтение файла { int arrayInt; arrayInt =...

16
 Аватар для willow300
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
01.10.2018, 22:29
Лучший ответ Сообщение было отмечено Xome4ok как решение

Решение

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
using System;
using System.IO;
using System.Linq;
 
namespace MatrixFromTXT
{
    internal class Program
    {
        private static void Main()
        {
            string matrixString;
 
            using (StreamReader streamReader = new StreamReader(@"d:\matrix.txt"))
            {
                matrixString = streamReader.ReadToEnd();
            }
 
            try
            {
                int[,] matrix = GetMatrixFromString(matrixString);
                PrintMatrix(matrix);
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine(ex);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
 
 
            Console.ReadLine();
        }
 
        private static int[,] GetMatrixFromString(string matrixString)
        {
            if (string.IsNullOrWhiteSpace(matrixString))
            {
                throw new ArgumentException("message", nameof(matrixString));
            }
 
            string[] lines = matrixString.Split('\n');
 
            int rowNumber = lines.Length;
            int columnNumber = lines.First().Split(' ').Length;
 
            int[,] matrix = new int[rowNumber, columnNumber];
 
            for (int i = 0; i < matrix.GetLength(0); i++)
            {
                string[] columns = lines[i].Split(' ');
 
                for (int j = 0; j < matrix.GetLength(1); j++)
                {
                    matrix[i, j] = int.Parse(columns[j]);
                }
            }
 
            return matrix;
        }
 
        private static void PrintMatrix(int[,] someMatrix)
        {
            for (int i = 0; i < someMatrix.GetLength(0); i++)
            {
                for (int j = 0; j < someMatrix.GetLength(1); j++)
                {
                    Console.Write("{0,3} ", someMatrix[i, j]);
                }
 
                Console.WriteLine();
            }
        }
    }
}
1
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 9
01.10.2018, 22:43  [ТС]
все бы ничего, но не работает
Миниатюры
Чтение матрицы и запись ее в двумерный массив  
0
 Аватар для willow300
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
01.10.2018, 22:49
Xome4ok, работает, если в файле верно записан массив. Для проверки вставьте массив из вашего условия.
И покажите, что там сейчас, я проверю.
0
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 9
01.10.2018, 22:52  [ТС]
вот, массив записан с пробелами на конце каждой строки, как уточнялось ранее
Миниатюры
Чтение матрицы и запись ее в двумерный массив  
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
01.10.2018, 23:04
Xome4ok,
C#
1
2
3
4
5
6
      var allLines = File.ReadAllLines("file.txt");
      var matrix = new int[allLines.Length][];
 
      for (int i = 0; i < allLines.Length; i++)
        matrix[i] = allLines[i].Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
          .Select(x => int.Parse(x)).ToArray();
0
 Аватар для willow300
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
01.10.2018, 23:06
Лучший ответ Сообщение было отмечено Xome4ok как решение

Решение

Xome4ok, да, подвели пробелы в конце каждой строки. Попробуйте заменить 46 строку на
C#
1
int columnNumber = lines.First().Split(' ').Length - 1;
1
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 9
01.10.2018, 23:08  [ТС]
Nemovok , это вроде как одномерный массив, не?
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
01.10.2018, 23:10
Xome4ok, не
0
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 9
01.10.2018, 23:13  [ТС]
willow300, результат похожий.
Миниатюры
Чтение матрицы и запись ее в двумерный массив  
0
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 9
01.10.2018, 23:16  [ТС]
Nemovok, ваш код выводит в консоль, точнее пытается выводить первые 3 значения (то есть значения первой строки, а остальные нет)
0
 Аватар для willow300
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
01.10.2018, 23:16
Xome4ok, проверьте, что у вас в конце каждой строки только один пробел и под массивом нет пустой строки.
Миниатюры
Чтение матрицы и запись ее в двумерный массив  
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
01.10.2018, 23:18
Цитата Сообщение от Xome4ok Посмотреть сообщение
ваш код выводит в консоль
мой код ничего не выводит.

Добавлено через 1 минуту
Ведь для этого нужен такой метод:
C#
1
2
3
4
5
6
7
8
9
10
11
    static void ShowMatrix(int[][] matrix)
    {
      foreach (var line in matrix)
      {
        foreach (var element in line)
        {
          Console.Write(element + " ");
        }
        Console.WriteLine();
      }
    }
0
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 9
01.10.2018, 23:20  [ТС]
willow300, прошу прощения, я не узрел пустую строку под массивом, спасибо Вам за помощь
Миниатюры
Чтение матрицы и запись ее в двумерный массив  
0
 Аватар для willow300
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
01.10.2018, 23:21
Xome4ok, пожалуйста)
0
0 / 0 / 0
Регистрация: 01.10.2018
Сообщений: 9
01.10.2018, 23:36  [ТС]
willow300, Меня кстати тоже Максим зовут)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16142 / 11265 / 2888
Регистрация: 21.04.2018
Сообщений: 33,127
Записей в блоге: 2
01.10.2018, 23:55
Вот метод чтения из файла. Большая часть различные проверки.
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
        #region Чтение матрицы и запись ее в двумерный массив
        static int[,] ReadMatrix(string file, char[] separators = null)
        {
            // Получение списка строк
            IEnumerable<string> Rows = File.ReadLines(file);
 
            // Преобразование строк в список подстрок
            if (separators == null) // Если не передавался список сепараторов, то он создаётся.
                separators = new char[] { ' ', '\t', '\\','/',':' };
            IEnumerable<List<string>> RowsSub
                        = Rows
                        .Select(row => new List<string> ( row.Split(separators, StringSplitOptions.RemoveEmptyEntries)));
            // Удаление пустых строк и подстрок, которые не преобразуются в целые числа
            // Преобразование в целые числа
            IEnumerable<List<int>> RowsListInt
                = RowsSub
                .Where(row => row.Count > 0)
                .Select(row => row
                                .Where(sub => int.TryParse(sub, out int a))
                                .Select(sub => int.Parse(sub))
                                .ToList()
                                );
 
            // Поверка количества элементов в строках, если не совпадает, то выход
            if (RowsListInt.Select(row => row.Count).Max() != RowsListInt.Select(row => row.Count).Min())
                return null;
 
            // Создание выходной матрицы 
            int[,] ret = new int[RowsListInt.Count(), RowsListInt.ElementAt(0).Count];
 
            // Запись значений в матрицу
            int Irow = 0;
            foreach (List<int> row in RowsListInt)
            {
                int Icol = 0;
                foreach(int cell in row)
                {
                    ret[Irow, Icol] = cell;
                    Icol++;
                }
                Irow++;
            }
            return ret;
        }
        #endregion
И пример как им пользоваться
C#
1
            int[,] МояМатрица = ReadMatrix("..\\..\\Матрица.scv");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2018, 23:55
Помогаю со студенческими работами здесь

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

Запись в двумерный массив из Split
Все эти строки приходят через post запрос 1'ой срокой! Их разделяет &quot;:&quot;. 0'вой элемент приходит пустым по этому я начинаю работать с 1...

Запись строки в двумерный массив
производится чтение файла типа: 6 2 012123101212210321123012212101321210 010100100500000061150013006101001310 string line =...

Чтение из файла и запись в массив
Добрый день. Я застрял на приведении типов при чтении строки из файла и попытке записи ее элементов в List teacher. Вот так у меня...

Чтение из файла и запись в массив
Доброго времени суток. Не получается записать содержимое файла в массив для поиска максимального значения Содержимое файла: 1 2 3 4 5 6...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru