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

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

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

Добрый день. Имеется такая задача Написать статический метод, выполняющий указанное действие над элементами матрицы целых чисел. Параметры: матрица целых чисел, заданное действие – объект Action. Используя написанный метод: • вывести матрицу на экран; • вывести на экран положительные элементы матрицы; • увеличить в два раза все положительные элементы матрицы (Для этого придется изменить тип параметра-делегата! Предыдущий вариант закомментировать ).
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Задание_2
  7. {
  8. class Program
  9. {
  10. static void Metod(int[,] arr, Action<int, int> act)
  11. {
  12. for(int i=0;i<arr.GetLength(0);++i)
  13. {
  14. for(int j=0;j<arr.GetLength(1);++j)
  15. {
  16. act(arr[i, j], j);
  17. }
  18. }
  19. }
  20. static void Show(int num, int j)
  21. {
  22. if(j == 0)
  23. Console.WriteLine();
  24. Console.Write(num + "\t");
  25. }
  26. static void ShowPositive(int num, int j)
  27. {
  28. if(num>0)
  29. Console.Write(num + "\t");
  30. }
  31. static void Change(ref int num, int j)
  32. {
  33. if (num > 0)
  34. num *= 2;
  35. }
  36. static void Main(string[] args)
  37. {
  38. int[,] arr = new int[5, 5];
  39. Random rand = new Random();
  40. for (int i = 0; i < arr.GetLength(0); ++i)
  41. {
  42. for (int j = 0; j < arr.GetLength(1); ++j)
  43. {
  44. arr[i, j] = rand.Next(-10, 10);
  45. }
  46. }
  47. Console.WriteLine("Матрица");
  48. Metod(arr, Show);
  49. Console.WriteLine();
  50. Console.WriteLine("Положительные элементы матрицы");
  51. Metod(arr, ShowPositive);
  52.  
  53. }
  54. }
  55. }
Не могу понять как реализовать 3-ий пункт. может кто сможет помочь. И может можно как то более красиво реализовать вывод матрицы Заранее спасибо .

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

textual
Листинг программы
  1.     class Program
  2.     {
  3.         static void Method(int[,] arr, Action<int> act)
  4.         {
  5.             for (int i = 0; i < arr.GetLength(0); i++)
  6.             for (int j = 0; j < arr.GetLength(1); j++)
  7.                 act(arr[i, j]);
  8.         }
  9.  
  10.         static void Method2(int[,] arr, Func<int, int> act)
  11.         {
  12.             for (int i = 0; i < arr.GetLength(0); i++)
  13.             for (int j = 0; j < arr.GetLength(1); j++)
  14.                 arr[i, j] = act(arr[i, j]);
  15.         }
  16.  
  17.         static void Show(int num)
  18.         {
  19.             Console.Write(num + "\t");
  20.         }
  21.  
  22.         static void ShowPositive(int num)
  23.         {
  24.             if (num > 0)
  25.                 Console.Write(num + "\t");
  26.         }
  27.  
  28.         static int MultBy2(int num)
  29.         {
  30.             if (num > 0)
  31.                 return num*2;
  32.             else
  33.                 return num;
  34.         }
  35.  
  36.         static void Main(string[] args)
  37.         {
  38.             int[,] arr = new int[5, 5];
  39.             Random rand = new Random();
  40.             for (int i = 0; i < arr.GetLength(0); i++)
  41.             for (int j = 0; j < arr.GetLength(1); j++)
  42.                 arr[i, j] = rand.Next(-10, 10);
  43.  
  44.             Console.WriteLine("Матрица");
  45.             Method(arr, Show);
  46.             Console.WriteLine();
  47.  
  48.             Console.WriteLine("Положительные элементы матрицы");
  49.             Method(arr, ShowPositive);
  50.             Console.WriteLine();
  51.  
  52.             Console.WriteLine("Положительные элементы матрицы, умноженные на 2");
  53.             Method2(arr, MultBy2);
  54.             Method(arr, ShowPositive);
  55.             Console.WriteLine();
  56.  
  57.             Console.ReadLine();
  58.         }
  59.     }

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


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

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

12   голосов , оценка 3.917 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы