Advertisement
Guest User

Untitled

a guest
May 24th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.02 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Delegat6
  4. {
  5.     class Program
  6.     {
  7.         delegate int Delegate(int y);
  8.         static void Main(string[] args)
  9.         {
  10.             int size = 10;
  11.  
  12.             int[] a = new int[size];
  13.             int[] b = new int[size];
  14.             int[] c = new int[size];
  15.  
  16.             for(int i = 0; i < size; i++)
  17.             {
  18.                 a[i] = i;
  19.                 b[i] = i;
  20.                 c[i] = i;
  21.             }
  22.  
  23.             // Класс Pow разработан неверно
  24.             // Что случится если будет написан следующий код?
  25.             // Pow p1 = new Pow(2);
  26.             // Pow p2 = new Pow(3);
  27.             // В какую степень будет возводиться p1?
  28.             // Pow p3 = new Pow(4);
  29.             // p3.exponent = 1;
  30.             // В какую степень будет возводиться p1, p2, p3?
  31.             // В корректном случае должно быть:
  32.             // p1 - в степень 2, p2 - в степень 3, p3 - в степень 4.
  33.             // exponent - член класса недолжен быть доступным внешнему коду.
  34.             // Сделайте метод Exponent  нестатическим.
  35.  
  36.             Pow p = new Pow(2);
  37.             Delegate del = Pow.Exponent;
  38.             a = Method(a, del);
  39.             Console.WriteLine("Один");
  40.             Print(a);
  41.  
  42.             Delegate anonym = delegate (int x)
  43.             {
  44.                 return (int)Math.Log(x);
  45.             };
  46.  
  47.             del = anonym;
  48.             b = Method(b, del);
  49.             Console.WriteLine("Два");
  50.             Print(b);
  51.  
  52.             del = (x) => Fibonachi(x);
  53.             c = Method(c, del);
  54.             Console.WriteLine("Три");
  55.             Print(c);
  56.             Console.ReadKey();
  57.         }
  58.  
  59.         private static int[] Method(int[] x, Delegate del)
  60.         {
  61.             // Неправильно используется foreach.
  62.             // Здесь i - не индекс элемента массива х, а значение.
  63.             // Поправить
  64.             foreach(int i in x)
  65.             {
  66.                 x[i] = del(x[i]);
  67.             }
  68.  
  69.             return x;
  70.         }
  71.  
  72.         private static void Print(int[] x)
  73.         {
  74.             for (int i = 0; i < x.Length; i++)
  75.             {
  76.                 Console.WriteLine(x[i]);
  77.             }
  78.         }
  79.  
  80.         private static int Fibonachi(int x)
  81.         {
  82.             int zero = 1;
  83.             int first = 1;
  84.  
  85.             if(x == 0) { return 0; }
  86.             if(x == 1) { return 1; }
  87.             if(x == 2) { return 1; }
  88.             if(x > 2) { x -= 2; }
  89.  
  90.             int result;
  91.  
  92.             do
  93.             {
  94.                 result = zero + first;
  95.                 zero = first;
  96.                 first = result;
  97.                 x--;
  98.             } while (x > 0);
  99.  
  100.             return result;
  101.  
  102.            
  103.         }
  104.        
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement