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

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

19.05.2015, 15:49. Показов 775. Ответов 7
Метки нет (Все метки)

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

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

Если кому-то не сложно, дополните пожалуйста мой код.


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
class App
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Kol { get; set; }
 
        public App(int id, string kol, int zp)
        {
            ID = id;
            Name = name;
            Kol = kol;
        }
    }
using System.IO;
 
namespace ClassFromFile
{
    public partial class Form1 : Form
    {
        List<App> appList;
        public Form1()
        {
            InitializeComponent();
            appList = new List<App>();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            using (StreamReader sr = new StreamReader("apps.txt",Encoding.Default))
            {
                while (!sr.EndOfStream)
                {
                    string currentworker = sr.ReadLine();
                    int id,kol;
                    
                    if((int.TryParse(currentapp.Split(new char[] { ' ' })[0],out id))&&(int.TryParse(currentapp.Split(new char[] { ' ' })[2],out kol)
                        &&!string.IsNullOrWhiteSpace(currentapp.Split(new char[] { ' ' })[1])))
                        appList.Add(new App(id, currentapp.Split(new char[] { ' ' })[1],kol));
                    else
                    {
                        MessageBox.Show("Неверный формат файла!");
                        return;
                    }
                }
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            var sorted = from list in appList orderby list.Kol descending select list;//сортируем
 
            using (StreamWriter sw = new StreamWriter("sorted.txt"))            
                foreach (App w in sorted)
                    sw.WriteLine(w.ID + " " + w.Name + " " + w.Kol);            
        }
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2015, 15:49
Ответы с готовыми решениями:

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

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

[C++ и ASM] В матрице каждый чётный столбец расположить в порядке убывания, а каждый нечётный в порядке возрастания
Составить программу, состоящую из двух модулей: 1. В модуле на языке С++ ввести двумерный массив и вывести полученные результаты; 2. В...

7
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,554
19.05.2015, 17:43
а где у тебя происходит сам подсчет?? либо я слепой либо я вижу только чтения данных из файла и заполнение объектами листа appList и вывод всего этого на экран))
0
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 11
19.05.2015, 21:05  [ТС]
Вот сам подсчет я и не могу написать, поэтому и попросил помочь.
0
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,554
20.05.2015, 10:08
ну так а что там сложного? проходишь по всем объектам листа и суммируешь то, что тебе нужно:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private int GetSumm()
{
 
int result = 0;
 
foreach (var item in appList)
{
result = result + item.Kol;
}
 
return result;
 
}
0
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 11
20.05.2015, 11:22  [ТС]
Да, но получается, что мы считаем общее количество билетов, а не количество билетов для каждого спектакля.
0
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,554
20.05.2015, 12:07
давай по порядку, если я правильно понял - класс app представляет 1 спектакль, аттрибут Name это имя спектакля и kol количество билетов для этого спектакля. т.е. если я правильно понимаю тебе нужно примерно следущее:

C#
1
2
3
4
5
List<App> result = appList.GroupBy(l => l.Name).Select(cl => new App
            {
                Name = cl.First().Name,
                Kol = cl.Sum(c => c.Kol)
            }).ToList();
а дальше лист можешь выводить в консоли
0
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 11
20.05.2015, 13:52  [ТС]
Класс app представляет 1 заявку (то есть может быть несколько заявок на 1 спектакль). Name - название спектакля в этой заявке, kol - количество заказанных билетов в заявке для спектакля. Извиняюсь, что не расписал все подробно с самого начала.
0
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,554
20.05.2015, 15:08
SlimWeezy, сути это не меняет, код, написанный мною выше группирует объекты по атрибуту Name и считает для всех строк каждой группировки суммы атрибута kol. т.е. именно то, что тебе нужно

Добавлено через 12 минут
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
Apps sp1 = new Apps() {Kol = 10, Name = "sp1"};
            Apps sp2 = new Apps() { Kol = 10, Name = "sp1" };
            Apps sp3 = new Apps() { Kol = 10, Name = "sp2" };
            Apps sp4 = new Apps() { Kol = 10, Name = "sp1" };
            Apps sp5 = new Apps() { Kol = 10, Name = "sp3" };
            Apps sp6 = new Apps() { Kol = 10, Name = "sp1" };
            Apps sp7 = new Apps() { Kol = 10, Name = "sp4" };
            Apps sp8 = new Apps() { Kol = 10, Name = "sp3" };
            Apps sp9 = new Apps() { Kol = 10, Name = "sp1" };
            Apps sp10 = new Apps() { Kol = 10, Name = "sp2" };
 
            List<Apps> appList = new List<Apps>();
            appList.Add(sp1);
            appList.Add(sp2);
            appList.Add(sp3);
            appList.Add(sp4);
            appList.Add(sp5);
            appList.Add(sp6);
            appList.Add(sp7);
            appList.Add(sp8);
            appList.Add(sp9);
            appList.Add(sp10);
 
            List<Apps> result = appList.GroupBy(l => l.Name).Select(cl => new Apps
            {
                Name = cl.First().Name,
                Kol = cl.Sum(c => c.Kol)
            }).OrderByDescending(v => v.Name).ToList();
 
            string str = "";
 
            foreach (var item in result)
            {
                str = str + "Name: " + item.Name + " ; Kol: " + item.Kol.ToString() + "\n";
            }
 
            MsgBox.Show(str); 
 
//result:   Name: sp4 ; Kol:10
//            Name: sp3 ; Kol:20
//            Name: sp2 ; Kol:20
//            Name: sp2 ; Kol:20


это ты имел в виду?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2015, 15:08
Помогаю со студенческими работами здесь

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

Подсчитать баллы за тест и вывести в порядке убывания
Здравствуйте! Необходимо достать из файла студентов (в файле они в n-строк в формате &quot;Морозов ++++++++++----+++&quot;). Плюсы и минусы...

Вывести количество выпущенных изделий по каждому наименованию в порядке убывания количества
Различные цеха завода выпускают продукцию нескольких наименований.Сведения о выпущенной продукции включают : наименование, количество ,...

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

Вывести в порядке убывания все целые числа, расположенные между A и B, и их количество
Здравствуйте, не могу додуматься как решить задачу: Даны два целых числа A и B (A &lt; B). Вывести в порядке убывания все целые числа,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
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