Найти ошибку в готовом коде (действия со ступенчатым массивом) - C#
Формулировка задачи:
В директории проекта лежит файл
test3.txt
:2 4 6 8
9 10
12
3 3 1 5 0
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Array_Rang_2 { class Program { /*static int[] intArray = null; static int inputChoice = 0; static int inputChoiceLength = 0; static bool exit = true;*/ //int[] intArray = null; //int[,] arrMtrx = null; int[][] jaggedArr = null; //int[,] Sum = null, Dif = null, r2 = null; int m, n, inputChoiceLength; int dN; // для запоминания кол-ва подмассивов в jaggedArr int inputChoice = 0; bool exit = true; void inputJag() // Ввод ступенчатого { int i = 0, j=0; // индексы int d = 0; // номер очередного массива (строки) в массиве jaggedArr Console.WriteLine("Введите кол-во элементов ступенчатого массива: "); // кол-во массивов в массиве int q = Convert.ToInt32(Console.ReadLine()); // q - кол-во массивов в jaggedArr int[][] jaggedArr = new int[q][]; // объявление ступенчатого массива while (d < q) // заполнение подмассивов { i = 0; Console.WriteLine("Введите кол-во эл-тов в строке: "); //(в каждом новом массиве) int n = Convert.ToInt32(Console.ReadLine()); // измерение (кол-во эл-тов) очередного подмассива jaggedArr[d] = new int[n]; // объявление очередного подмассива while (i < n) // заполнение подмассива { Console.WriteLine("Введите эл-т строки: "); // эл-т нового подмассива (массива в jaggedArr) jaggedArr[d][i] = Convert.ToInt32(Console.ReadLine()); i++; } d++; } dN = d; // Вывод for (i = 0; i < d; i++) { Console.WriteLine(); for (j = 0; j < jaggedArr[i].Length; j++) { Console.Write(jaggedArr[i][j] + " "); } } Console.WriteLine(); } void readJag() // Заполнение из файла ступенчатого { Console.Write("Путь файла: "); string filePath = Console.ReadLine(); string[] rows = File.ReadAllLines(filePath); int[][] jaggedArr = new int[rows.Length][]; Console.WriteLine("Ступенчатый массив из файла: "); for (int i = 0; i < rows.Length; i++) { string[] numbers = rows[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); jaggedArr[i] = new int[numbers.Length]; for (int j = 0; j < numbers.Length; j++) { jaggedArr[i][j] = int.Parse(numbers[j]); Console.Write("{0} ", jaggedArr[i][j]); } Console.WriteLine(); } Console.Read(); } 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 changeJag() // Изменение эл-тов массива { int i, index2, j; Console.WriteLine("Параметры изменяемого элемента...\nНомер строки: "); int index = Convert.ToInt32(Console.ReadLine()); // строка, содерж нужный эл-т Console.WriteLine("\nНомер эл-та: "); index2 = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("\nВведите, на какой элемент вы хотите его изменить"); int next = Convert.ToInt32(Console.ReadLine()); jaggedArr[index - 1][index2 - 1] = next; for (i = 0; i < jaggedArr[i].Length; i++) { Console.WriteLine(); for (j = 0; j < jaggedArr[i].Length; j++) { Console.Write(jaggedArr[i][j] + " "); } } } void jagMaxMin() { int i, j, k; int jagMax = 0; int jagMin = 0; k = 0; int k3 = 0; for (i = 0; i < dN; i++) { for (j = 0; j < jaggedArr[i].Length; j++) { if (jaggedArr[i][j] > jagMax) { jagMax = jaggedArr[i][j]; k = i; k3 = j; } } } Console.WriteLine("Max: jaggedArr[{0},{1}]={2}", k + 1, k3 + 1, jagMax); for (i = 0; i < dN; i++) { for (j = 0; j < jaggedArr[i].Length; j++) { if (jaggedArr[i][j] < jagMin) { jagMin = jaggedArr[i][j]; k = i; k3 = j; } } } Console.WriteLine("Min: jaggedArr[{0},{1}]={2}", k+1, k3+1,jagMin); } //static void menu() // Меню void menu() { while (exit) { Console.SetCursorPosition(1, 1); Console.BackgroundColor = ConsoleColor.DarkMagenta; Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Выберите опцию: \n 0 - выход \n\n --СТУПЕНЧАТЫЕ МАССИВЫ--- \n 18 - ввод с клав-ы \n 19 - заполнение из файла \n 20 - вывод \n 21 – изменение эл-тов массива \n 22 – max, min\n"); Console.ResetColor(); Console.Write("Опция>> "); inputChoice = Convert.ToInt32(Console.ReadLine()); //Console.WriteLine("inputChoice = " + inputChoice); switch (inputChoice) { case 18: inputJag(); break; case 19: readJag(); break; case 20: outJag(); break; case 21: changeJag(); break; case 22: jagMaxMin(); break; case 0: exit = false; break; } if (exit == true) { Console.WriteLine("Нажмите любую клавишу для продолжения..."); Console.ReadKey(); } Console.Clear(); } } static void Main(string[] args) { int i = 1; i++; //menu(); Program p = new Program(); p.menu(); } } }
ОШИБКУ дает в опции 19
(скрин ниже): Ошибка в записи данных из файла в массив..... только где. Как ее исправить, чтобы работало и позволяло производить действия со ступенчатым массивом дальше?Решение задачи: «Найти ошибку в готовом коде (действия со ступенчатым массивом)»
textual
Листинг программы
int[] intArray = null; int[,] arrMtrx = null; int[][] jaggedArr = null; int[,] Sum = null, Dif = null, r2 = null; int m, n, inputChoiceLength; int dN, qN; // для запоминания кол-ва подмассивов в jaggedArr //public int q; //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 readJag() // Заполнение из файла ступенчатого { Console.Write("Путь файла: "); string filePath = Console.ReadLine(); string[] rows = File.ReadAllLines(filePath); int[][] jaggedArr = new int[rows.Length][]; Console.WriteLine("Ступенчатый массив из файла: "); for (int i = 0; i < rows.Length; i++) { string[] numbers = rows[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); jaggedArr[i] = new int[numbers.Length]; for (int j = 0; j < numbers.Length; j++) { jaggedArr[i][j] = int.Parse(numbers[j]); Console.Write("{0} ", jaggedArr[i][j]); } Console.WriteLine(); } Console.Read(); } 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 changeJag(int[][]jaggedArr) // Изменение эл-тов массива { int i, j; Console.Write("Параметры изменяемого элемента...\nНомер строки: "); int index = Convert.ToInt32(Console.ReadLine()); // строка, содерж нужный эл-т Console.Write("Номер эл-та: "); int index2 = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите замену: "); int next = Convert.ToInt32(Console.ReadLine()); jaggedArr[index - 1][index2 - 1] = next; // index-1 - для юзера Console.WriteLine("Измененный ступенчатый массив: "); for (i = 0; i < qN; i++) { Console.WriteLine(); for (j = 0; j < jaggedArr[i].Length; j++) { Console.Write(jaggedArr[i][j] + " "); } } Console.ReadLine(); } void jagMaxMin() // Max, Min ступенчатого { int i, j, k; int jagMax = 0; int jagMin = 0; k = 0; int k3 = 0; for (i = 0; i < dN; i++) { for (j = 0; j < jaggedArr[i].Length; j++) { if (jaggedArr[i][j] > jagMax) { jagMax = jaggedArr[i][j]; k = i; k3 = j; } } } Console.WriteLine("Max: jaggedArr[{0},{1}]={2}", k + 1, k3 + 1, jagMax); for (i = 0; i < dN; i++) { for (j = 0; j < jaggedArr[i].Length; j++) { if (jaggedArr[i][j] < jagMin) { jagMin = jaggedArr[i][j]; k = i; k3 = j; } } } Console.WriteLine("Min: jaggedArr[{0},{1}]={2}", k+1, k3+1,jagMin); } //static void menu() void menu() { while (exit) { Console.SetCursorPosition(1, 1); Console.BackgroundColor = ConsoleColor.DarkMagenta; Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Выберите опцию: \nn--СТУПЕНЧАТЫЕ МАССИВЫ--- \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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д