Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 2
Регистрация: 14.10.2018
Сообщений: 24

Упростить код для задачи в ЕГЭ

02.03.2019, 20:04. Показов 912. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В ювелирных магазинах продаются изделия четырёх категорий A, B, С и D. В городе N был проведён мониторинг цен ювелирных изделий в различных магазинах. Напишите эффективную по времени работы и по используемой памяти программу, которая будет определять для каждой категории ювелирных изделий, сколько магазинов продают его дороже всего.

На вход программе в первой строке подаётся число данных N о стоимости ювелирных изделий. В каждой из последующих N строк находится информация в следующем формате: <Компания> <Магазин> <Категория> <Цена>, где <Компания> — строка, состоящая не более чем из 20 символов без пробелов, <Магазин> — строка, состоящая не более чем из 20 символов без пробелов, <Категория> — одна из букв — A, B, C или D, <Цена> — целое число в диапазоне от 2000 до 700 000, обозначающее стоимость одного изделия в рублях. <Компания> и <Магазин>, <Магазин> и <Категория>, а также <Категория> и <Цена> разделены ровно одним пробелом.

Пример входной строки:

Кристалл Адамас C 30000

Кристалл Блеск С 30000

Красота Элегант А 5000

Красота Бриллиант А 5000

Шик классика А 4000

Кристалл Адамас В 10000

Программа должна выводить через пробел 4 числа — количество магазинов, продающих дороже всего изделия категории A, B, C и D соответственно. Если ювелирное изделие какой-либо категории нигде не продавалось, то следует вывести 0.

Пример выходных данных:
2 1 2 0
Моя программа выводит все верно, но код уж слишком громоздкий, чтобы вручную писать на листке. Плюс ко всему я еще ввод данных не описал, а просто значения для проверки подставил.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {               
            List<int> rem = new List<int>();
            List<int> price = new List<int>() { 30000, 30000, 5000, 5000, 4000, 10000 };
            List<char> category = new List<char>() { 'C', 'C', 'A', 'A', 'A', 'B', };
            int[] countABCD = new int[4];
            for (int i = 0; i < category.Count; i++)
            {
                if (category[i] == 'A')
                {
                    rem.Add(price[i]);
                }
            }
            for (int i = 0; i < rem.Count; i++)
            {
                if (rem.Max() == rem[i])
                {
                    countABCD[0]++;
                }
            }
            rem.Clear();
            for (int i = 0; i < category.Count; i++)
            {
                if (category[i] == 'B')
                {
                    rem.Add(price[i]);
                }
            }
            for (int i = 0; i < rem.Count; i++)
            {
                if (rem.Max() == rem[i])
                {
                    countABCD[1]++;
                }
            }
            rem.Clear();
            for (int i = 0; i < category.Count; i++)
            {
                if (category[i] == 'C')
                {
                    rem.Add(price[i]);
                }
            }
            for (int i = 0; i < rem.Count; i++)
            {
                if (rem.Max() == rem[i])
                {
                    countABCD[2]++;
                }
            }
            rem.Clear();
            for (int i = 0; i < category.Count; i++)
            {
                if (category[i] == 'D')
                {
                    rem.Add(price[i]);
                }
            }
            for (int i = 0; i < rem.Count; i++)
            {
                if (rem.Max() == rem[i])
                {
                    countABCD[3]++;
                }
            }
            for (int i = 0; i < countABCD.Length; i++)
            {
                Console.Write(countABCD[i]+" ");
            }
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2019, 20:04
Ответы с готовыми решениями:

Подправьте пожалуйста код, с задачи ЕГЭ по информатике
Помогите пожалуйста, написал программу, для решения задания С4. Но когда я пытаюсь вводить строку, консоль просто закрывается. Если надо,...

Упростить код для поиска в ListBox
Доброго времени суток, уважаемые форумчане Написал код для поля поиска в ListBox. Возможен ли вариант его упростить? Для понимания строки...

Как можно упростить код для обедающих философов и добавить описание действия для каждого философа?
import java.util.Random; import java.util.concurrent.Semaphore; import java.util.concurrent.atomic.AtomicInteger; public class...

2
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
02.03.2019, 20:48
Цитата Сообщение от Daniil_123 Посмотреть сообщение
Моя программа выводит все верно, но код уж слишком громоздкий, чтобы вручную писать на листке. Плюс ко всему я еще ввод данных не описал, а просто значения для проверки подставил.
Ввод данных и проверка их корректности (если нужна) займёт ещё больше строк кода ведь.
0
 Аватар для агерон
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
03.03.2019, 05:45
Держи студент ....
P. S. Умение решать олимпиадные задачи.... никому не нужно кроме самого олимпиадника :-D

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
using System;
using System.IO;
using System.Linq;
 
namespace thread2412144
{
    public enum EJewelCategory
    {
        A, B, C, D
    }
 
    public class Jewel
    {
        public Jewel(string data)
        {
            var info = data.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            Company = info[0];
            Score = info[1];
            Category = (EJewelCategory)Enum.Parse(typeof(EJewelCategory), info[2]);
            Price = Convert.ToDecimal(info[3]);
        }
 
        public string Company { get; }
        public string Score { get; }
        public EJewelCategory Category { get; }
        public decimal Price { get; }
 
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            var text = File.ReadAllText("Data/info.txt");
            var lines = text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            var jewels = lines.Select(data => new Jewel(data)).ToList();
            var results = jewels.GroupBy(key => key.Category).ToList().Select(category =>
            {
                var max = category.Max(key => key.Price);
                var count = category.Count(key => key.Price == max);
                return new {Category = category.Key, Count = count};
            }).ToList();
            var answerValues = Enum.GetValues(typeof(EJewelCategory)).OfType<EJewelCategory>().Select(category =>
            {
                if (results.All(result => result.Category != category)) return "0";
                var element = results.First(result => result.Category == category);
                return $"{element.Count}";
            }).ToArray();
            var answer = string.Join(" ", answerValues);
            File.WriteAllText("Data/result.txt", answer);
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.03.2019, 05:45
Помогаю со студенческими работами здесь

Решение задачи С4 по ЕГЭ
Здравствуйте дорогие форумчане! Помогите мне пожалуйста решить эту задачу. Мне нужно решение для примера. С4. Трапеция ABCD с...

Задачи ЕГЭ по информатике
Друзья! Буду здесь разбирать задачи по информатике. ++++++++++++++++++++++++++++++++++++++++++++++++++= А у меня 300 никак не...

задачи части С - ЕГЭ
Помогите решить задачи из части С! 1. В параллелепипеде АВСТА1В1С1Т1 с рёбрами АВ = 1 , АТ = 2 и ТТ1 = 2 найдите...

Можно ли упростить код верстки для письма?
HTML код для письма имеет вид: &lt;div style=&quot;background-color: #FC9; padding:2%;&quot;&gt; &lt;p style=&quot;font-family:Arial; font-size:12px;...

Как упростить однотипный код для нескольких Button
Имеется несколько Button'ов, при клике они меняют цвет как можно проще прописать такую функцию? чтобы каждый раз вот такую туфту не...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru