Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 20

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

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

Студворк — интернет-сервис помощи студентам
Помогите с заданием!!!Ни чего не могу придумать...

Реализовать обобщенный класс, включающий функцию вычисления максимального числа из массива чисел, переданного в параметре. В качестве параметров могут выступать только числа (float, double, int, byte).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2013, 18:39
Ответы с готовыми решениями:

Как правильно реализовать обобщённый класс?
хочу создать класс class MyGenericClass<T> Ругается на эту T. убрать не вариант,нужна дальше

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

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

9
13 / 13 / 2
Регистрация: 21.08.2012
Сообщений: 66
06.12.2013, 21:26
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
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 20
06.12.2013, 23:25  [ТС]
Спасибо Огромное:-)
Дааааа, сразу поймут, что не я делал:-) я не могу до такого додуматься:-)
0
13 / 13 / 2
Регистрация: 21.08.2012
Сообщений: 66
06.12.2013, 23:32
C#
1
if(array.Length == 0)
замени это блок на этот
C#
1
if(array == null || array.Length == 0)
а то мало ли)
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
07.12.2013, 22:54
Есть попроще вариант , но нужно отсеять в коде (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
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.12.2013, 23:26
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
13 / 13 / 2
Регистрация: 21.08.2012
Сообщений: 66
09.12.2013, 11:38
Я исходил из того что static нельзя, для меня обобщённый класс это не статический класс с обобщённым методом(хоть и спорно).
Ну и условие с фильтром типов почему то все упорно игнорируют)
Так то я намекнул, что всё вообще можно свести к extension методу который уже есть! только надо фильтр дописать.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
09.12.2013, 13:42
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
13 / 13 / 2
Регистрация: 21.08.2012
Сообщений: 66
09.12.2013, 13:45
Аааа) точно ну тут тупанул да)
Ну struct это аля where ValueType.
Если убрать generic из GetMax то всё будет по фен-шую)
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
09.12.2013, 13:47
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2013, 13:47
Помогаю со студенческими работами здесь

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

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

Реализовать рекурсивную функцию вычисления степени из числа
Добрый день , помогите решить задачи : ==================================================================================== ...

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

обобщенный класс для чисел
Всем привет. Написал тип numb для целых и дробных чисел, но не смог написать перегрузку оператора &lt;&lt; для вывода через cout. Вот что...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru