Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 06.03.2019
Сообщений: 1
1

Описать класс для работы с одномерным массивом

06.03.2019, 11:40. Показов 4028. Ответов 2
Метки нет (Все метки)

Описать класс для работы с одномерным массивом:
- конструктор, заполняющий заданное в его параметре количество элементов массива случайными числами в заданном диапазоне;
- конструктор, заполняющий заданное количество элементов массива из строки string (числа в строке разделяются точками);
- свойство, доступное только для чтения, для получения количества элементов массива, равных нулю;
- метод, вычисляющий произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

Вывод на экран выполнять только в методе Main класса-клиента. Программа должна адекватно реагировать на ошибки пользователя и различные варианты исходных данных.

Help...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2019, 11:40
Ответы с готовыми решениями:

Описать класс для работы с одномерным массивом
Описать класс для работы с одномерным массивом: • Конструктор c тремя параметрами (n, x1,d),...

Описать класс для работы с одномерным массивом
Описать класс для работы с одномерным массивом: - конструктор, выделяющий память под заданное в...

Описать класс для работы с одномерным массивом
Описать класс для работы с одномерным массивом: - конструктор, который заполняет заданную в его...

Описать класс для работы с одномерным массивом вещественных чисел
Помогите с лабой Условие: Создайте проект, в котором опишите класс для решения задачи Вашего...

2
869 / 549 / 290
Регистрация: 21.11.2012
Сообщений: 1,542
06.03.2019, 13:28 2
класс нужно доработать на проверку ошибок и еще пару нюансов, допилите сами

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
internal class Massiv
    {
        private int[] arr;
        public int CountOfNullValues { get { return arr.Count(x => x == 0); } }
        public Massiv(int n, int a, int b)
        {
            var rnd = new Random();
            arr = new int[n];
 
            for (int i = 0; i < n; i++)
            {
                arr[i] = rnd.Next(a, b);
            }
        }
        public long GetProduct()
        {
            if (CountOfNullValues < 2) return -1;
            else
            {
                long produkt = 0;
                var cnt = 0;
 
                foreach(var value in arr)
                {
                    cnt = value == 0 ? cnt + 1 : cnt;
 
                    if (cnt == 1 && value != 0)
                    {
                        if (produkt == 0) produkt = 1;
                        produkt *= value;
                    }
                }
 
                return produkt;
            }
        }
 
        public void Print()
        {
            var str = "Array = { ";
 
            foreach (int value in arr)
            {
                str += value + ", ";
            }
 
            str = str.Trim().TrimEnd(',') + " }";
 
            Console.WriteLine(str);
        }
        public Massiv(string values, params string[] separator)
        {
            arr = values.Split(separator, StringSplitOptions.RemoveEmptyEntries).Select(x => Convert.ToInt32(x)).ToArray();
        }
    }
0
70 / 44 / 28
Регистрация: 14.02.2017
Сообщений: 126
06.03.2019, 14:38 3
Лучший ответ Сообщение было отмечено NanorU как решение

Решение

Добрый день!

В методе может быть какой-нить косячок с обработчиком... Логирование ошибок я не делал)))

Класс MyArray

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
        public class MyArray
        {            
            Random rnd = new Random();
            int elZero;
            public int ElZero
            {
                get
                {
                    var elZero = Array.Where(x => x == 0).Count();
                    return elZero;
                }
            }
            public bool IsValidN(int n)//проверяем валидность n, больше 0,
            {
                if (n > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            int n;
            public int N
            {
                get
                {
                    return n;
                }
                set
                {
                    if (!IsValidN(value))
                        throw new ArgumentException("N может быть только больше, чем 0!", "value");
                    n = value;
                }
            }
            public int[] Array { get; set; }
            //ctor 1
            public MyArray(int n, int a, int b)
            {
                N = n;
                int[] array = new int[n];
                for (int i = 0; i < n; i++)
                {
                    array[i] = rnd.Next(a, b);
                }
                Array = array;
            }
            //ctor 2
            public MyArray(string str)
            {                
                string[] arr = str.Split('.');
                if (!IsValidN(arr.Count()))
                    throw new ArgumentException("N вне разрешенных пределов!", "n");
                N = arr.Count();
                int[] array = new int[n];
                for (int i = 0; i < n; i++)
                {
                    array[i] = Int32.Parse(arr[i]);
                }
                Array = array;
            }
            //метод
            public int GetMultiplication()
            {
                List<int> myList = new List<int>(Array);
                if (myList.Count() == 0)
                    throw new Exception("Основной массив пустой - ой - ой- ой!!!", null);
                var result = myList.Skip(myList.IndexOf(0) + 1);
                if(result.Count() == 0)
                    throw new Exception("Результирующий массив пустой - нет ни одного 0!!!", null);
                var result1 = result.TakeWhile(x => x != 0);
                if (result1.Count() == 0)
                    throw new Exception("Результирующий массив пустой - два 0 стоят подряд!!!", null);
                var result2 = result1.Aggregate((a, b) => a * b);
                if (result2 == 0)
                    throw new Exception("Мдэ..... что-то не так!", null);
                return result2;                
            }             
        }
Main:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
            try
            {
                // первый объект
                MyArray ma = new MyArray(20, -5, 5);
                //на консоль
                Console.WriteLine($"Massiv {nameof(ma)}:\nN = {ma.N}");
                Console.WriteLine($"Элементы массива {nameof(ma)}: ");
                for (int i = 0; i < ma.Array.Count(); i++)
                {
                    Console.Write($"{ma.Array[i]} ");
                }
                Console.WriteLine();
                Console.WriteLine($"Count of Zero elements of {nameof(ma)} is: {ma.ElZero}");
                int res1 = ma.GetMultiplication();
                Console.WriteLine($"Искомое произведение: {res1}");
                //второй объект
                string str = "654.5.644.0.5.40.5.4.6.5.0.5878.3.57.83.57.54.54.657.0.5.46.54";
                MyArray ma1 = new MyArray(str);
                Console.WriteLine($"Massiv {nameof(ma1)}:\nN = {ma1.N}");
                Console.WriteLine($"Элементы массива {nameof(ma1)}: ");
                for (int i = 0; i < ma1.Array.Count(); i++)
                {
                    Console.Write($"{ma1.Array[i]} ");
                }
                Console.WriteLine();
                int res = ma1.GetMultiplication();
                Console.WriteLine($"Искомое произведение: {res}");
                Console.WriteLine($"Count of Zero elements is: {ma1.ElZero}");
            }
            catch
            {
                Console.WriteLine("Что-то пошло не так...");
            }
            finally
            {
                Console.WriteLine("Работа завершена.");
            }
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2019, 14:38

Описать класс для работы с одномерным массивом целых чисел
По заданию нужно Описать класс для работы с одномерным массивом целых чисел. Обеспечить...

Описать класс для работы с одномерным массивом целых чисел
Помогите пожалуйста:) Описать класс для работы с одномерным массивом целых чисел (вектором). ...

Описать класс для работы с одномерным массивом целых чисел
с# в котором я так плох но зачет все же нужен Описать класс для работы с одномерным массивом...

Описать класс для работы с одномерным массивом целых чисел
Описать класс для работы с одномерным массивом целых чисел. Обеспечить возможность нахождения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru