Переделать программный код, добавив использование методов - C#

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

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication46
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, j, imax = 0, k,l=0; double max, p=0,n=0;
            double[,] a = new double[7, 5];
            double[] b = new double[8];
            Console.WriteLine("Введите элементы массива: ");
            for (i = 0; i < 7; i++)
                for (j = 0; j < 5; j++)
                    a[i, j] = double.Parse(Console.ReadLine());
            Console.WriteLine("Исходная матрица: ");
            for (i = 0; i < 7; i++)
            {
                for (j = 0; j < 5; j++)
                    Console.Write("{0:f2} ", a[i, j]);
                Console.WriteLine();
            }
 
            for (i = 0; i < 7; i++)
            {
                k = 0;
                for (j = 0; j < 5; j++)
                   if (a[i, j] > 0)
                        k++;
                b[i] = k;
            }
 
            for (i = 0; i < 7; i++)
            {
                max = b[i]; imax = i;
                for (j = i + 1; j < 7; j++)
                {
                    if (b[j] > max)
                    {
                        max = b[j];
                        imax = j;
                    }
                }
                n = b[i];
                b[i] = b[imax];
                b[imax] = n;
                for (l = 0; l < 5; l++)
                {
                    p = a[i, l];
                    a[i, l] = a[imax, l];
                    a[imax, l] = p;
                }
              
            }
            Console.WriteLine("Массив, в котором строки поменяли местами так, что кол-ва элементов > 0 в строках следовали в порядке убывания:");
            for (i = 0; i < 7; i++)
            {
                for (j = 0; j < 5; j++)
                    Console.Write("{0:f2} ", a[i, j]);
                Console.WriteLine();
            }
            Console.ReadKey(); 

        }
    }
}

Решение задачи: «Переделать программный код, добавив использование методов»

textual
Листинг программы
using System;
using System.Text;
 
namespace ConsoleApplication3
{
    static class Extentions
    {
        public static void PrintArray<T>(this T[,] arr, String tag)
        {
            var s = new StringBuilder(tag).AppendLine();
            for (var i = 0; i < arr.GetLength(0); i++)
            {
                for (var j = 0; j < arr.GetLength(1); j++)
                    s.AppendFormat(" {0:F2}", arr[i, j]);
                s.AppendLine();
            }
            Console.WriteLine(s.ToString());
        }
 
        public static Double[,] InputArray(this Double[,] arr)
        {
            Console.WriteLine("Введите элементы массива: ");
            for (var i = 0; i < arr.GetLength(0); i++)
                for (var j = 0; j < arr.GetLength(1); j++)
                {
                    Console.Write("a[" + (i+1) + "][" + (j+1) + "]=");
                    arr[i, j] = Double.Parse(Console.ReadLine());
                }
            return arr;
        }
 
        private static void SwapElems<T>(ref T x, ref T y)
        {
            var temp = x;
            x = y;
            y = temp;
        }
 
        private static void SwapLines(this Double[,] arr, Int32 x, Int32 y)
        {
            for (var j = 0; j < arr.GetLength(1); j++)
                SwapElems(ref arr[x, j], ref arr[y, j]);
        }
 
        private static Int32[] GetPosCounts(this Int32[] y, Double[,] x)
        {
            for (var i = 0; i < x.GetLength(0); i++)
            {
                y[i] = 0;
                for (var j = 0; j < x.GetLength(1); j++)
                    if (x[i, j] > 0)
                        y[i]++;
            }
            return y;
        }
 
        public static Double[,] SortByPosCount(this Double[,] arr)
        {
            var b = new Int32[arr.GetLength(0)].GetPosCounts(arr);
            for (var i = 0; i < arr.GetLength(0); i++)
                for (var j = i + 1; j < arr.GetLength(0); j++)
                    if (b[j] > b[i])
                    {
                        arr.SwapLines(i, j);
                        SwapElems(ref b[i], ref b[j]);
                    }
            return arr;
        }
    }
 
    class Program
    {
        private static Int32 InputSize(Char c)
        {
            Console.Write(c + ": ");
            return Int32.Parse(Console.ReadLine());
        }
 
        static void Main(String[] args)
        {
            var a = new Double[InputSize('n'), InputSize('m')].InputArray();
            a.PrintArray("Исходная матрица:");
            a.SortByPosCount().PrintArray("Массив, в котором строки поменяли местами так, что кол-ва элементов > 0 в строках следовали в порядке невозрастания:");
            Console.ReadKey();
        }
    }
}

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


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

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

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