Найти ошибку в готовом коде (действия со ступенчатым массивом) - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д