Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Delegat6
- {
- class Program
- {
- delegate int Delegate(int y);
- static void Main(string[] args)
- {
- int size = 10;
- int[] a = new int[size];
- int[] b = new int[size];
- int[] c = new int[size];
- for(int i = 0; i < size; i++)
- {
- a[i] = i;
- b[i] = i;
- c[i] = i;
- }
- // Класс Pow разработан неверно
- // Что случится если будет написан следующий код?
- // Pow p1 = new Pow(2);
- // Pow p2 = new Pow(3);
- // В какую степень будет возводиться p1?
- // Pow p3 = new Pow(4);
- // p3.exponent = 1;
- // В какую степень будет возводиться p1, p2, p3?
- // В корректном случае должно быть:
- // p1 - в степень 2, p2 - в степень 3, p3 - в степень 4.
- // exponent - член класса недолжен быть доступным внешнему коду.
- // Сделайте метод Exponent нестатическим.
- Pow p = new Pow(2);
- Delegate del = Pow.Exponent;
- a = Method(a, del);
- Console.WriteLine("Один");
- Print(a);
- Delegate anonym = delegate (int x)
- {
- return (int)Math.Log(x);
- };
- del = anonym;
- b = Method(b, del);
- Console.WriteLine("Два");
- Print(b);
- del = (x) => Fibonachi(x);
- c = Method(c, del);
- Console.WriteLine("Три");
- Print(c);
- Console.ReadKey();
- }
- private static int[] Method(int[] x, Delegate del)
- {
- // Неправильно используется foreach.
- // Здесь i - не индекс элемента массива х, а значение.
- // Поправить
- foreach(int i in x)
- {
- x[i] = del(x[i]);
- }
- return x;
- }
- private static void Print(int[] x)
- {
- for (int i = 0; i < x.Length; i++)
- {
- Console.WriteLine(x[i]);
- }
- }
- private static int Fibonachi(int x)
- {
- int zero = 1;
- int first = 1;
- if(x == 0) { return 0; }
- if(x == 1) { return 1; }
- if(x == 2) { return 1; }
- if(x > 2) { x -= 2; }
- int result;
- do
- {
- result = zero + first;
- zero = first;
- first = result;
- x--;
- } while (x > 0);
- return result;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement