16 / 16 / 4
Регистрация: 01.03.2013
Сообщений: 139
Записей в блоге: 1
1

ЕГЭ по информатике. Пассажиры и камера хранения багажа

01.04.2013, 19:20. Показов 9487. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста решить задачу.
Условие задачи
На вход программе подаются сведения о пассажирах, желающих сдать свой
багаж в камеру хранения на заранее известное время до полуночи. В первой
строке сообщается число пассажиров N, которое не меньше 3, но не
превосходит 1000; во второй строке – количество ячеек в камере хранения K,
которое не меньше 10, но не превосходит 1000. Каждая из следующих N
строк имеет следующий формат:
<Фамилия> <время сдачи багажа> <время освобождения ячейки>,
где <Фамилия> – строка, состоящая не более чем из 20 непробельных
символов; <время сдачи багажа> – через двоеточие два целых числа,
соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до
59 – ровно 2 символа); <время освобождения ячейки> имеет тот же формат.
<Фамилия> и <время сдачи багажа>, а также <время сдачи багажа> и <время
освобождения ячейки> разделены одним пробелом. Время освобождения
больше времени сдачи.
Сведения отсортированы в порядке времени сдачи багажа. Каждому из
пассажиров в камере хранения выделяется свободная ячейка с минимальным
номером. Если в момент сдачи багажа свободных ячеек нет, то пассажир
уходит, не дожидаясь освобождения одной из них.
Требуется написать программу (укажите используемую версию языка
программирования, например Borland Pascal 7.0), которая будет выводить на
экран для каждого пассажира номер ему предоставленной ячейки (можно
сразу после ввода данных очередного пассажира). Если ячейка пассажиру не
предоставлена, то его фамилия не печатается.
Пример входных данных:
3
10
Иванов 09:45 12:00
Петров 10:00 11:00
Сидоров 12:00 13:12
Результат работыпрограммы на этих входных данных:
Иванов 1
Петров 2
Сидоров 1

П.С. Может это не правда, но где-то в нете я вычитал, что можно использовать DateTime, правда ли это?
П.П.С. Заранее спасибо за ответ
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2013, 19:20
Ответы с готовыми решениями:

В камере хранения ручного багажа 80% чемоданов
В камере хранения ручного багажа 80% всех вещей составляют чемоданы. Медведь Проша забрался в эту...

ЕГЭ по информатике
Объясните, пожалуйста, что означает знак &quot;V&quot; и перевернутая &quot;V&quot; и знак &quot;_&gt;&quot; в следующем задании: ...

ЕГЭ по информатике
Извините если не в ту тему написал, не могу понять куда лучше это написать. На каком языке...

