Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
-38 / 1 / 0
Регистрация: 23.11.2022
Сообщений: 247
1

Как часто рождаются люди с определенным именем в определенном месяце

12.03.2023, 18:27. Показов 1302. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Скачайте файл names.txt. Этот файл содержит список имен и даты рождения. Составьте программу, которая выведет на экран список все месяцы, имя и рядом количество – частота (в %). (Как часто рождаются люди с определенным именем в определенном месяце)
Вложения
Тип файла: zip names.txt.zip (12.2 Кб, 21 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2023, 18:27
Ответы с готовыми решениями:

Создайте файл data.txt по образцу урока. Напишите программу, которая открывает этот файл на чтение, построчно считывает
Создайте файл data.txt по образцу урока. Напишите программу, которая открывает этот файл на...

Требуется написать программу которая сохраняет этот файл как txt файл с тем же самым именем но с удаленным doc расширением.
Помогите разрешить следующую задачу. Существует некий файл Name.xml.doc эквивалент текстового файла...

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

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

24
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,406
13.03.2023, 12:40 2
так мы должны скачать или вы?
0
2838 / 1958 / 366
Регистрация: 14.08.2018
Сообщений: 6,329
Записей в блоге: 4
13.03.2023, 12:42 3
Олег 224, SQL уже победили?
0
Эксперт .NET
11071 / 6988 / 1571
Регистрация: 25.05.2015
Сообщений: 21,077
Записей в блоге: 14
13.03.2023, 13:14 4
Люди не рождаются с именем. Имя не свойство и не составная часть организма.
0
help
4426 / 4079 / 812
Регистрация: 13.04.2015
Сообщений: 8,926
13.03.2023, 13:17 5
Цитата Сообщение от Rius Посмотреть сообщение
Люди не рождаются с именем.
У него рождаются.
0
2 / 2 / 1
Регистрация: 13.03.2023
Сообщений: 34
14.03.2023, 12:39 6
Цитата Сообщение от Олег 224 Посмотреть сообщение
Скачайте файл names.txt. Этот файл содержит список имен и даты рождения. Составьте программу, которая выведет на экран список все месяцы, имя и рядом количество – частота (в %). (Как часто рождаются люди с определенным именем в определенном месяце)
Олег 224, а смысл в чём? Если есть SQL?
0
1047 / 327 / 118
Регистрация: 28.11.2020
Сообщений: 1,036
14.03.2023, 14:06 7
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
    string pathFile = @"c:\Work\Загрузки\names.txt";
    string fileName = File.ReadAllText(pathFile);
    var lst = fileName.Split (Environment.NewLine);
    var lineName = lst.Select (n => new
                {
                    Name = n.Split (' ')[1],
                    BirthTime = n.Split (' ') [0],
                })
                .Select (x => new
                {
                    BirthTime = DateTime.Parse(x.BirthTime,new CultureInfo("ru-RU", true)).ToString("MMMM"),
                    Name = x.Name.Substring (0, 1).ToUpper() + x.Name.Substring (1),
                })
                .GroupBy (p => p.Name)
                .Select (p => new
                {
                    Count = p.Count(),
                    Name = p.Key,
                    BirthTime = p.First().BirthTime
                })
                .OrderByDescending (p => p.Count)
                .ToList();
    
    foreach (var item in lineName)
    {
        Console.WriteLine ($"{item.Count} {item.Name} в {item.BirthTime}");
    }
0
2638 / 1566 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
14.03.2023, 14:35 8
Doomov, Если я правильно понимаю, то вы просто подсчитали кол-во каждого имени, встречающегося в конкретном месяце. Но это не совсем то, что написано в задании.
1
1047 / 327 / 118
Регистрация: 28.11.2020
Сообщений: 1,036
14.03.2023, 15:08 9
Вроде так. Не правильно сделал группировку...
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
    string pathFile = @"c:\Work\Загрузки\names.txt";
    string fileName = File.ReadAllText(pathFile);
    var lst = fileName.Split (Environment.NewLine);
    var lineName = lst.Select (n => new
                {
                    Name = n.Split (' ')[1],
                    BirthTime = n.Split (' ') [0],
                })
                .Select (x => new
                {
                    BirthTime = DateTime.Parse(x.BirthTime,new CultureInfo("ru-RU", true)).ToString("MMMM"),
                    Name = x.Name.Substring (0, 1).ToUpper() + x.Name.Substring (1),
                })
                .GroupBy (p => new
                {
                    Name = p.Name,
                    BirthTime = p.BirthTime
                })
                .Select (p => new
                {
                    Count = p.Count(),
                    Name = p.Key.Name,
                    BirthTime = p.Key.BirthTime
                })
                .OrderByDescending (p => p.Count)
                .ToList();
 
    foreach (var item in lineName)
    {
        Console.WriteLine ($"{item.Count} {item.Name} в {item.BirthTime}");
    }
1
2638 / 1566 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
14.03.2023, 15:19 10
Ну тогда ещё вариант немного в другом формате

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
namespace CyberForum
{
    class Program
    {
        static void Main()
        {
            string pathFile = @"D:\names.txt";
 
            Dictionary<string, int>[] year = new Dictionary<string, int>[12];
            int[] peopleInMonth = new int[12];
 
            foreach (string line in File.ReadLines(pathFile))
            {
                int month = int.Parse(line.Substring(3, 2)) - 1;
                string name = line.Substring(line.LastIndexOf(' ') + 1);
 
                if (year[month] == null)
                {
                    year[month] = new Dictionary<string, int>();
                }
 
 
                if (year[month].ContainsKey(name) == false)
                {
                    year[month].Add(name, 0);
                }
 
                year[month][name]++;
                peopleInMonth[month]++;
            }
 
 
            string[] months = "Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь".Split();
 
            for (int i = 0; i < year.Length; i++)
            {
                if (year[i] == null)
                    continue;
 
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine(months[i] + ":");
                Console.ForegroundColor = ConsoleColor.White;
 
                foreach (var item in year[i])
                {
                    double pecent = (double)item.Value / peopleInMonth[i];
 
                    Console.WriteLine($"\t{item.Key} {pecent:P2}");
                }
                Console.WriteLine();
            }
 
        }
 
    }
}
Код
        ...

Ноябрь:
        рамис 0,63 %
        владислав 0,63 %
        ася 0,63 %
        элла 0,63 %
        алексей 1,90 %
        татьяна 3,16 %
        марина 3,16 %
        александр 5,70 %
        евгений 1,90 %

Декабрь:
        дмитрий 1,79 %
        олег 2,38 %
        татьяна 3,57 %
        анна 2,98 %
        николай 2,98 %
        александр 5,36 %

        ...
0
-38 / 1 / 0
Регистрация: 23.11.2022
Сообщений: 247
14.03.2023, 15:57  [ТС] 11
Выводит так:
04.12.1963 ирек 0,00%
20.12.1971 евгений 0,00%
17.12.1954 аврора 0,00%
09.12.1973 михаил 0,00%
21.12.1977 ольга 0,01%
24.12.1961 наталья 0,00%
27.12.1940 галина 0,00%
08.12.1985 экатерина 0,00%
20.12.1956 татьяна 0,01%
01.12.1962 геннадий 0,00%
17.12.1974 жанна 0,00%
09.12.1969 искандер 0,00%
24.12.1962 надежда 0,00%
02.12.1953 татьяна 0,00%
05.12.1982 вадим 0,00%
12.12.1950 анатолий 0,00%
31.12.1940 амерби 0,00%
03.12.1986 василий 0,00%
02.12.1975 надежда 0,01%
13.12.1982 елена 0,01%
17.12.1979 екатерина 0,00%
21.12.1959 борис 0,00%
08.12.1957 антонина 0,00%
08.12.1967 андрей 0,00%
06.12.1989 илья 0,00%
29.12.1955 василий 0,00%
15.12.1970 татьяна 0,00%
0
Dr9vik
14.03.2023, 16:04
  #12

Не по теме:

люблю этого автора
еще более доставляют те кто ему помогает:D

0
2638 / 1566 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
14.03.2023, 16:49 13
Олег 224, покажите код, который у вас. Формат вывода, предоставленный вами не совпадает ни с одним из предложенных решений.

Dr9vik, лично я пишу код в первую очередь для собственного развития, а не для автора. Думаю здесь многие поступают так же. Ну а отношение к автору хорошо показывает его репутация, с которой сложно не согласиться.
1
-38 / 1 / 0
Регистрация: 23.11.2022
Сообщений: 247
14.03.2023, 17:18  [ТС] 14
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace AV
{
    class Program
    {
        static void Main()
        {
            string pathFile = @"C:\repos\names.txt";
 
            Dictionary<string, int>[] year = new Dictionary<string, int>[12];
            int[] peopleInMonth = new int[12];
 
            foreach (string line in File.ReadLines(pathFile))
            {
                int month = int.Parse(line.Substring(3, 2)) - 1;
                string name = line.Substring(line.LastIndexOf(' ') + 1);
 
                if (year[month] == null)
                {
                    year[month] = new Dictionary<string, int>();
                }
 
 
                if (year[month].ContainsKey(name) == false)
                {
                    year[month].Add(name, 0);
                }
 
                year[month][name]++;
                peopleInMonth[month]++;
            }
 
 
            string[] months = "Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь".Split();
 
            for (int i = 0; i < year.Length; i++)
            {
                if (year[i] == null)
                    continue;
 
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine(months[i] + ":");
                Console.ForegroundColor = ConsoleColor.White;
 
                foreach (var item in year[i])
                {
                    double pecent = (double)item.Value / peopleInMonth[i];
 
                    Console.WriteLine($"\t{item.Key} {pecent:P2}");
                }
                Console.WriteLine(months[i] );
            }
 
        }
 
    }
}
0
2638 / 1566 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
14.03.2023, 19:50 15
Цитата Сообщение от Олег 224 Посмотреть сообщение
Выводит так:
04.12.1963 ирек 0,00%
20.12.1971 евгений 0,00%
17.12.1954 аврора 0,00%
09.12.1973 михаил 0,00%
21.12.1977 ольга 0,01%
Цитата Сообщение от samana Посмотреть сообщение
покажите код, который у вас.
Олег 224, протестировал предоставленный вами код. Единственное отличие в нём только то, что вы дважды выводите название месяца (на 57 строке), вместо пустой строки. Всё остальное работает корректно.
У меня нет предположений, почему у вас в консоль выводит то, что вы показали...
0
1047 / 327 / 118
Регистрация: 28.11.2020
Сообщений: 1,036
15.03.2023, 11:40 16
Вот окончательный вариант... Учтен перевод в проценты, расчет за месяц (100% в месяце), отсюда расчет процентов ...
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
    string pathFile = @"c:\names.txt";
    string fileName = File.ReadAllText(pathFile);
    var lst = fileName.Split (Environment.NewLine);
    var lineName = lst.Select (n => new
                {
                    Name = n.Split (' ')[1],
                    BirthTime = n.Split (' ') [0],
                })
                .Select (x => new
                {
                    BirthTime = DateTime.Parse(x.BirthTime,
                                new CultureInfo("ru-RU", true)).ToString("MMMM"),
                    Name = x.Name.Substring (0, 1).ToUpper() + x.Name.Substring (1),
                })
                .GroupBy (p => new
                {
                    Name = p.Name,
                    BirthTime = p.BirthTime
                })
                .Select (p => new
                {
                    Id = DateTime.ParseExact (p.Key.BirthTime, "MMMM",
                                            CultureInfo.CurrentCulture).Month,
                    Quantity = p.Count(),
                    Name = p.Key.Name,
                    BirthTime = p.Key.BirthTime.Substring (0, 1).ToUpper() 
                                            + p.Key.BirthTime.Substring (1),
                })
                .OrderBy (p => DateTime.ParseExact (p.BirthTime, "MMMM",
                                            CultureInfo.CurrentCulture).Month)
                .ToList();
    
    //Массив. Общее количество имен в месяце. Индекс совпадает с номером месяца минус 1
    var sumMonth = Enumerable.Empty<double>().ToList();
    for (int j = 0; j < 12; j++)
    {
        sumMonth.Add(lineName.Where (r => r.Id == j + 1).Select (r => r.Quantity).Sum());
    }
    
    //Массив Названия месяцев. Индекс совпадает с номером месяца минус 1
    string[] months = "Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь".Split();
    
    
    for (int i = 0; i < 12; i++)
    {
        Console.WriteLine (months[i] + ":");
        foreach (var item in lineName.Where (r => r.Id == i + 1))
        {
            Console.WriteLine ($"\t{item.Name} {item.Quantity * 100/sumMonth[i]:F3} %");
        }
        Console.WriteLine();
    }
0
-38 / 1 / 0
Регистрация: 23.11.2022
Сообщений: 247
15.03.2023, 17:56  [ТС] 17
C#
1
var lst = fileName.Split(Environment.NewLine);
Из string в char не может преобразовать
И нужно-ли оно?
0
1047 / 327 / 118
Регистрация: 28.11.2020
Сообщений: 1,036
16.03.2023, 00:25 18
Цитата Сообщение от Олег 224 Посмотреть сообщение
var lst = fileName.Split(Environment.NewLine);
Из string в char не может преобразовать
И нужно-ли оно?
Причем тут char? Мы создаем string[].
Если вам не нравиться данный вариант, то проще заменить 2 и 3 строку...
C#
1
2
    string fileName = File.ReadAllText(pathFile);
    var lst = fileName.Split (Environment.NewLine);
...на строку...
C#
1
var lst = File.ReadAllLines(pathFile);
0
Администратор
Эксперт .NET
17553 / 13776 / 5298
Регистрация: 17.03.2014
Сообщений: 28,253
Записей в блоге: 1
16.03.2023, 00:46 19
Цитата Сообщение от Doomov Посмотреть сообщение
Причем тут char?
При том что у него версия .NET где нет перегрузки Split принимающей string.
0
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,406
16.03.2023, 00:55 20
Цитата Сообщение от OwenGlendower Посмотреть сообщение
При том что у него версия .NET где нет перегрузки Split принимающей string.
печально
и что делать?
0
16.03.2023, 00:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2023, 00:55
Помогаю со студенческими работами здесь

Программа читает текствовый файл file01.txt в массив Names[1.9] of string и выводит его на экран
Программа читает текствовый файл file01.txt в массив Names of string и выводит его на экран....

Составьте программу, которая создает и выводит на экран файл ZARPL.DAT
Составьте программу, которая создает и выводит на экран файл ZARPL.DAT, компоненты которого имеют...

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

Создать типизированный файл stud.dan, который содержит информацию: номер группы; фамилию студента, средний балл; и вывести этот файл на экран. Вывод с
Помогите, пожалуйста.Это задание по теме Файлы. Задание 2. Создать типизированный файл stud.dan,...

Создать программу которая создает файл, который содержит список органических веществ и их молекулярные массы
помогите пожалуйста !!!!!!!!!!!:help:

Не могу разобраться с кодом.Составьте программу, которая создает и выводит на экран файл ZARPL.DAT
Составьте программу, которая создает и выводит на экран файл ZARPL.DAT, компоненты которого имеют...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru