Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2016, 19:26   #1
stodeer
Пользователь
 
Аватар для stodeer
 
Регистрация: 23.10.2016
Сообщений: 20
Вопрос Заполнение 2d-массива из файла

Нужно написать метод заполнения двухмерного массива (матрицы) из файла,
при том, что неизвестно его кол-во строк/столбцов


Пож-та, поправьте меня или предложите, как лучше!

Код:
void readMtrx()
        {
            const int row=3, col=3; // НЕТ, нужно, чтобы заранее не была известна размерность
            string[] rX=null;
            string filePath;
            Console.Write("Путь файла: "); filePath = Console.ReadLine();
            rX=File.ReadAllLines(filePath);
            arrMtrx=new int[row,col];
            for (int i=0; i<row; i++)
            {
                string[] rX2=rX[i].Split(' ');
                for (int j=0; j<col;  j++)
                {
                    arrMtrx[i,j]=int.Parse(rX2[j]);
                }
            }
            Console.ReadLine();
        }
Матрица из теста:
1 0 2
3 6 12
4 8 9


Помимо ввода нужно будет совершать различные операции с матрицей, например:
Код:
//Ввод матрицы с клав-ы
        void inputMatrix(int[] args)
        {
            //Console.WriteLine("Введите размерность матрицы: ");
            Console.Write("Введите кол-во строк матрицы: ");
            m = Convert.ToInt32(Console.ReadLine()); //строки
            Console.Write("Введите кол-во столбцов матрицы: ");
            n = Convert.ToInt32(Console.ReadLine()); //столбцы
            Console.WriteLine(" З А П О Л Н Е Н И Е ");
            arrMtrx = new int[m, n];
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++)
                {
                    Console.Write("arrMtrx[" + i + "," + j + "] = ");
                    arrMtrx[i, j] = int.Parse(Console.ReadLine());
                }
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                    Console.Write("{0:d} ", arrMtrx[i, j]);
                Console.WriteLine();
            }
            Console.ReadLine();
        }

//Вывод матрицы
        void outMatrix(int[,] arrMtrx)
        {
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                    Console.Write("{0:d} ", arrMtrx[i, j]);
                Console.WriteLine();
            }
            Console.WriteLine();
        }

void dif() // Разность матриц
        {
            int dif = 0;
            Dif = new int[m, n];
            Console.WriteLine("Разность двух матриц:");
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Dif[i,j] = arrMtrx[i, j] - arrMtrx[i, j];
                    //Console.Write("{0} ", dif);
                }
            }
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                    Console.Write("{0:d} ", Dif[i, j]);
                Console.WriteLine();
            }
            Console.WriteLine();
        }


Как объявлены переменные в начале:
Код:
int[] intArray = null;
        int[,] arrMtrx = null;
        int[,] Sum = null, Dif = null;
        int[,] r2 = null;
        int m, n, inputChoiceLength;
        int inputChoice = 0;
        bool exit = true;
stodeer вне форума Ответить с цитированием
Старый 13.11.2016, 09:03   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Здесь можно использовать два варианта. Либо в файле первой строкой хранить размерность матрицы и отдельно её считывать, либо программно определять размер считанной из файла матрицы. Примерно так
Код:
rX=File.ReadAllLines(filePath);
row = rx.Length - 1;
col = rx[0].Trim().Split(' ').Length - 1;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение listbox значениями из массива. Заполнение массива. Gnaqeaz C# (си шарп) 9 23.10.2014 07:53
Заполнение двумерного массива из файла. KorPaEv Общие вопросы C/C++ 6 19.09.2011 17:46
Заполнение массива из файла на Си bagbier Помощь студентам 1 21.09.2010 14:09
Заполнение динамического массива данными из файла и последующий вывод на экран vitalyisaev2 Общие вопросы C/C++ 5 08.09.2010 12:51
Заполнение массива структур данными из файла Brutallus Общие вопросы C/C++ 0 26.11.2009 19:01