C4 ЕГЭ по информатике
Несколько дней пытаюсь понять 1)зачем второй раз дают одно и тоже условие `else if...

39
Эксперт .NET
17684 / 12870 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
01.04.2013, 20:33 2
Вариант "в лоб":
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
class Program
{
    static void Main()
    {
        int passengerCount = int.Parse(Console.ReadLine());
        int cellCount = int.Parse(Console.ReadLine());
 
        var cells = new List<Passenger>(cellCount);
 
        while (passengerCount --> 0)
        {
            var rawData = Console.ReadLine().Split(' ');
            var passenger = new Passenger
            {
                Name = rawData[0],
                CheckIn = TimeSpan.Parse(rawData[1]),
                CheckOut = TimeSpan.Parse(rawData[2])
            };
 
            int i = 0;
            while (i < cells.Count && cells[i].CheckOut > passenger.CheckIn) i++;
            if (i < cellCount)
            {
                if (i < cells.Count)
                    cells[i] = passenger;
                else
                    cells.Add(passenger);
                Console.WriteLine("{0} {1}", passenger.Name, i + 1);
            }
        }
    }
 
    class Passenger
    {
        public string Name { get; set; }
        public TimeSpan CheckIn { get; set; }
        public TimeSpan CheckOut { get; set; }
    }
}
1
16 / 16 / 4
Регистрация: 01.03.2013
Сообщений: 139
Записей в блоге: 1
02.04.2013, 05:40  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение
Вариант "в лоб":
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
class Program
{
    static void Main()
    {
        int passengerCount = int.Parse(Console.ReadLine());
        int cellCount = int.Parse(Console.ReadLine());
 
        var cells = new List<Passenger>(cellCount);
 
        while (passengerCount --> 0)
        {
            var rawData = Console.ReadLine().Split(' ');
            var passenger = new Passenger
            {
                Name = rawData[0],
                CheckIn = TimeSpan.Parse(rawData[1]),
                CheckOut = TimeSpan.Parse(rawData[2])
            };
 
            int i = 0;
            while (i < cells.Count && cells[i].CheckOut > passenger.CheckIn) i++;
            if (i < cellCount)
            {
                if (i < cells.Count)
                    cells[i] = passenger;
                else
                    cells.Add(passenger);
                Console.WriteLine("{0} {1}", passenger.Name, i + 1);
            }
        }
    }
 
    class Passenger
    {
        public string Name { get; set; }
        public TimeSpan CheckIn { get; set; }
        public TimeSpan CheckOut { get; set; }
    }
}
А не могли бы вы разъяснить код пожалуйста?
0
Заблокирован
02.04.2013, 08:40 4
Цитата Сообщение от kolorotur Посмотреть сообщение
passengerCount --> 0
помнится, однажды я впал в ступор после такой записи
1
Эксперт .NET
17684 / 12870 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
02.04.2013, 10:45 5
Цитата Сообщение от Айрат95 Посмотреть сообщение
А не могли бы вы разъяснить код пожалуйста?
А вы попробуйте для начала сами откомментировать происходящее, а я поправлю, если что не так.
Иначе как учиться-то?
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
02.04.2013, 16:23 6
Цитата Сообщение от kolorotur Посмотреть сообщение
passengerCount --> 0
Ни разу такого не видел, но в ступор не впал.
Цитата Сообщение от Айрат95 Посмотреть сообщение
Может это не правда, но где-то в нете я вычитал, что можно использовать DateTime, правда ли это?
Это страшная тайна, больше никому не рассказывайте
Цитата Сообщение от Айрат95 Посмотреть сообщение
Требуется написать программу (укажите используемую версию языка
программирования, например Borland Pascal 7.0)
А супер-профессора, проверяющие ЕГЭ поймут код на C#, а то всё Pascal да Basic?!
0
16 / 16 / 4
Регистрация: 01.03.2013
Сообщений: 139
Записей в блоге: 1
02.04.2013, 18:50  [ТС] 7
Цитата Сообщение от loro Посмотреть сообщение
помнится, однажды я впал в ступор после такой записи
А можете объяснить что эта запись обозначает?
0
Заблокирован
02.04.2013, 19:19 8
Цитата Сообщение от Айрат95 Посмотреть сообщение
А можете объяснить что эта запись обозначает?
Да, что разъяснять. Он не там пробел поставил, наверно умышленно, ибо компилятор его ставит там где нужно. проверка потом декремент.
0
16 / 16 / 4
Регистрация: 01.03.2013
Сообщений: 139
Записей в блоге: 1
02.04.2013, 20:23  [ТС] 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
32
33
34
35
36
static void Main()
        {
            int passengerCount = int.Parse(Console.ReadLine()); ///Считывание количества пассажиров. Можно ли использовать Convert.ToInt32?
        int cellCount = int.Parse(Console.ReadLine());///Считывание количества багажей
 
        var cells = new List<Passenger>(cellCount);///Лист с объемом в количества багажей
 
        while (passengerCount --> 0) ///Я вот это до сих пор не понял...
        {
            var rawData = Console.ReadLine().Split(' '); ///Считывание пассажира. Сплит служит для разделения строки на подстроки?
            var passenger = new Passenger ///В классе passanger создается новый элемент
            {
                Name = rawData[0],
                CheckIn = TimeSpan.Parse(rawData[1]),
                CheckOut = TimeSpan.Parse(rawData[2])///а что озночает вот эти строки, именно не понимаю вот это rawData[], номера обозначают номер подстроки?
            };
 
            int i = 0;
            while (i < cells.Count && cells[i].CheckOut > passenger.CheckIn) i++;///Вот это я не понял...
            if (i < cellCount)///Проверка есть ли свободные багажи
            {
                if (i < cells.Count)///И вот это тоже надо объяснить
                    cells[i] = passenger; ///Присваивает номеру багажа пассажира
                else
                    cells.Add(passenger);
                Console.WriteLine("{0} {1}", passenger.Name, i + 1); ///Вывод на экран пассажира
            }
        }
    }
 
    class Passenger
    {
        public string Name { get; set; } 
        public TimeSpan CheckIn { get; set; }
        public TimeSpan CheckOut { get; set; }
    }
0
Заблокирован
02.04.2013, 21:05 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
   //Условие
            List<Object[]> col = new List<Object[]>(); //Багаж
            int countApple = int.Parse(Console.ReadLine()); //Число людей
            if (countApple < 3 || countApple > 1000) return;
            int countCells = int.Parse(Console.ReadLine()); //Число ячеек багажа
            if (countCells < 10 || countCells > 1000) return;
            String[] data = null;
            TimeSpan time1, time2;
            for (int apple = 0; apple < countApple && apple < countCells; apple++)
            {
                data = Console.ReadLine().Split(' ');
                if (data[0].Length > 20 || data[0].Contains(' ')) return;
                time1 = TimeSpan.Parse(data[1]);
                time2 = TimeSpan.Parse(data[2]);
                if (time1 > time2) return;
                col.Add(new Object[3] { data[0], time1, time2 });
            }
            //Результат
            int numberCell = 1;
            //Сведения отсортированы в порядке времени сдачи багажа и номера выданы по времени прихода
            foreach (var elem in from elem in col
                                  orderby (TimeSpan)elem[1] ascending
                                  select elem)
            {
                Console.WriteLine(elem[0].ToString() + " " + numberCell++);
            };
            Console.ReadLine();
0
Эксперт .NET
17684 / 12870 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
02.04.2013, 23:05 11
Urety, у вас же не учитываются выбывающие пассажиры и приходящие на их место новые.
0
Заблокирован
02.04.2013, 23:12 12
Цитата Сообщение от kolorotur Посмотреть сообщение
Urety, у вас же не учитываются выбывающие пассажиры и приходящие на их место новые.
Они и не должны учитываться, согласно условия задачи.
...
У вас нет учитываются требования к данным задачи.
Этот код
C#
1
2
if (i < cellCount)///Проверка есть ли свободные багажи
            {
будет выполнен всегда, зачем проверять размер очереди, если он задач изначально, а также каждый новый будет затирать предыдущего. Дальше не стал смотреть.
0
Эксперт .NET
17684 / 12870 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
03.04.2013, 00:11 13
Цитата Сообщение от Urety Посмотреть сообщение
Они и не должны учитываться
Должны, читайте внимательнее условие:

Цитата Сообщение от Айрат95 Посмотреть сообщение
Каждому из
пассажиров в камере хранения выделяется свободная ячейка с минимальным
номером
. Если в момент сдачи багажа свободных ячеек нет, то пассажир
уходит, не дожидаясь освобождения одной из них.
Свободная — это значит еще или уже не занятая. По определению слова "свободная".
И ниже пример правильной отработки:
Цитата Сообщение от Айрат95 Посмотреть сообщение
Пример входных данных:
3
10
Иванов 09:45 12:00
Петров 10:00 11:00
Сидоров 12:00 13:12
Результат работыпрограммы на этих входных данных:
Иванов 1
Петров 2
Сидоров 1
Сидорову выдана первая ячейка (хотя к моменту его появления есть еще 8 свободных), потому что к тому врмени Иванов и Петров уже выбыли, но у Иванова номер ячейки меньший, не смотря на то, что Петров выбыл раньше.
Ваш код, похоже, выведет
Иванов 1
Петров 2
Сидоров 3
Но это глядя на код, компилировать и проверять не пробовал — каюсь.

Цитата Сообщение от Urety Посмотреть сообщение
У вас нет учитываются требования к данным задачи.
Какие именно?
Укажите, я исправлю.

Цитата Сообщение от Urety Посмотреть сообщение
Этот код будет выполнен всегда
Не всегда, а только при таких входящих данных, когда для очередного пассажира нет свободных ячеек.
По условию.

Цитата Сообщение от Urety Посмотреть сообщение
зачем проверять размер очереди, если он задач изначально, а также каждый новый будет затирать предыдущего.
1. Проверяется не размер очереди, а индекс первой ячейки, подходящей данному пассажиру: еще или уже свободной.
Если индекс больше или равен максимальному количеству ячеек, то мест в камере хранения нет — пассажир идет лесом. Опять же, по условию.
2. Не обязательно каждый новый будет затирать предыдущего. Только в том случае, если время выбытия предыдущего меньше времени появления текущего.

Цитата Сообщение от Urety Посмотреть сообщение
Дальше не стал смотреть.
Зря.
Может где-то настоящий косяк вкрался.
0
34 / 34 / 16
Регистрация: 07.04.2011
Сообщений: 103
03.04.2013, 03:57 14
все соль в том, что максимальный балл дают за "оптимальное" решение, которым всегда является то решение, в котором вводимые данные не хранятся в массиве.
1
Эксперт .NET
17684 / 12870 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
03.04.2013, 10:47 15
Цитата Сообщение от Nikolay_W Посмотреть сообщение
все соль в том, что максимальный балл дают за "оптимальное" решение, которым всегда является то решение, в котором вводимые данные не хранятся в массиве.
Согласен, потому и назвал свое решение "в лоб".
Честно говоря, сходу не могу придумать, как без массива учитывать до 1000 входящих данных с разными значениями.

А как бы вы решили эту задачу?

P.S.
Заметил в своем варианте излишек инструкций: если заменить цикл на массив, то будет одним условием меньше:
C#
1
2
3
4
5
6
7
8
var cells = new Passenger[cellCount];
...
while (i < cells.Length && cells[i].CheckOut > passenger.CheckIn) i++;
if (i < cells.Length)
{
    cells[i] = passenger;
    Console.WriteLine("{0} {1}", passenger.Name, i + 1);
}
Список там вообще ни к месту.
0
Заблокирован
03.04.2013, 11:58 16
Цитата Сообщение от Nikolay_W Посмотреть сообщение
все соль в том, что максимальный балл дают за "оптимальное" решение, которым всегда является то решение, в котором вводимые данные не хранятся в массиве.
Не дури. Ниже приведено нормальное решение, согласно требования.
Если, что не нравится, скажешь пусть засунут такое условие задачи себе в зад. Ибо его можно понять с десятка разных сторон.
Например у тебя есть данные на входе:
x 12:05 14:20 xx 8:05 11:20 как ты узнаешь, что следующее время сдачи багажа будет всегда больше введенного предыдущего, без массива, а ячейки уже выделены.

(вырезано)

Цитата Сообщение от kolorotur Посмотреть сообщение
Какие именно?
Укажите, я исправлю.
Читай условие на допустимые входные данные.

Цитата Сообщение от kolorotur Посмотреть сообщение
Не всегда, а только при таких входящих данных, когда для очередного пассажира нет свободных ячеек.
По условию.
Да, я посмотрел внимательней.

Цитата Сообщение от kolorotur Посмотреть сообщение
Зря.
Может где-то настоящий косяк вкрался.
Я ничего не должен. Хочешь найти косяк - смотри сам.
Цитата Сообщение от kolorotur Посмотреть сообщение
1. Проверяется не размер очереди, а индекс первой ячейки, подходящей данному пассажиру: еще или уже свободной.
Если индекс больше или равен максимальному количеству ячеек, то мест в камере хранения нет — пассажир идет лесом. Опять же, по условию.
2. Не обязательно каждый новый будет затирать предыдущего. Только в том случае, если время выбытия предыдущего меньше времени появления текущего.
Не надо разжевывать на пальцах, не кругом идиоты.
У вас
1 Неправильный вывод - сразу выводит ячейку, хотя в условии сказано, что сначала вводятся входные данные, а потом результат.
2 Нет проверок допустимых значений на входные данные, согласно условия
3 Если ввести такие данные: x 12:05 14:20 xx 8:05 11:20 , то программа выделит неправильно ячейки.
4 Введенные данные не сортируются в порядке даты поступления багажа

Мое решение:
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
            //Условие
            int countApple = int.Parse(Console.ReadLine());
            if (countApple < 3 || countApple > 1000) return;
            int countCells = int.Parse(Console.ReadLine());
            if (countCells < 10 || countCells > 1000) return;
            Tuple<String, TimeSpan, TimeSpan>[] col = new Tuple<string, TimeSpan, TimeSpan>[countApple];
            Tuple<String, TimeSpan, TimeSpan>[] cells = new Tuple<string, TimeSpan, TimeSpan>[countCells];
 
            //Массив начальных данных
            for (int apple = 0; apple < countApple; apple++)
            {
                String[] data = Console.ReadLine().Split(' ');
                if (data[0].Length > 20 || data[0].Contains(' ')) return;
                TimeSpan time1 = TimeSpan.Parse(data[1]);
                TimeSpan time2 = TimeSpan.Parse(data[2]);
                if (time1 > time2 || (time1 >= TimeSpan.Parse("00:00") && time1 < TimeSpan.Parse("8:00"))) return;
                col[apple] = Tuple.Create(data[0], time1, time2);
            }
 
            //Упорядочить по времени прибытия и положить в ячейки
            foreach (var elem in from elem in col
                                 orderby elem.Item2
                                 select elem)
            {
                for (int i = 0; i < cells.Length; i++)
                {
                    if (cells[i] == null || cells[i].Item3 < elem.Item2)
                    {
                        cells[i] = new Tuple<string, TimeSpan, TimeSpan>(elem.Item1, elem.Item2, elem.Item3);
                        Console.WriteLine(elem.Item1 + " " + (i + 1));
                        break;
                    }
                }
            };
            Console.ReadLine();
0
Эксперт .NET
17684 / 12870 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
03.04.2013, 13:00 17
(вырезано)

Цитата Сообщение от Urety Посмотреть сообщение
Читай условие на допустимые входные данные.
Это не условие. Это спецификация входящих данных.

Цитата Сообщение от Urety Посмотреть сообщение
1 Неправильный вывод - сразу выводит ячейку, хотя в условии сказано, что сначала вводятся входные данные, а потом результат.
Такие приложения тестируются скриптом:
Bash
1
app.exe < input.txt | validator.exe
Там и не нужно ждать полного ввода данных.
А если доводилось принимать участие в олимпиадах по программированию, так там это и вовсе противопоказано (см. время выполнения). Ноги задач для ЕГЭ растут именно из олимпиадных, разве что они проще.
Ну, это, конечно, если не читать требования к программе (вы ведь их не читали, правда?):
Цитата Сообщение от Айрат95 Посмотреть сообщение
Требуется написать программу (укажите используемую версию языка
программирования, например Borland Pascal 7.0), которая будет выводить на
экран для каждого пассажира номер ему предоставленной ячейки (можно
сразу после ввода данных очередного пассажира
).
Цитата Сообщение от Urety Посмотреть сообщение
2 Нет проверок допустимых значений на входные данные, согласно условия
Это не условие. Условие — последний абзац.
И проверки там не нужны, т.к. косые данные скрипт скармливать не будет априори — на то и спецификация ввода дана изначально.

Цитата Сообщение от Urety Посмотреть сообщение
3 Если ввести такие данные: x 12:05 14:20 xx 8:05 11:20 , то программа выделит неправильно ячейки.
Мимо, т.к. такого ввода не может быть по условию:
Цитата Сообщение от Айрат95 Посмотреть сообщение
Сведения отсортированы в порядке времени сдачи багажа.
Читаем внимательнее.

Цитата Сообщение от Urety Посмотреть сообщение
4 Введенные данные не сортируются в порядке даты поступления багажа
Опять мимо — это спецификация ввода, а не вывода.

Спецификация приложения идет следующим абзацем (начинается со слов "Требуется написать программу" — для непонятливых):
Цитата Сообщение от Айрат95 Посмотреть сообщение
Требуется написать программу (укажите используемую версию языка
программирования, например Borland Pascal 7.0), которая будет выводить на
экран для каждого пассажира номер ему предоставленной ячейки (можно
сразу после ввода данных очередного пассажира). Если ячейка пассажиру не
предоставлена, то его фамилия не печатается.
Рекомендую закрепить навыки работы с документацией.

Ну и ваш вариант опять выдает неправильный ответ для данных, приведенных в примере.
0
Заблокирован
03.04.2013, 15:47 18
(вырезано)
Я не понял, это ты мне должен разъяснять условие задачи или как минимум автор этой темы? Есть условие, а его объясняешь ты, с какой стати, если ты не автор этой задачи.

Цитата Сообщение от kolorotur Посмотреть сообщение
Это не условие. Это спецификация входящих данных.
Аналогично, в условии написано про условия входящих данных, пришел Дядя Вася и сказал, - "Та то бред все, то не условие, а спецификация и соблюдать ее не надо, а делать надо через скрипт, хоть там так и не написано, но я так сказал".
Мне плевать что ты сказал.

Цитата Сообщение от kolorotur Посмотреть сообщение
Такие приложения тестируются скриптом:
Bash
1
app.exe < input.txt | validator.exe
Там и не нужно ждать полного ввода данных.
А если доводилось принимать участие в олимпиадах по программированию, так там это и вовсе противопоказано (см. время выполнения). Ноги задач для ЕГЭ растут именно из олимпиадных, разве что они проще.
Ну, это, конечно, если не читать требования к программе (вы ведь их не читали, правда?):
Где в условии упоминание про скрипт и отдельные .exe и .txt для проверки?
Остальное пустой треп, себя превозносящий.

Цитата Сообщение от kolorotur Посмотреть сообщение
Это не условие. Условие — последний абзац.
И проверки там не нужны, т.к. косые данные скрипт скармливать не будет априори — на то и спецификация ввода дана изначально.
Где там упоминание про скрипты неизвестно.
(вырезано) Задачу может пояснить только ее автор.


Цитата Сообщение от kolorotur Посмотреть сообщение
1 Если ввести такие данные: x 12:05 14:20 xx 8:05 11:20 , то программа выделит неправильно ячейки. такого ввода не может быть по условию:
Отчего же. Допустим есть база данных этих строк, она и выдаст то, что у вас быть не может.
Цитата Сообщение от kolorotur Посмотреть сообщение
2 Сведения отсортированы в порядке времени сдачи багажа.
Читаем внимательнее.
Читал, внимательно.
Цитата Сообщение от kolorotur Посмотреть сообщение
Опять мимо — это спецификация ввода, а не вывода.
Ты сказал? Пропускаем мимо ушей.
Цитата Сообщение от kolorotur Посмотреть сообщение
Спецификация приложения идет следующим абзацем (начинается со слов "Требуется написать программу" — для непонятливых):
Аналогично. Если бы имелось ввиду скрипты, валидатор, батники и прочее. То условие бы начиналось со слов "На вход приложения подаются сведения о пассажирах, после предварительной проверки ... валидатором". (вырезано)
Цитата Сообщение от kolorotur Посмотреть сообщение
Ну и ваш вариант опять выдает неправильный ответ для данных, приведенных в примере.
Изменить вместо '<' на '<=' здесь:
C#
1
if (cells[i] == null || cells[i].Item3 < elem.Item2)
0
Эксперт .NET
17684 / 12870 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
03.04.2013, 16:33 19
(вырезано)

Цитата Сообщение от Urety Посмотреть сообщение
Я не понял, это ты мне должен разъяснять условие задачи или как минимум автор этой темы? Есть условие, а его объясняешь ты, с какой стати, если ты не автор этой задачи.
Автор темы тоже не является автором задачи, с какой стати он должен разъяснять?

Цитата Сообщение от Urety Посмотреть сообщение
Аналогично, в условии написано про условия входящих данных
Вот именно, что написано про условия входящих данных, то есть описан формат этих входящих данных.
Более того, если нужно, чтобы приложение проводило валидацию входящих данных, то в требованиях к приложению это всегда указывается: полистайте любой задачник по информатике.
Валидация в подобных задачах может быть, если хочется программисту, но на практике она не нужна, так как входящие для проверки данные всегда следуют указанному формату.
Источник, конечно, не железный — всего лишь личный опыт, но с исключениями из описанного выше я не сталкивался.
В качестве личного опыта можете попробовать порешать подобные задачи на тимусе — там кривые данные никогда на ввод не подаются (если это явно не описано в условии).
Повторюсь, что ноги у задач по ЕГЭ растут из олимпиадных задач по программированию.

Цитата Сообщение от Urety Посмотреть сообщение
Где в условии упоминание про скрипт и отдельные .exe и .txt для проверки?
В условии — нигде, что не отменяет того, что именно так эти задачи проверяются.
Или вы думаете, что сидит китаец и вручную вбивает 1000 строк для проверки программы каждого студента, сверяя результат с листочком?

(вырезано)

Цитата Сообщение от Urety Посмотреть сообщение
Задачу может пояснить только ее автор.
Согласен, ждем пояснения автора.

Цитата Сообщение от Urety Посмотреть сообщение
Отчего же. Допустим есть база данных этих строк, она и выдаст то, что у вас быть не может.
Причем здесь база-то?
В условии русским по белому написано, что входящие данные отсортированы по дате прибытия.
Не важно, откуда эти данные берутся: из базы, из файла скриптом или вручную вбиваются китайцем — это формат входящих данных. Считайте, что контракт.

Цитата Сообщение от Urety Посмотреть сообщение
Если бы имелось ввиду скрипты, валидатор, батники и прочее. То условие бы начиналось со слов "На вход приложения подаются сведения о пассажирах
Так оно ведь так и начинается, нет?
Цитата Сообщение от Айрат95 Посмотреть сообщение
На вход программе подаются сведения о пассажирах
Приложение = программа, не?

Цитата Сообщение от Urety Посмотреть сообщение
после предварительной проверки ... валидатором
Валидатор проверяет выводимые приложением данные на правильность, а не входящие в приложение.
Китаец с листочком — медленный и не надежный метод проверки правильности алгоритма.

Цитата Сообщение от Urety Посмотреть сообщение
Изменить вместо '<' на '<=' здесь:
Так точно, для данных в примере сработает.
Но теперь не понятно вот это условие:
C#
1
(time1 >= TimeSpan.Parse("00:00") && time1 < TimeSpan.Parse("8:00")) return;
Багаж принимается строго после 8 утра?
Вроде как по спецификации — от 00:00 до 23:59 включительно.

На последок еще раз попрошу в дальнейшем воздержаться от хамства — оно не способствует конструктивной беседе.
0
Заблокирован
03.04.2013, 18:20 20
(вырезано)
Цитата Сообщение от kolorotur Посмотреть сообщение
Автор темы тоже не является автором задачи, с какой стати он должен разъяснять?
Автор темы может узнать подробности задания.
Цитата Сообщение от kolorotur Посмотреть сообщение
Вот именно, что написано про условия входящих данных, то есть описан формат этих входящих данных.
Более того, если нужно, чтобы приложение проводило валидацию входящих данных, то в требованиях к приложению это всегда указывается: полистайте любой задачник по информатике.
Валидация в подобных задачах может быть, если хочется программисту, но на практике она не нужна, так как входящие для проверки данные всегда следуют указанному формату.
Источник, конечно, не железный — всего лишь личный опыт, но с исключениями из описанного выше я не сталкивался.
В требованиях к этой задаче валидация отдельно от программы не указывается. Зато требования ко входу да. Чаще всего, это значит проверку сразу в программе и такое не практикуется, как вы пишете. Тем более в школах по информатике.
Цитата Сообщение от kolorotur Посмотреть сообщение
В качестве личного опыта можете попробовать порешать подобные задачи на тимусе — там кривые данные никогда на ввод не подаются (если это явно не описано в условии).
Повторюсь, что ноги у задач по ЕГЭ растут из олимпиадных задач по программированию.
У меня достаточно опыта. Я не телепат. Если что то нужно это должно быть обговорено в задании. В задании это не обговорено, следовательно кроме автора задания никто не знает, что имелось ввиду. То, что вы так считаете, это ваше дело.
Цитата Сообщение от kolorotur Посмотреть сообщение
В условии — нигде, что не отменяет того, что именно так эти задачи проверяются.
Или вы думаете, что сидит китаец и вручную вбивает 1000 строк для проверки программы каждого студента, сверяя результат с листочком?
Ок, хотя жаль — я бы вас многому научил в плане уважительного отношения к собеседнику.
Отменяет. Я не думаю, я читаю условие. Тем более пример, вводимых данных явно не требует 1000 строк. А также вносит еще десятки возможных вариантов решения. Такие задачи (подобно этой), нужно уточнять на месте, сразу после их получения.
Цитата Сообщение от kolorotur Посмотреть сообщение
Согласен, ждем пояснения автора.
Причем здесь база-то?
В условии русским по белому написано, что входящие данные отсортированы по дате прибытия.
Не важно, откуда эти данные берутся: из базы, из файла скриптом или вручную вбиваются китайцем — это формат входящих данных. Считайте, что контракт.
Там написано, что они отсортированы. Где именно не известно, я считаю что в программе. Но даже, если как вы пишете китаец не будет вводить 1000 строк кода, то откуда он их возьмет? правильно из бд, а там они явно не будут получены отсортированными.
Цитата Сообщение от kolorotur Посмотреть сообщение
Так оно ведь так и начинается, нет?
Приложение = программа, не?
Валидатор проверяет выводимые приложением данные на правильность, а не входящие в приложение.
Китаец с листочком — медленный и не надежный метод проверки правильности алгоритма.
Не так начинается. Когда вы запускаете код с параметрами, вы говорите я запустил программу с параметрами или приложение с параметрами? Запустить приложение с параметром сразу подразумевает конкретное однозначное действие.
Если у вас валидатор проверяет вывод, а не ввод, то здесь можно только поставить вопрос о вашей квалификации как программиста...но, мне это не интересно.

Цитата Сообщение от kolorotur Посмотреть сообщение
Так точно, для данных в примере сработает.
Но теперь не понятно вот это условие:
C#
1
(time1 >= TimeSpan.Parse("00:00") && time1 < TimeSpan.Parse("8:00")) return;
Багаж принимается строго после 8 утра?
Вроде как по спецификации — от 00:00 до 23:59 включительно.
А что не понятно? Проверка с 8 до 12 ночи. Все правильно. Смысл писать, сдать багаж до 12 ночи, если не известно со скольки? Если имеется ввиду, как вы говорите, все время, то и условие это не нужно, ибо можно сдавать круглые сутки. Но если есть это условие, то значит должно быть и время с какого происходит прием.

Цитата Сообщение от kolorotur Посмотреть сообщение
На последок еще раз попрошу в дальнейшем воздержаться от хамства — оно не способствует конструктивной беседе.
У нас не конструктивная беседа.
Я говорил раньше, что я не люблю холивары, поэтому если это не последний ответ, то последний будет следующим.
0
03.04.2013, 18:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2013, 18:20
Помогаю со студенческими работами здесь

ЕГЭ по информатике
Всем привет! Я учусь в 10 ом классе, и у меня в школе на уроках информатики мы не заходили дальше...

ЕГЭ по информатике
Здравствуйте! Кто из поситтителей данного форума сдавал в 11 классе информатику в форме ЕГЭ? Дело в...

Егэ по информатике
Как это решать? И как решить проще В8 и быстрей, вместо того, чтобы всё это писать, писать,...

Вычислить объем багажа в кг, доставленного из каждой камеры хранения
Вообщем имеется задача про камеру хранения.Имеем 15камер хранения.В течение недели 5 потребителей...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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