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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2016, 21:29   #1
stodeer
Пользователь
 
Аватар для stodeer
 
Регистрация: 23.10.2016
Сообщений: 20
Восклицание Заполнение jagged (ступенчатого) массива из файла? С#

Консоль. Нужно написать заполнение ступенчатого массива из файла (т.е. прочитать и записать в ступенчатый) HELP

Файл в директории - test3.txt:
2 4 6 8
9 10
12
3 3 1 5 0


Кусок программы с переменными и нек-рыми др. действиями со ступенчатым, к-рые работают:
Код:
int[][] jaggedArr = null;
        int m, n, inputChoiceLength;
        int dN, qN; // для запоминания кол-ва подмассивов в jaggedArr
        //public int q;
        public int m2;
        //int inputChoice = 0;
        bool exit = true;
 
void inputJag() // Ввод ступенчатого
        {
            Console.WriteLine("Введите кол-во элементов ступенчатого массива: "); // кол-во массивов в массиве
            int q = Convert.ToInt32(Console.ReadLine()); // q - кол-во массивов в jaggedArr
            jaggedArr = new int[q][]; // объявление ступенчатого массива
            for (int i = 0; i<q; i++)
            {
                Console.WriteLine("Введите кол-во эл-тов в строке: "); //(в каждом новом массиве)
                int n = Convert.ToInt32(Console.ReadLine()); // измерение (кол-во эл-тов) очередного подмассива
                int k=1;
                jaggedArr[i] = new int[n]; // объявление очередного подмассива
                for (int j=0; j<n; j++)
                {
                    Console.WriteLine("Vvedite"+k+" element stroki");
                    jaggedArr[i][j]=int.Parse(Console.ReadLine());
                    k++;
                }
                qN = q;
                Console.WriteLine();
            }
            for (int i = 0; i < q; i++)
            {
                Console.WriteLine();
                for (int j = 0; j < jaggedArr[i].Length; j++)
                {
                    Console.Write(jaggedArr[i][j] + " ");
                }
            }
            Console.WriteLine();
        }
 
void outJag() // Вывод ступенчатого массива
        {
            for (int i = 0; i < jaggedArr.Length; i++)
            {
                for (int j = 0; j < jaggedArr[i].GetLength(0); j++)
                {
                    Console.Write(jaggedArr[i][j] + " ");
                }
                Console.Write('\n');
            }
            Console.ReadKey();
        }
 
void jagMaxMin() // Max, Min ступенчатого
        {
            int i, j, k;
            int jagMax = jaggedArr[0][0];
            int jagMin = jaggedArr[0][0]; 
            k = 0; 
            int jj = 0; 
            for (i = 0; i < qN; i++) 
            {
                for (j = 0; j < jaggedArr[i].Length; j++) 
                {
                    if (jaggedArr[i][j] > jagMax) 
                    {
                        jagMax = jaggedArr[i][j]; 
                        k = i; 
                        jj = j; 
                    } 
                }
            }
            Console.WriteLine("Max: jaggedArr[{0},{1}]={2}", k + 1, jj + 1, jagMax);
            for (i = 0; i < qN; i++) 
            {
                for (j = 0; j < jaggedArr[i].Length; j++) 
                {
                    if (jaggedArr[i][j] < jagMin) 
                    {
                        jagMin = jaggedArr[i][j]; 
                        k = i; 
                        jj = j; 
                    } 
                } 
            }
            Console.WriteLine("Min: jaggedArr[{0},{1}]={2}", k+1, jj+1,jagMin);
        }
void menu()
        {
            while (exit)
            {
                Console.SetCursorPosition(1, 1);
                Console.BackgroundColor = ConsoleColor.DarkMagenta;
                Console.ForegroundColor = ConsoleColor.Green;
                Console.Write("Выберите опцию: \n --СТУПЕНЧАТЫЕ МАССИВЫ--- \n    18 - ввод с клав-ы \n    19 - заполнение из файла НЕТ?? \n    20 - вывод \n    21 – изменение эл-тов массива НЕТ?? \n    22 – max, min НЕТ??\n");
                Console.ResetColor();
                Console.Write("Опция>> ");
                /*int inputChoice;
                int.TryParse(Console.ReadLine(), out inputChoice);*/ // было 
                int inputChoice;
                int.TryParse(Console.ReadLine(), out inputChoice);
                //Console.WriteLine("inputChoice = " + inputChoice);
                switch (inputChoice)
                { 
                    case 18: inputJag();
                        break;
                    case 19: readJag();
                        break;
                    case 20: outJag();
                        break;
                    case 21: changeJag(jaggedArr);
                        break;
                    case 22: jagMaxMin();
                        break;
                    case 0: exit = false;
                        break;
                }
                if (exit == true)
                {
                    Console.WriteLine("Нажмите любую клавишу для продолжения...");
                    Console.ReadKey();
                }
                Console.Clear();
            }
        }
 
        static void Main(string[] args)
        {
            //menu();
            Program p = new Program();
            p.menu();
        }
stodeer вне форума Ответить с цитированием
Старый 18.11.2016, 21:43   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Вариант
прочитал строку из файла
с помощью Split разбил строку на елементы
создал "ступеньку" размером на основании п.2
в цикле внес данные с п.2 в п.3
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 18.11.2016, 22:03   #3
stodeer
Пользователь
 
Аватар для stodeer
 
Регистрация: 23.10.2016
Сообщений: 20
По умолчанию

Alexandr H., так ? :
Код:
void readMtrx()
        {
            Console.Write("Путь файла: "); string filePath = Console.ReadLine();
            string[] fileLines =null;
            fileLines = File.ReadAllLines(filePath);
            int[,] map = new int[fileLines.Length,fileLines[0].Split(',').Length];
            for (int i = 0; i < fileLines.Length; i++)
            {
                string line = fileLines[i];
                for (int j = 0; j < map.GetLength(1); j++)
                {
                    string[] split = line.Split(',');
                    map[i, j] = Convert.ToInt32(split[j]);
                }
            }
            //Вывод
            for (int i = 0; i < fileLines.GetLength(0); i++)
            {
                for (int j = 0; j < fileLines.GetLength(1); j++)
                    Console.Write("{0:d} ", fileLines);
                Console.WriteLine();
            }
            Console.WriteLine();
        }

Последний раз редактировалось stodeer; 18.11.2016 в 22:14.
stodeer вне форума Ответить с цитированием
Старый 18.11.2016, 23:20   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Надо ж jagged [][] читать а у тебе обычные квадратные матрицы [,]

почему не пользовался готовым кодом?
http://stackoverflow.com/questions/2...r-jagged-array
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение 2d-массива из файла stodeer Помощь студентам 1 13.11.2016 09:03
Заполнение двумерного массива из файла. 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