Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 11

Посчитать сумму билетов для каждого спектакля и вывести их в порядке убывания

26.05.2015, 01:02. Показов 1333. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть вопрос, связанный с обработкой листа.
Итак, в лист из файла записываются заявки на спектакли. В каждой заявке содержится название спектакля и количество билетов. На каждый спектакль может быть несколько заявок. Нужно посчитать сумму билетов для каждого спектакля и вывести их в порядке убывания.
Прошу помочь! (лучше всего, если будет пример, потому что в C# я еще не силен)
P.S. Сори за создание очередной темы, просто ту пометили как тему с ответом и ее никто не смотрит.
Вот собственно код
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace Applications
{
    public partial class Form1 : Form
    {
        class App
        {
            //public int ID { get; set; }
            public string Name { get; set; }
            public int Kol { get; set; }
 
            public App( string name, int kol)
            {
                //ID = id;
                Name = name;
                Kol = kol;
            }
            public override string ToString()
            {
                return "Application: " + Name + " " + Kol;
            }
        }
        class Apps : List<App>
        {
            public App ByName(string name)
            {
                foreach (App t in this)
                {
                    if (t.Name == name)
                    {
                        return t;
                    }
                }
 
                return null;
            }
        }
        public Form1()
        {
            InitializeComponent();
        }
        //Apps Spisok = new Apps();
        
 
 
        private void button1_Click_1(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            listBox1.Items.Clear();
            App t;
 
            dlg.Filter = "Текстовые документы (*.txt)|*txt";
 
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                using (StreamReader sr = new StreamReader(dlg.FileName))
                {
                    while (!sr.EndOfStream)
                    {
                        string currentapp = sr.ReadLine();
                        t = new App(currentapp.Split(new char[] { ' ' })[1],int.Parse(currentapp.Split(new char[] { ' ' })[0]));
                        listBox1.Items.Add(t);
                        
                    }
                }
            }
        }
        
     
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2015, 01:02
Ответы с готовыми решениями:

Определить популярность каждого спектакля и напечатать их названия в порядке убывания
Добрый день! У меня есть задание: В театральную кассу поступило n заявок от школ города. Каждая заявка содержит название спектакля и...

Подсчитать количество заказанных билетов на каждый спектакль и вывести их в порядке убывания
Добрый день! В универе выдали задание, а в c# я не силен ( недавно перевелся ). Суть в том, что есть n заявок на спектали. Нужно...

Вывести в порядке убывания четные элементы каждого столбца
дан произвольный двумерный массив(m*n).элементы массива могут повторяться(элементы не провосходят 255).вывести в порядке...

5
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
26.05.2015, 10:06
Лучший ответ Сообщение было отмечено SlimWeezy как решение

Решение

SlimWeezy,
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
 
namespace Applications
{
    public partial class Form1 : Form
    {
        Apps list = new Apps();
 
        public Form1()
        {
            InitializeComponent();
 
            var bt = new Button {Text = "Sum and sort", Parent = this};
            bt.Click += new EventHandler(bt_Click);
        }
 
        void bt_Click(object sender, EventArgs e)
        {
            list = list.AggregateAndSort();
            UpdateInterface();
        }
 
        private void button1_Click_1(object sender, EventArgs e)
        {
            OpenFile();
            UpdateInterface();
        }
 
        private void OpenFile()
        {
            var dlg = new OpenFileDialog() {Filter = "Текстовые документы|*txt"};
            list.Clear();
 
            if (dlg.ShowDialog() == DialogResult.OK)
                using (var sr = new StreamReader(dlg.FileName))
                while (!sr.EndOfStream)
                {
                    var lineParts = sr.ReadLine().Split(' ');
                    list.Add(new App(lineParts[1], int.Parse(lineParts[0])));
                }
        }
 
        private void UpdateInterface()
        {
            listBox1.DataSource = list;
        }
    }
 
    class App
    {
        //public int ID { get; set; }
        public string Name { get; set; }
        public int Kol { get; set; }
 
        public App(string name, int kol)
        {
            //ID = id;
            Name = name;
            Kol = kol;
        }
 
        public override string ToString()
        {
            return "Application: " + Name + " " + Kol;
        }
    }
 
    class Apps : List<App>
    {
        public App ByName(string name)
        {
            return this.FirstOrDefault(a => a.Name == name);
        }
 
        public Apps()
        {
        }
 
        public Apps(IEnumerable<App> list)  : base(list)
        {   
        }
 
        public Apps AggregateAndSort()
        {
            return new Apps(this.GroupBy(a => a.Name).Select(group => new App(group.Key, group.Sum(a => a.Kol))).OrderBy(a => -a.Kol));            
        }
    }
}
1
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 11
26.05.2015, 12:27  [ТС]
Спасибо огромное!

Добавлено через 10 минут
Если тебе не сложно, не мог бы ты расписать вот эти две строчки.
C#
1
return this.FirstOrDefault(a => a.Name == name);
C#
1
return new Apps(this.GroupBy(a => a.Name).Select(group => new App(group.Key, group.Sum(a => a.Kol))).OrderBy(a => -a.Kol));
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
26.05.2015, 12:54
Цитата Сообщение от SlimWeezy Посмотреть сообщение
Если тебе не сложно, не мог бы ты расписать вот эти две строчки.
Это LINQ.
Я не могу объснить что это в трех строчках поста. Смотрите MSDN:
https://msdn.microsoft.com/ru-... 10%29.aspx
https://msdn.microsoft.com/ru-... .110).aspx
https://msdn.microsoft.com/ru-... .110).aspx
и т.д.

Конкретно это строчка:
C#
1
FirstOrDefault(a => a.Name == name);
Находит первый элемент списка, в котором Name равно name и возвращает его, либо возвращает null, если не найдено.
0
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 11
26.05.2015, 13:09  [ТС]
Цитата Сообщение от Storm23 Посмотреть сообщение
Конкретно это строчка:
Код C#
1
FirstOrDefault(a => a.Name == name);
Находит первый элемент списка, в котором Name равно name и возвращает его, либо возвращает null, если не найдено.
Спасибо еще раз за ответ, но функция ByName даже нигде не используется.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
26.05.2015, 13:27
Цитата Сообщение от SlimWeezy Посмотреть сообщение
Спасибо еще раз за ответ, но функция ByName даже нигде не используется.
Метод ByName был в вашем исходном коде. Я просто его переписал более компактно. Зачем он вам - я не знаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.05.2015, 13:27
Помогаю со студенческими работами здесь

Посчитать, сколько раз каждая буква встречается в файле и вывести данные в порядке убывания
с++: есть файл со словами посчитать, сколько раз каждая буква встречается в файле вывести на экран в виде &quot;буква - ее...

Посчитать сумму столбцов двухмерного массива и вывести сумму каждого столбца в одномерный массив
Посчитать сумму столбцов двухмерного массива и вывести сумму каждого столбца в одномерный массив. Мне считает сумму первого столбца и...

Вывести в порядке убывания все числа в диапазоне от 150 до 50. Найти сумму всех чисел, кратных 6
Решить задачу с использованием цикла. Вывести в порядке убывания все числа в диапазоне от 150 до 50. Найти сумму всех чисел, кратных 6.

Посчитать и вывести в таблицу сумму всех элементов каждого столбца
У нас есть таблица StringGrid1 заполненная случайными числами. Количество строк и столбцов задается пользователем. Нужно посчитать и...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
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, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru