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

Как привязать выдачу данных к параметру метода?

11.08.2018, 13:10. Показов 2394. Ответов 5

Студворк — интернет-сервис помощи студентам
Всем добрый день. Есть задача: подготовить данные для построения гистограммы - количества людей в выборке c заданным именем в зависимости от числа (то есть номера дня в месяце) их рождения. Есть файл names.txt, содержащий данные в таком формате:
27.06.1964 лилия
02.01.1974 алексей
09.11.1969 рамис
Есть пример подготовки данных для гистограммы - — количества людей в выборке в зависимости от года их рождения:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static HistogramData GetHistogramBirthsByYear(NameData[] names)
  {
      Console.WriteLine("Статистика рождаемости по годам");
      var minYear = int.MaxValue;
      var maxYear = int.MinValue;
      foreach (var name in names)
           {
                minYear = Math.Min(minYear, name.BirthDate.Year);
                    maxYear = Math.Max(maxYear, name.BirthDate.Year);
           }
      var years = new string[maxYear - minYear + 1];
      for (int y = 0; y < years.Length; y++)
         years[y] = (y + minYear).ToString();
         var birthsCounts = new double[maxYear - minYear + 1];
      foreach (var name in names)
          birthsCounts[name.BirthDate.Year - minYear]++;
 
      return new HistogramData("Рождаемость по годам", years, birthsCounts);
  }
Переименовав переменные (name.BirthDate.Year в name.BirthDate.Day) и немного поколдовав с переменной years (фактически это она обозначает теперь кол-во дней), добился получения данных о количестве рождений в определенный день месяца.
Метод, с помощью которого необходимо выдать кол-во рождений в определенный день месяца людей именно с этим именем, передает не только параметр класса, но и переменную string name (она-то и определяет то самое имя).
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static HistogramData GetBirthsPerDayHistogram(NameData[] names, string name)
      {
              var minYear = int.MaxValue;
            var maxYear = int.MinValue;
            foreach (var name in names)
            {
                minYear = Math.Min(minYear, name.BirthDate.Day);
                maxYear = Math.Max(maxYear, name.BirthDate.Day);
            }
            var years = new string[31]; 
            for (int y = 1; y < years.Length; y++) 
                years[y] = (y + minYear).ToString(); 
            var birthsCounts = new double[maxYear - minYear + 1];
 
            foreach (var name in names)
                birthsCounts[name.BirthDate.Day - minYear]++;
/*этот код выдает кол-во рождений в определенный день месяца всех людей из файла names.txt*/
 
              return new HistogramData(string.Format("Рождаемость людей с именем '{0}'", name), 
             new string[0], new double[0])
      }
Вопрос: как работать с этой переменной name? Как привязать выдачу данных к одному имени?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.08.2018, 13:10
Ответы с готовыми решениями:

Как присвоить значение параметру метода (формы)
Предположим, я имею такой код. namespace _6_12 { class New { public static string Word; public...

Обеспечить доступ к параметру метода из других методов
Передается параметр nn public Oplata(int nn) { if (nn == 0) { .......... ...

Как параметру сопоставить массив данных?
Добрый день Вопрос про параметры и большое количество значений. И суть его вот в чем есть массив данных который нужно вогнать в базу....

5
36 / 34 / 13
Регистрация: 03.06.2010
Сообщений: 215
11.08.2018, 14:53
Лучший ответ Сообщение было отмечено Firefighter как решение

Решение

Firefighter, Как-то так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static HistogramData GetBirthsPerDayHistogram(NameData[] names, string name)
        {
            var maxDay = int.MinValue;
            foreach (var i in names)
            {
                maxDay = Math.Max(maxDay, i.BirthDate.Day);
            }
            var days = new string[maxDay  ];
            for (int i = 0; i < days.Length; i++)
                days[i] = (i + 1).ToString();
            var birthsCounts = new double[maxDay];
            foreach (var i in names)
            {
                if ((i.Name == name) && (i.BirthDate.Day > 1))
                {
                    birthsCounts[i.BirthDate.Day - 1]++;
                }
            }
            return new HistogramData($"Рождаемость людей с именем {name}", days, birthsCounts);
        
        }
1
0 / 0 / 0
Регистрация: 26.05.2018
Сообщений: 39
11.08.2018, 20:15  [ТС]
Ren Trapnest, это просто гениально!!! Всё получилось. Огромное спасибо.
0
0 / 0 / 0
Регистрация: 26.05.2018
Сообщений: 39
12.08.2018, 18:44  [ТС]
Ren Trapnest, хочу уточнить у Вас: вот этот код
C#
1
2
for (int i = 0; i < days.Length; i++)
days[i] = (i + 1).ToString();
переводит элементы массива days на +1 от индекса, потому что месяц начинается с первого числа, а не с нулевого.
А для чего нас вот этот элемент
C#
1
[i.BirthDate.Day - 1]
Зачем в индексе birthsCounts число (день рождения) имярека уменьшать на единицу?
0
36 / 34 / 13
Регистрация: 03.06.2010
Сообщений: 215
13.08.2018, 22:14
Firefighter,
Цитата Сообщение от Firefighter Посмотреть сообщение
Зачем в индексе birthsCounts число (день рождения) имярека уменьшать на единицу?
Все потому же), иначе выйдем за границы массива days[] IndexOutOfRangeException, т.к. день рождения тоже не начинается с 0
1
0 / 0 / 0
Регистрация: 26.05.2018
Сообщений: 39
14.08.2018, 18:08  [ТС]
Спасибо за объяснение. Конечно же! Ведь 31 число месяца у нас будет 30-м элементом в массива birthsCounts, так как первое число будет birthsCounts[0].
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2018, 18:08
Помогаю со студенческими работами здесь

Как при закрытии книги отменить выдачу сообщения обновления данных?
Как программно при закрытии книги со связанными данными отменить выдачу сообщения о обновлении данных?

С# как привязать базу данных
Помогите пожалуйста,мне нужно написать тест на С#, это как я понимаю надо создать сначала базу данных,а потом ее привязать,подскажите,кто...

Как Привязать Id К Базе Данных
Помогите пожалуйста!!! Был добавлен новый пользователь с ошибкой, удален полностью и зарегестрирован заново, все хорошо работало, по...

Как привязать базу данных к html?
На моем хостинге есть база данных, которую я сделал, но я не знаю как её присоединить к html.

Как привязать Label к базе данных
Нужно, чтобы на label выводилось значение из одного столбца таблицы бд. Как это сделать? В-общем, вот этот запрос нужно привязать к label...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru