Найти ошибку в готовом коде (действия со ступенчатым массивом) - 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();
        }
    }
}

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


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

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

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