Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.03.2024
Сообщений: 13

Дан файл, содержащий двумерный массив. Все нулевые элементы матрицы заменить суммой элементов этой матрицы. Результат вы

08.04.2024, 22:53. Показов 386. Ответов 2

Студворк — интернет-сервис помощи студентам
Вот файл.
3
4
матрица
5 6 -1 0
8 78 -1,5 4
9 0 15,6 8

Есть код, но он не работает. Выдаёт ошибку, "Входная строка имела неверный формат.", не могу понять что и как делать...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
string[] lines = File.ReadAllLines("C:\\Users\\Daiko\\source\\repos\\№1\\a_8.2.txt", Encoding.Default);
    int n, m;
    double k, q,summ = 0;
    n = lines.Length; // кол-во строк
    m = lines.Length; // кол-во столбцов
    k = lines.Length;
    q = lines[0].Split(' ').Length;
    Console.WriteLine(n);
    Console.WriteLine(m);
    double[,] matr = new double[n, m];
    for (int i = 0; i < k; i++)
    {
        string[] temp = lines[i].Split(' ');
        for (int j = 0; j < q; j++)
        {
            matr[i, j] = Convert.ToInt32(temp[j]);
        }
    }
    Console.WriteLine("Матрица");
    for (int i = 0; i < lines.GetLength(0); i++)
    {
        for (int j = 0; j < lines.GetLength(1); j++)
        {
            Console.WriteLine(matr[i, j] + " ");
            Console.WriteLine();
        }
    }
    for (int i = 0; i< lines.GetLength(0); i++)
    {
        for (int j = 0;j < lines.GetLength(1); j++)
        {
            summ += matr[i, j];
            if (matr[i, j] == 0)
            {
                matr[i, j] += summ;
            }
 
        }
    }
    for (int i = 0;i < lines.GetLength(0); i++)
    {
        for (int j = 0;j < lines.GetLength(1); j++)
        {
            Console.WriteLine($"{matr[i, j]} + \t");
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine((ex.Message));
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.04.2024, 22:53
Ответы с готовыми решениями:

Создать файл, содержащий все элементы матрицы (по строкам), когда дан файл содержащий не нулевую часть этой матрицы
помогите решить Дан файл вещественных чисел, содержащий ненулевую часть верхне- треугольной матрицы (по строкам). Создать новый файл,...

Все нулевые элементы матрицы X (n x n), заменить суммой элементов, лежащих на второстепенной диагонали
Для заданий № 1 и № 2 используется исходная матрица X (n x m) , 4 &lt;n&lt;10. 4&lt;m&lt;10. Для задания № 3 используется квадратная матрица X (n x n),...

Заменить нулевые элементы матрицы суммой элементов заданного столбца
В каждом столбце матрицы D(8,10) заменить нулевые элементы суммой элементов данного столбца. (задание) 1 вариант: program zadacha2;...

2
 Аватар для Doomov
1056 / 335 / 119
Регистрация: 28.11.2020
Сообщений: 1,066
09.04.2024, 01:45
Лучший ответ Сообщение было отмечено DaiKO как решение

Решение

Правильно не работает, там в начале полная "каша"... Поэтому сразу предложу свой вариант
Расширение...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
static class Extension
{
    /// <summary>
    /// Расширение. Преобразование входной строки в двумерный массив типа T[,].
    /// </summary>
    /// <typeparam name="T">Тип элементов массива.</typeparam>
    /// <param name="inputString">Входная строка для преобразования.</param>
    /// <param name="first">Разделитель для строк-рядов во входной строке.</param>
    /// <param name="second">Разделитель для элементов в каждой строке.</param>
    /// <returns>Двумерный массив типа T.</returns>
    public static T [,] ToArray2D<T> (this string inputString,
                                        string first, char second)
    {
        // Разделение входной строки на строки-ряды
        string[] rowStrings = inputString.Split (first);
        int rowCount = rowStrings.Length;
        int columnCount = rowStrings [0].Split (second).Length;
 
        // Преобразование строк в двумерный массив строк
        var arr = rowStrings.Select (s => s.Split (second).ToArray()).ToArray();
        string [,] stringArr = new string [rowCount, columnCount];
 
        // Копирование строк из массива arr в строковый двумерный массив stringArr
        for (int i = 0; i < rowCount; i++)
            for (int k = 0; k < columnCount; k++)
                stringArr [i, k] = arr [i] [k];
 
        // Создание нового двумерного массива типа T
        T [,] TArr = new T [stringArr.GetLength (0), stringArr.GetLength (1)];
 
        // Преобразование элементов из строкового массива stringArr в тип T 
        // и сохранение их в новом массиве TArr
        for (int i = 0; i < stringArr.GetLength (0); i++)
            for (int j = 0; j < stringArr.GetLength (1); j++)
                TArr [i, j] = (T)Convert.ChangeType (stringArr [i, j], typeof (T));
 
        return TArr;
    }
 
    /// <summary>Расширение. Вывод Array2D двумерного массива в консоль</summary>
    public static void PrintAr<T> (this T [,] arr)
    {
        for (int i = 0; i < arr.GetLength (0); i++)
        {
            for (int t = 0; t < arr.GetLength (1); t++)
                Console.Write (arr [i, t] + "\t");
            Console.WriteLine();
        }
        Console.WriteLine();
    }
}
Далее в проге...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    string str = """
    5 6 -1 0
    8 78 -1,5 4
    9 0 15,6 8
    """;
    // или вариант строки из файла
    //string str = File.ReadAllText(@"C:\Work\Загрузки\a_8.2.txt");
    int n, m;
    double summ = 0;
    double[,] matr = str.ToArray2D<double>(Environment.NewLine, ' ');
    n = matr.GetLength(0); // кол-во строк
    m = matr.GetLength(1); // кол-во столбцов
    
    Console.WriteLine ("Матрица");
    matr.PrintAr();
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            summ += matr [i, j];
 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            if (matr [i, j] == 0)
                matr [i, j] = summ;
    matr.PrintAr();
2
0 / 0 / 0
Регистрация: 14.03.2024
Сообщений: 13
09.04.2024, 07:38  [ТС]
Doomov, спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2024, 07:38
Помогаю со студенческими работами здесь

В каждом столбце матрицы D(8,10) заменить нулевые элементы суммой элементов данного столбца
Привет, столкнулся с такой проблемой: &quot;В каждом столбце матрицы D(8,10) заменить нулевые элементы суммой элементов данного...

Найти сумму всех элементов матрицы и заменить ею все диагональные элементы этой матрицы
Найти сумму всех ее элементов и заменить ею все диагональные элементы этой матрицы.

Дан двумерный массив, вычислить произведение отрицательных элементов, заменить этим числом элементы второй строки матрицы
написала программу, считает только произведение, надо оформить в виде функции

Массив: Найти сумму всех ее отрицательных элементов и заменить ею все диагональные элементы этой матрицы.
Найти сумму всех ее отрицательных элементов и заменить ею все диагональные элементы этой матрицы.

Массив: Найти произведение всех её негативных элементов и заменить им все диагональные элементы этой матрицы.
Как сделать эту программу?Найти произведение всех её негативных элементов и заменить им все диагональные элементы этой матрицы.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru