Использование делегата Action - C#
Формулировка задачи:
Добрый день. Имеется такая задача
Написать статический метод, выполняющий указанное действие над элементами матрицы целых чисел. Параметры: матрица целых чисел, заданное действие – объект Action.
Используя написанный метод:
• вывести матрицу на экран;
• вывести на экран положительные элементы матрицы;
• увеличить в два раза все положительные элементы матрицы (Для этого придется изменить тип параметра-делегата! Предыдущий вариант закомментировать ).
Не могу понять как реализовать 3-ий пункт. может кто сможет помочь.
И может можно как то более красиво реализовать вывод матрицы
Заранее спасибо .
Листинг программы
- 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);
- }
- }
- }
Решение задачи: «Использование делегата 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();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д