Заполнение двумерного массива, сумма строк и столбцов - C#

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

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

Здравствуйте, решаю всякое на сайтах по плюсам, вот тут додуматься не могу, как реализовать все это через классы, структурно то все получилось, но чую, что постоянно повторяющийся цикл for можно как то методом реализовать. Собственно задача:
Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения — показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
Мое решение:
using System;
 
class myMass
{
    static void Main()
    {
        int i = 0;
        int j = 0;
        int summa = 0;
        Console.Write("Введите количество строк в матрице: ");
        int stroki = int.Parse(Console.ReadLine());
        Console.Write("Введите количество столбцов в матрице: ");
        int stolbi = int.Parse(Console.ReadLine());
        int[,] myMassiv = new int[stroki, stolbi];
        //заполнение массива построчно
        
        for (i = 0; i < stroki; i++)
        {
            for ( j = 0; j < stolbi; j++)
            {
                Console.Write("Введите значение {0} строки {1} столбца: ", i + 1, j + 1);
                myMassiv[i, j] = int.Parse(Console.ReadLine());
            }
        }
 
        for (i = 0; i < stroki; i++)
        {
            for (j = 0; j < stolbi; j++)
            {
                Console.Write("{0}\t", myMassiv[i,j]);
            }
            Console.WriteLine("\n"); 
        }

        for (i = 0; i < stroki;i++)
        {
            for (j = 0; j < stolbi; j++) summa += myMassiv[i,j];
            Console.WriteLine("Сумма элементов в строке {0} равна {1}",i + 1, summa);
            summa = 0;
        }
        for (j = 0; j < stolbi; j++)
        {
            for (i = 0; i < stroki; i++) summa += myMassiv[i, j];
            Console.WriteLine("Сумма элементов в столбце {0} равна {1}", j + 1, summa);
            summa = 0;
        }
        Console.ReadKey();
    }
}
PS. Учусь по Шилдту, только прошел введение в классы. Критика приветствуется

Решение задачи: «Заполнение двумерного массива, сумма строк и столбцов»

textual
Листинг программы
using System;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using System.Text.RegularExpressions;
 
namespace csharp_cmd
{
    class Program
    {
        static void Print(int[] matrix)
        {
            for (int i = 0; i < matrix.GetLength(0); ++i)
            {
                Console.Write(matrix[i] + " ");
            }
            Console.WriteLine();
        }
        static void Print(int[,] matrix)
        {
            for (int i = 0; i < matrix.GetLength(0); ++i)
            {
                for (int j = 0; j < matrix.GetLength(1); ++j)
                    Console.Write(matrix[i, j] + " ");
                Console.WriteLine();
            }
            Console.WriteLine();
        }
        static void Fill(int[,] matrix)
        {
            for (int i = 0; i < matrix.GetLength(0); ++i)
            {
                for (int j = 0; j < matrix.GetLength(1); ++j)
                {
                    Console.Write("Value for matrix[{0}, {1}]: ", i, j);
                    matrix[i, j] = Convert.ToInt32(Console.ReadLine());
                }
                Console.WriteLine();
            }
        }
 
        enum SUM_FLAG { ROW, COL }
        static void Display(int[] matrix, SUM_FLAG flag)
        {
            for (int i = 0; i < matrix.GetLength(0); ++i)
            {
                Console.WriteLine("sum({0}[{1}]) = {2}", flag, i, matrix[i]);
            }
            Console.WriteLine();
        }
        static void Accumulate(int[,] matrix, int[] result, SUM_FLAG flag)
        {
            if (flag == SUM_FLAG.ROW)
            {
                for (int i = 0; i < matrix.GetLength(0); ++i)
                {
                    for (int j = 0; j < matrix.GetLength(1); ++j)
                    {
                        result[i] += matrix[i, j];
                    }
                }
            }
            else
            {
                for (int i = 0; i < matrix.GetLength(1); ++i)
                {
                    for (int j = 0; j < matrix.GetLength(0); ++j)
                    {
                        result[i] += matrix[j, i];
                    }
                }
            }
        }
 
        /*
         * Объявить двумерный массив
         * и заполнить его построчно с клавиатуры.
         * После заполнения — показать заполненную матрицу на экран
         * и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
         */
        public static void Main(string[] args)
        {
            int rows, cols;
 
            Console.Write("Rows count: ");
            int.TryParse(Console.ReadLine(), out rows);
 
            Console.Write("Columns count: ");
            int.TryParse(Console.ReadLine(), out cols);
 
            int[,] matrix = new int[rows, cols];
            Fill(matrix);
 
            Console.WriteLine("Your matrix: ");
            Print(matrix);
 
            int[] sum_rows = new int[matrix.GetLength(0)];
            int[] sum_cols = new int[matrix.GetLength(1)];
 
            Accumulate(matrix, sum_rows, SUM_FLAG.ROW);
            Display(sum_rows, SUM_FLAG.ROW);
 
            Accumulate(matrix, sum_cols, SUM_FLAG.COL);
            Display(sum_cols, SUM_FLAG.COL);
        }
    }
}

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


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

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

12   голосов , оценка 4.083 из 5
Похожие ответы