Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
g1gs
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 20
1

Реализовать обобщенный класс, включающий функцию вычисления максимального числа из массива чисел

06.12.2013, 18:39. Просмотров 833. Ответов 9
Метки нет (Все метки)

Помогите с заданием!!!Ни чего не могу придумать...

Реализовать обобщенный класс, включающий функцию вычисления максимального числа из массива чисел, переданного в параметре. В качестве параметров могут выступать только числа (float, double, int, byte).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 18:39
Ответы с готовыми решениями:

Написать рекурсивную функцию для вычисления максимального элемента массива из n элементов.
Написать рекурсивную функцию для вычисления максимального элемента массива из n...

Обобщенный и не обобщенный класс с одинаковым именем
Добрый день! Task<int> task = Task.Run(() => { Console.WriteLine("Foo");...

Реализовать функцию вычисления суммы двух целых чисел
Имеется задача: Реализовать функцию вычисления суммы двух целых чисел. Как...

Реализовать функцию вычисления суммы двух вещественных чисел
Реализовать функцию вычисления суммы двух вещественных чисел.Исходные данные...

Реализовать функцию вычисления суммы и разности двух вещественных чисел
Реализовать функцию вычисления суммы и разности двух вещественных чисел Кому...

9
no.Oby
13 / 13 / 2
Регистрация: 21.08.2012
Сообщений: 66
06.12.2013, 21:26 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
 
using System.Linq;
 
....
 
public class ItShouldBeExtensionMethod<T> where T : struct
    {
        readonly static Type[] allowedTypes = new Type[]{typeof(float),typeof(double),typeof(int),typeof(byte)};
 
        public ItShouldBeExtensionMethod( )
        {
            T a = default(T);
            if (!allowedTypes.Contains( a.GetType() ))
                throw new Exception( "Недопустимый тип" );
        }
 
        public T GetMax<T> ( T[] array )
        {
            if(array.Length == 0)
                throw new Exception( "Пустой массив" );
            return array.Max();
        }
 
    }
Добавлено через 2 минуты
Блин, вот только тебя запалят с таким кодом!)
1
g1gs
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 20
06.12.2013, 23:25  [ТС] 3
Спасибо Огромное:-)
Дааааа, сразу поймут, что не я делал:-) я не могу до такого додуматься:-)
0
no.Oby
13 / 13 / 2
Регистрация: 21.08.2012
Сообщений: 66
06.12.2013, 23:32 4
C#
1
if(array.Length == 0)
замени это блок на этот
C#
1
if(array == null || array.Length == 0)
а то мало ли)
0
Веселый
50 / 58 / 41
Регистрация: 12.10.2013
Сообщений: 866
07.12.2013, 22:54 5
Есть попроще вариант , но нужно отсеять в коде (float, double, int, byte).

Код:

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    
    class maximumNumber
    {
        private static int calculationOfTheMaximum(int[] ar)
        {        
          return ar.Max();
         
        }
 
        static void Main(string[] args)
        {
           int[] d = new int[20] { 1, 2, 3, 55, 5, 567, 45, 5, 44, 6, 45, 368, 44, 234, 66, 34, 98, 342, 66, 567 };
           int result = calculationOfTheMaximum(d);
           Console.Write("{0}",result);
           Console.ReadKey();
        }
    }
}
0
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
07.12.2013, 23:26 6
no.Oby, во-первых указывать T в дважды (в классе и в методе) не нужно, выбери что-то одно.
Во-вторых мб так, не ?
C#
1
2
3
4
5
6
7
    public static class ItShouldBeExtensionMethod
    {
        public static T GetMax<T>(this T[] array) where T:IComparable<T>
        {
            return array.Max();
        }
    }
0
no.Oby
13 / 13 / 2
Регистрация: 21.08.2012
Сообщений: 66
09.12.2013, 11:38 7
Я исходил из того что static нельзя, для меня обобщённый класс это не статический класс с обобщённым методом(хоть и спорно).
Ну и условие с фильтром типов почему то все упорно игнорируют)
Так то я намекнул, что всё вообще можно свести к extension методу который уже есть! только надо фильтр дописать.
0
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
09.12.2013, 13:42 8
no.Oby, ну фильтром выступает Where. На самом деле я не знаю, почему они его не встроили в сам метод Max, вместо того, чтобы бросать исключения в рантайме...

Добавлено через 56 секунд
Я исходил из того что static нельзя, для меня обобщённый класс это не статический класс с обобщённым методом(хоть и спорно).
тогда не нужно было делать метод генериком, то есть:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ItShouldBeExtensionMethod<T> where T : struct
    {
        readonly static Type[] allowedTypes = new Type[]{typeof(float),typeof(double),typeof(int),typeof(byte)};
 
        public ItShouldBeExtensionMethod( )
        {
            T a = default(T);
            if (!allowedTypes.Contains( a.GetType() ))
                throw new Exception( "Недопустимый тип" );
        }
 
        public T GetMax <T>/*<--Вот это <T> лишнее! */ ( T[] array )
        {
            if(array.Length == 0)
                throw new Exception( "Пустой массив" );
            return array.Max();
        }
 
    }
Добавлено через 54 секунды
да и ограничение на структуры странное. Вдруг я подставлю IComparable<T> класс, для него max посчитается нормально.
0
no.Oby
13 / 13 / 2
Регистрация: 21.08.2012
Сообщений: 66
09.12.2013, 13:45 9
Аааа) точно ну тут тупанул да)
Ну struct это аля where ValueType.
Если убрать generic из GetMax то всё будет по фен-шую)
0
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
09.12.2013, 13:47 10
no.Oby, эт тоже пушка
C#
1
2
3
T a = default(T);
            if (!allowedTypes.Contains( a.GetType() ))
                throw new Exception( "Недопустимый тип" );
может стоило просто так?
C#
1
2
            if (!allowedTypes.Contains(typeof(T)))
                throw new Exception( "Недопустимый тип" );
насколько я знаю, первый вариант вообще может свалиться... Хотя вы сделали ограничение только на структуры, не из-за этого ли? Потому что для класса a == null, вызов null-метода, сами знаете... )
0
09.12.2013, 13:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 13:47

Создать класс дерева, содержащего числа. Реализовать в этом классе функцию, определяющую количество листьев в дереве
Нужно написать такую программку: Создать класс дерева, содержащего числа....

Создать класс дерева, содержащего числа. Реализовать функцию, определяющую количество уровней дерева
Нужна программа: Создать класс дерева, содержащего числа. Реализовать в этом...

Обобщенный класс
Задание: Создать обобщенный класс для хранения объектов-исключений. Тип...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru