Использование делегата Action - C#

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

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

Добрый день. Имеется такая задача Написать статический метод, выполняющий указанное действие над элементами матрицы целых чисел. Параметры: матрица целых чисел, заданное действие – объект Action. Используя написанный метод: • вывести матрицу на экран; • вывести на экран положительные элементы матрицы; • увеличить в два раза все положительные элементы матрицы (Для этого придется изменить тип параметра-делегата! Предыдущий вариант закомментировать ).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Задание_2
{
    class Program
    {
        static void Metod(int[,] arr, Action<int, int> act)
        {
            for(int i=0;i<arr.GetLength(0);++i)
            {
                for(int j=0;j<arr.GetLength(1);++j)
                {
                    act(arr[i, j], j);
                }
            }
        }
        static void Show(int num, int j)
        {
            if(j == 0)
                Console.WriteLine();
            
            Console.Write(num + "\t");
        }
        static void ShowPositive(int num, int j)
        {
            if(num>0)
                Console.Write(num + "\t");
        }
        static void Change(ref int num, int j)
        {
            if (num > 0)
                num *= 2;
        }
        static void Main(string[] args)
        {
            int[,] arr = new int[5, 5];
            Random rand = new Random();
            for (int i = 0; i < arr.GetLength(0); ++i)
            {
                for (int j = 0; j < arr.GetLength(1); ++j)
                {
                    arr[i, j] = rand.Next(-10, 10);
                }
            }
 
            Console.WriteLine("Матрица");
            Metod(arr, Show);
            Console.WriteLine();
            Console.WriteLine("Положительные элементы матрицы");
            Metod(arr, ShowPositive);

        }
    }
}
Не могу понять как реализовать 3-ий пункт. может кто сможет помочь. И может можно как то более красиво реализовать вывод матрицы Заранее спасибо .

Решение задачи: «Использование делегата Action»

textual
Листинг программы
    class Program
    {
        static void Method(int[,] arr, Action<int> act)
        {
            for (int i = 0; i < arr.GetLength(0); i++)
            for (int j = 0; j < arr.GetLength(1); j++)
                act(arr[i, j]);
        }
 
        static void Method2(int[,] arr, Func<int, int> act)
        {
            for (int i = 0; i < arr.GetLength(0); i++)
            for (int j = 0; j < arr.GetLength(1); j++)
                arr[i, j] = act(arr[i, j]);
        }
 
        static void Show(int num)
        {
            Console.Write(num + "\t");
        }
 
        static void ShowPositive(int num)
        {
            if (num > 0)
                Console.Write(num + "\t");
        }
 
        static int MultBy2(int num)
        {
            if (num > 0)
                return num*2;
            else
                return num;
        }
 
        static void Main(string[] args)
        {
            int[,] arr = new int[5, 5];
            Random rand = new Random();
            for (int i = 0; i < arr.GetLength(0); i++)
            for (int j = 0; j < arr.GetLength(1); j++)
                arr[i, j] = rand.Next(-10, 10);
 
            Console.WriteLine("Матрица");
            Method(arr, Show);
            Console.WriteLine();
 
            Console.WriteLine("Положительные элементы матрицы");
            Method(arr, ShowPositive);
            Console.WriteLine();
 
            Console.WriteLine("Положительные элементы матрицы, умноженные на 2");
            Method2(arr, MultBy2);
            Method(arr, ShowPositive);
            Console.WriteLine();
 
            Console.ReadLine();
        }
    }

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


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

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

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