Найти ошибку в готовом коде (действия со ступенчатым массивом) - C#

Узнай цену своей работы

Формулировка задачи:

В директории проекта лежит файл

test3.txt

:
2 4 6 8 9 10 12 3 3 1 5 0
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. namespace Array_Rang_2
  7. {
  8. class Program
  9. {
  10. /*static int[] intArray = null;
  11. static int inputChoice = 0;
  12. static int inputChoiceLength = 0;
  13. static bool exit = true;*/
  14. //int[] intArray = null;
  15. //int[,] arrMtrx = null;
  16. int[][] jaggedArr = null;
  17. //int[,] Sum = null, Dif = null, r2 = null;
  18. int m, n, inputChoiceLength;
  19. int dN; // для запоминания кол-ва подмассивов в jaggedArr
  20. int inputChoice = 0;
  21. bool exit = true;
  22. void inputJag() // Ввод ступенчатого
  23. {
  24. int i = 0, j=0; // индексы
  25. int d = 0; // номер очередного массива (строки) в массиве jaggedArr
  26. Console.WriteLine("Введите кол-во элементов ступенчатого массива: "); // кол-во массивов в массиве
  27. int q = Convert.ToInt32(Console.ReadLine()); // q - кол-во массивов в jaggedArr
  28. int[][] jaggedArr = new int[q][]; // объявление ступенчатого массива
  29. while (d < q) // заполнение подмассивов
  30. {
  31. i = 0;
  32. Console.WriteLine("Введите кол-во эл-тов в строке: "); //(в каждом новом массиве)
  33. int n = Convert.ToInt32(Console.ReadLine()); // измерение (кол-во эл-тов) очередного подмассива
  34. jaggedArr[d] = new int[n]; // объявление очередного подмассива
  35. while (i < n) // заполнение подмассива
  36. {
  37. Console.WriteLine("Введите эл-т строки: "); // эл-т нового подмассива (массива в jaggedArr)
  38. jaggedArr[d][i] = Convert.ToInt32(Console.ReadLine());
  39. i++;
  40. }
  41. d++;
  42. }
  43. dN = d;
  44. // Вывод
  45. for (i = 0; i < d; i++)
  46. {
  47. Console.WriteLine();
  48. for (j = 0; j < jaggedArr[i].Length; j++)
  49. {
  50. Console.Write(jaggedArr[i][j] + " ");
  51. }
  52. }
  53. Console.WriteLine();
  54. }
  55. void readJag() // Заполнение из файла ступенчатого
  56. {
  57. Console.Write("Путь файла: "); string filePath = Console.ReadLine();
  58. string[] rows = File.ReadAllLines(filePath);
  59. int[][] jaggedArr = new int[rows.Length][];
  60. Console.WriteLine("Ступенчатый массив из файла: ");
  61. for (int i = 0; i < rows.Length; i++)
  62. {
  63. string[] numbers = rows[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  64. jaggedArr[i] = new int[numbers.Length];
  65. for (int j = 0; j < numbers.Length; j++)
  66. {
  67. jaggedArr[i][j] = int.Parse(numbers[j]);
  68. Console.Write("{0} ", jaggedArr[i][j]);
  69. }
  70. Console.WriteLine();
  71. }
  72. Console.Read();
  73. }
  74. void outJag() // Вывод ступенчатого массива
  75. {
  76. for (int i = 0; i < jaggedArr.Length; i++)
  77. {
  78. for (int j = 0; j < jaggedArr[i].GetLength(0); j++)
  79. {
  80. Console.Write(jaggedArr[i][j] + " ");
  81. }
  82. Console.Write('\n');
  83. }
  84. Console.ReadKey();
  85. }
  86. void changeJag() // Изменение эл-тов массива
  87. {
  88. int i, index2, j;
  89. Console.WriteLine("Параметры изменяемого элемента...\nНомер строки: ");
  90. int index = Convert.ToInt32(Console.ReadLine()); // строка, содерж нужный эл-т
  91. Console.WriteLine("\nНомер эл-та: "); index2 = Convert.ToInt32(Console.ReadLine());
  92. Console.WriteLine("\nВведите, на какой элемент вы хотите его изменить");
  93. int next = Convert.ToInt32(Console.ReadLine());
  94. jaggedArr[index - 1][index2 - 1] = next;
  95. for (i = 0; i < jaggedArr[i].Length; i++)
  96. {
  97. Console.WriteLine();
  98. for (j = 0; j < jaggedArr[i].Length; j++)
  99. {
  100. Console.Write(jaggedArr[i][j] + " ");
  101. }
  102. }
  103. }
  104. void jagMaxMin()
  105. {
  106. int i, j, k;
  107. int jagMax = 0;
  108. int jagMin = 0;
  109. k = 0;
  110. int k3 = 0;
  111. for (i = 0; i < dN; i++)
  112. {
  113. for (j = 0; j < jaggedArr[i].Length; j++)
  114. {
  115. if (jaggedArr[i][j] > jagMax)
  116. {
  117. jagMax = jaggedArr[i][j];
  118. k = i;
  119. k3 = j;
  120. }
  121. }
  122. }
  123. Console.WriteLine("Max: jaggedArr[{0},{1}]={2}", k + 1, k3 + 1, jagMax);
  124. for (i = 0; i < dN; i++)
  125. {
  126. for (j = 0; j < jaggedArr[i].Length; j++)
  127. {
  128. if (jaggedArr[i][j] < jagMin)
  129. {
  130. jagMin = jaggedArr[i][j];
  131. k = i;
  132. k3 = j;
  133. }
  134. }
  135. }
  136. Console.WriteLine("Min: jaggedArr[{0},{1}]={2}", k+1, k3+1,jagMin);
  137. }
  138. //static void menu() // Меню
  139. void menu()
  140. {
  141. while (exit)
  142. {
  143. Console.SetCursorPosition(1, 1);
  144. Console.BackgroundColor = ConsoleColor.DarkMagenta;
  145. Console.ForegroundColor = ConsoleColor.Yellow;
  146. Console.Write("Выберите опцию: \n 0 - выход \n\n --СТУПЕНЧАТЫЕ МАССИВЫ--- \n 18 - ввод с клав-ы \n 19 - заполнение из файла \n 20 - вывод \n 21 – изменение эл-тов массива \n 22 – max, min\n");
  147. Console.ResetColor();
  148. Console.Write("Опция>> ");
  149. inputChoice = Convert.ToInt32(Console.ReadLine());
  150. //Console.WriteLine("inputChoice = " + inputChoice);
  151. switch (inputChoice)
  152. {
  153. case 18: inputJag();
  154. break;
  155. case 19: readJag();
  156. break;
  157. case 20: outJag();
  158. break;
  159. case 21: changeJag();
  160. break;
  161. case 22: jagMaxMin();
  162. break;
  163. case 0: exit = false;
  164. break;
  165. }
  166. if (exit == true)
  167. {
  168. Console.WriteLine("Нажмите любую клавишу для продолжения...");
  169. Console.ReadKey();
  170. }
  171. Console.Clear();
  172. }
  173. }
  174. static void Main(string[] args)
  175. {
  176. int i = 1;
  177. i++;
  178. //menu();
  179. Program p = new Program();
  180. p.menu();
  181. }
  182. }
  183. }

ОШИБКУ дает в опции 19

(скрин ниже): Ошибка в записи данных из файла в массив..... только где. Как ее исправить, чтобы работало и позволяло производить действия со ступенчатым массивом дальше?

Решение задачи: «Найти ошибку в готовом коде (действия со ступенчатым массивом)»

textual
Листинг программы
  1. int[] intArray = null;
  2.         int[,] arrMtrx = null;
  3.         int[][] jaggedArr = null;
  4.         int[,] Sum = null, Dif = null, r2 = null;
  5.         int m, n, inputChoiceLength;
  6.         int dN, qN; // для запоминания кол-ва подмассивов в jaggedArr
  7.         //public int q;
  8.         //int inputChoice = 0;
  9.         bool exit = true;
  10.  
  11. void inputJag() // Ввод ступенчатого
  12.         {
  13.             Console.WriteLine("Введите кол-во элементов ступенчатого массива: "); // кол-во массивов в массиве
  14.             int q = Convert.ToInt32(Console.ReadLine()); // q - кол-во массивов в jaggedArr
  15.             jaggedArr = new int[q][]; // объявление ступенчатого массива
  16.             for (int i = 0; i<q; i++)
  17.             {
  18.                 Console.WriteLine("Введите кол-во эл-тов в строке: "); //(в каждом новом массиве)
  19.                 int n = Convert.ToInt32(Console.ReadLine()); // измерение (кол-во эл-тов) очередного подмассива
  20.                 int k=1;
  21.                 jaggedArr[i] = new int[n]; // объявление очередного подмассива
  22.                 for (int j=0; j<n; j++)
  23.                 {
  24.                     Console.WriteLine("Vvedite"+k+" element stroki");
  25.                     jaggedArr[i][j]=int.Parse(Console.ReadLine());
  26.                     k++;
  27.                 }
  28.                 qN = q;
  29.                 Console.WriteLine();
  30.             }
  31.             for (int i = 0; i < q; i++)
  32.             {
  33.                 Console.WriteLine();
  34.                 for (int j = 0; j < jaggedArr[i].Length; j++)
  35.                 {
  36.                     Console.Write(jaggedArr[i][j] + " ");
  37.                 }
  38.             }
  39.             Console.WriteLine();
  40.         }
  41.  
  42.  
  43.         void readJag() // Заполнение из файла ступенчатого
  44.         {
  45.             Console.Write("Путь файла: "); string filePath = Console.ReadLine();
  46.             string[] rows = File.ReadAllLines(filePath);
  47.             int[][] jaggedArr = new int[rows.Length][];
  48.             Console.WriteLine("Ступенчатый массив из файла: ");
  49.             for (int i = 0; i < rows.Length; i++)
  50.             {
  51.                 string[] numbers = rows[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  52.                 jaggedArr[i] = new int[numbers.Length];
  53.                 for (int j = 0; j < numbers.Length; j++)
  54.                 {
  55.                     jaggedArr[i][j] = int.Parse(numbers[j]);
  56.                     Console.Write("{0} ", jaggedArr[i][j]);
  57.                 }
  58.                 Console.WriteLine();
  59.             }
  60.             Console.Read();
  61.         }
  62.  
  63.         void outJag() // Вывод ступенчатого массива
  64.         {
  65.             for (int i = 0; i < jaggedArr.Length; i++)
  66.             {
  67.                 for (int j = 0; j < jaggedArr[i].GetLength(0); j++)
  68.                 {
  69.                     Console.Write(jaggedArr[i][j] + " ");
  70.                 }
  71.                 Console.Write('\n');
  72.             }
  73.             Console.ReadKey();
  74.         }
  75.  
  76.         void changeJag(int[][]jaggedArr) // Изменение эл-тов массива
  77.         {
  78.             int i, j;
  79.             Console.Write("Параметры изменяемого элемента...\nНомер строки: ");
  80.             int index = Convert.ToInt32(Console.ReadLine()); // строка, содерж нужный эл-т
  81.             Console.Write("Номер эл-та: "); int index2 = Convert.ToInt32(Console.ReadLine());
  82.             Console.Write("Введите замену: ");
  83.             int next = Convert.ToInt32(Console.ReadLine());
  84.             jaggedArr[index - 1][index2 - 1] = next; // index-1 - для юзера
  85.             Console.WriteLine("Измененный ступенчатый массив: ");
  86.             for (i = 0; i < qN; i++)
  87.             {
  88.                 Console.WriteLine();
  89.                 for (j = 0; j < jaggedArr[i].Length; j++)
  90.                 {
  91.                     Console.Write(jaggedArr[i][j] + " ");
  92.                 }
  93.             }
  94.             Console.ReadLine();
  95.         }
  96.  
  97.         void jagMaxMin() // Max, Min ступенчатого
  98.         {
  99.             int i, j, k;
  100.             int jagMax = 0;
  101.             int jagMin = 0;
  102.             k = 0;
  103.             int k3 = 0;
  104.             for (i = 0; i < dN; i++)
  105.             {
  106.                 for (j = 0; j < jaggedArr[i].Length; j++)
  107.                 {
  108.                     if (jaggedArr[i][j] > jagMax)
  109.                     {
  110.                         jagMax = jaggedArr[i][j];
  111.                         k = i;
  112.                         k3 = j;
  113.                     }
  114.                 }
  115.             }
  116.             Console.WriteLine("Max: jaggedArr[{0},{1}]={2}", k + 1, k3 + 1, jagMax);
  117.             for (i = 0; i < dN; i++)
  118.             {
  119.                 for (j = 0; j < jaggedArr[i].Length; j++)
  120.                 {
  121.                     if (jaggedArr[i][j] < jagMin)
  122.                     {
  123.                         jagMin = jaggedArr[i][j];
  124.                         k = i;
  125.                         k3 = j;
  126.                     }
  127.                 }
  128.             }
  129.             Console.WriteLine("Min: jaggedArr[{0},{1}]={2}", k+1, k3+1,jagMin);
  130.         }
  131.  
  132.         //static void menu()
  133.         void menu()
  134.         {
  135.             while (exit)
  136.             {
  137.                 Console.SetCursorPosition(1, 1);
  138.                 Console.BackgroundColor = ConsoleColor.DarkMagenta;
  139.                 Console.ForegroundColor = ConsoleColor.Yellow;
  140.                 Console.Write("Выберите опцию: \nn--СТУПЕНЧАТЫЕ МАССИВЫ--- \n    18 - ввод с клав-ы \n    19 - заполнение из файла \n    20 - вывод \n    21 – изменение эл-тов массива \n    22 – max, min\n");
  141.                 Console.ResetColor();
  142.                 Console.Write("Опция>> ");
  143.                 /*int inputChoice;
  144.                 int.TryParse(Console.ReadLine(), out inputChoice);*/ // было
  145.                 int inputChoice;
  146.                 int.TryParse(Console.ReadLine(), out inputChoice);
  147.                 //Console.WriteLine("inputChoice = " + inputChoice);
  148.                 switch (inputChoice)
  149.                 {
  150.                     case 18: inputJag();
  151.                         break;
  152.                     case 19: readJag();
  153.                         break;
  154.                     case 20: outJag();
  155.                         break;
  156.                     case 21: changeJag(jaggedArr);
  157.                         break;
  158.                     case 22: jagMaxMin();
  159.                         break;
  160.                     case 0: exit = false;
  161.                         break;
  162.                 }
  163.                 if (exit == true)
  164.                 {
  165.                     Console.WriteLine("Нажмите любую клавишу для продолжения...");
  166.                     Console.ReadKey();
  167.                 }
  168.                 Console.Clear();
  169.             }
  170.         }
  171.  
  172.         static void Main(string[] args)
  173.         {
  174.             //menu();
  175.             Program p = new Program();
  176.             p.menu();
  177.         }
  178.     }
  179. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут