Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
-26 / 6 / 1
Регистрация: 26.06.2011
Сообщений: 157

Шаблонный класс Average<T>

24.01.2020, 00:11. Показов 3965. Ответов 45

Студворк — интернет-сервис помощи студентам
Всем доброй ночи. Прошу помощи в таком вопросе. Есть задание
Разработать шаблонный класс Average<T>, который вычисляет среднее для набора значений типа T.
У класса должны быть функции:
- add(T value) - добавить значение T к вычислению среднего;
- T average() - функция вычисляет среднее для всех добавленных значений;
- reset() - сбросить состояние объекта к изначальному.
В качестве типа Т допускаются только числовые типы.

Что у меня получилось.
C#
1
2
3
4
5
6
7
8
 List<List<double>> number = new List<List<double>>();
 
            number.Add(new List<double> { 1, 2, 3 });
            number.Add(new List<double> { 4, 5, 6 });
            double average = number.Average(inner => inner[0]);
            Console.WriteLine($"Среднее{average}");
 
            Console.ReadLine();
Но дело в том, что я ни как не могу написать функцию reset() для сброса в исходное состояние.
Если есть у Вас время , то прошу помогите кодом. Уже 2 день мучаюсь.

Добавлено через 2 минуты
Вот написал второй вариант . Но там я не могу добавить Add() для значения вычисления среднего.

C#
1
2
3
4
5
6
7
8
9
//Console.WriteLine("Операция Average\n\n************\n");
            //IEnumerable<int> numers = Enumerable.Range(1, 10);
           
            //Console.WriteLine("Последовательность чисел\n");
            //foreach (var result in numers)
 
            //    Console.WriteLine(result);
            //double average = numers.Average();
            //Console.WriteLine("Средне" + average);
Помогите как сделать ?. Это ТЗ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2020, 00:11
Ответы с готовыми решениями:

Шаблонный класс
Здравствуйте! Долго искал в интернете примеры, как написать класс-шаблон на шарпе, но кроме теории ничего не нашел. Из справки MSDN мало...

Частично шаблонный класс
У меня есть класс MainClass, от него наследуются классы Class1, Class2, Class3 Я хочу сделать такой класс Manager&lt;T&gt; чтобы я...

Что такое шаблонный класс, и для чего он нужен?
Объяснительная​ пожалуйста, что такое шаблонный класс, и для чего он нужен? Никак не могу понять, если можно то с примером.

45
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
25.01.2020, 14:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Skriptik Посмотреть сообщение
Но по его мнению код не правильный . Что не так , я .... ума не приложу.
Попробуйте комментов добавить и все методы продемонстрировать
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
    /// <summary>Класс с коллекцией элементов</summary>
    /// <typeparam name="T">Тип элементов</typeparam>
    public class AverageData<T>
    {
        /// <summary>Поле с приватным листом элементов</summary>
        private readonly  List<T> _data = new List<T>();
        /// <summary>Свойство возвращающее неизменяемый список элементов</summary>
        public IImmutableList<T> Data => _data.ToImmutableList();
 
        /// <summary>Метод добавления элемента в список</summary>
        /// <param name="value">Добавляемый элемент</param>
        public void Add(T value) => _data.Add(value);
 
        /// <summary>Метод возвращающий среднее значение списка</summary>
        /// <returns>T - тип элемента</returns>
        public T Average()
        {
            dynamic sum = 0;
            foreach (T t in _data)
                sum += t;
 
            return sum / _data.Count;
        }
 
        /// <summary>Очистка списка</summary>
        public void Reset() => _data.Clear();
 
        /// <summary>Конструктор по умолчанию</summary>
        public AverageData() { }
        /// <summary>Конструткор с начальными элементами</summary>
        /// <param name="items">Список или массив элементов</param>
        public AverageData(params T[] items)
        {
            foreach (T t in items)
                Add(t);
        }
    }
    class Program
    {
 
 
        static void Main(string[] args)
        {
            AverageData<decimal> d = new AverageData<decimal>(10, 1);
 
            d.Add(15);
            d.Add(6);
            Console.WriteLine("Список элементов: " + string.Join(" ", d.Data));
            Console.WriteLine(d.Average());
 
            d.Reset();
            d.Add(30);
            d.Add(68);
            Console.WriteLine("Список элементов: " + string.Join(" ", d.Data));
            Console.WriteLine(d.Average());
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
25.01.2020, 14:14
Skriptik, на месте работодателя я бы любую отмазку использовал для отказа.
1. Нахождение среднего само по себе школьный уровень
2. Вы сами написали что нужен reset. А в итоговом коде его нет. Что говорит о недостаточных навыках коммуникации.
0
-26 / 6 / 1
Регистрация: 26.06.2011
Сообщений: 157
25.01.2020, 14:17  [ТС]
Я просто не внимательно прочел. Вот и допустил ошибку .
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
25.01.2020, 14:19
Цитата Сообщение от Skriptik Посмотреть сообщение
Я просто не внимательно прочел. Вот и допустил ошибку .
так а как в итоге надо? откуда изначально ресет взялся? нужен ли он?
Цитата Сообщение от Skriptik Посмотреть сообщение
Но по его мнению код не правильный
думаю он видит что код не вы писали. А раз он не ваш, то о чем вообще говорить. Или еще лучше, на этом форуме сидит
0
-26 / 6 / 1
Регистрация: 26.06.2011
Сообщений: 157
25.01.2020, 14:40  [ТС]
Он даже его не смотрел. А отдал другим прогерам. И они ему сказали что весь код не правильный. Но коментировать свой оказ не захотели.

Добавлено через 2 минуты
Я ему до Вас 3 варианта своих прислал. Хотя в другую контору я отправил все 3 скрипта и они все подошли и все нормально. Вот странно.

Добавлено через 2 минуты
Так что тут дело не в моем профессионализме , а дело в работодателях которые нанимают идиотов за 70 штук.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
25.01.2020, 15:06
Цитата Сообщение от Skriptik Посмотреть сообщение
Хотя в другую контору
две разные конторы с одинаковыми тестовыми заданими?
Цитата Сообщение от Skriptik Посмотреть сообщение
и они все подошли и все нормально
возможно им просто нужен человек файлы на флешки копировать, вот и не парятся


в любом случае даже с изначальным заданием вы не определились
Цитата Сообщение от Skriptik Посмотреть сообщение
Я просто не внимательно прочел
так что говорить не о чем

Добавлено через 9 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
foreach (T t in _data)
                sum += t;
кстати есть вероятность, что ожидается решение эффективное по памяти и времени
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.01.2020, 15:06

Генерик от переменной Type, создать шаблонный класс с нужным типом
Type type_ = typeof(int); //например ListBin&lt;type_&gt; LB = new ListBin&lt;type_&gt;(str); выдает ошибку =/ типо type_ не тип... как то так ...

Шаблонный класс: параметр для шаблона должен быть классом и иметь поле ID
Мне нужно (точнее весьма желательно) сделать такую вещь. Шаблонный класс, но вот с таким ограничением - параметр для шаблона должен быть...

Используя шаблонный класс vector, напишите функцию нахождения скалярного произведения векторов
Помогите реализовать

Используя шаблонный класс vector, напишите функцию нахождения максимального элемента в одномерном массиве
Не понимаю, как это сделать, можете написать программу

Помогите разобраться с кодом расчета min, max, average
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...


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

Или воспользуйтесь поиском по форуму:
46
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru