0 / 0 / 1
Регистрация: 25.11.2016
Сообщений: 60
1

Среднегодовая температура

01.05.2017, 11:25. Показов 1479. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Пытаюсь сделать эту задачу:
Кликните здесь для просмотра всего текста
На вход программы подается 366 строк, которые содержат информацию о среднесуточной температуре всех дней 2008 года. Формат каждой из строк следующий: сначала записана дата в виде dd.mm (на запись номера дня и номера месяца в числовом формате отводится строго два символа, день от месяца отделен точкой), затем через пробел записано значение температуры — число со знаком плюс или минус, с точностью до 1 цифры после десятичной точки. Данная информация отсортирована по значению температуры, то есть хронологический порядок нарушен. Требуется написать программу на языке Паскаль или Бейсик, которая будет выводить на экран информацию о месяце (месяцах), среднемесячная температура у которого (которых) наименее отклоняется от среднегодовой. В первой строке вывести среднегодовую температуру. Найденные значения для каждого из месяцев следует выводить в отдельной строке в виде: номер месяца, значение среднемесячной температуры, отклонение от среднегодовой температуры.


Проблема в чтении данных с пробелом. Думал сначала прочитать в массив из двух элементов, применяя Split(), но не получается дальше первый элемент разбить на две части(день(он не важен) и температура).
Подскажите, как это сделать?
C#
1
2
3
4
5
6
7
8
9
10
11
12
            const int count = 366;
            int i, N, p;
            string month;
            char c = ' ';
            int[] months = new int[12];
            for (i = 0; i < 12; i++)
                months[i] = 0;
            for (i = 0; i < count; i++)
            {
                string[] s = Console.ReadLine().Split(' ');
                foreach (int p in s[0])
            }
0
01.05.2017, 11:25
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2017, 11:25
Ответы с готовыми решениями:

Определить, на каком из островов среднегодовая температура максимальна
Задача: Известна среднемесячная температура воздуха на следующих островах Карибского моря: Куба, Тринидад, Ямайка, Гаити. Определить,...

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

В зависимости от значения температуры выдать сообщение: «температура повышена», «температура понижена»
4. Ввести число А, означающее температуру человека. В зависимости от значения температуры выдать сообщение: «температура повышена»,...

4
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17819 / 13927 / 5331
Регистрация: 17.03.2014
Сообщений: 28,516
Записей в блоге: 1
01.05.2017, 16:51 2
Juicer, вот так можно сделать
C#
1
2
3
4
5
6
for (i = 0; i < count; i++)
{
    string[] s = Console.ReadLine().Split(' ');
    double avgDayTemp = double.Parse(s[1]);
    int month = int.Parse(s[0].Split('.')[1]);
}
Или так, пользуясь тем фактом что у строки фиксированный формат:
C#
1
2
3
4
5
6
for (i = 0; i < count; i++)
{
    string s = Console.ReadLine();
    double avgDayTemp = double.Parse(s.Substring(6));
    int month = int.Parse(s.Substring(2,2));
}
1
0 / 0 / 1
Регистрация: 25.11.2016
Сообщений: 60
02.05.2017, 16:13  [ТС] 3
Только в первом блоке, в 5 строке вместо s[1] нужно s[0] написать, наверное?
UPD: а, всё

Добавлено через 15 часов 54 минуты
Сделал, получилось это:
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
            const int days = 366;
            int i;
            double Gentemp = 0, maxBefore = double.MinValue, minAfter = double.MaxValue, minSuit = double.MaxValue;
            double average, diff;
            int[] count = new int[12];
            double[] months = new double[12];
            int[] suitable = new int[12];
            for (i = 0; i < 12; i++)
            {
                suitable[i] = 0;
                months[i] = 0;
                count[i] = 0;
            }
            for (i = 0; i < days; i++)
            {
                string[] s = Console.ReadLine().Split(' ');
                double avgDayTemp = int.Parse(s[1]);
                Gentemp += avgDayTemp;
                int month = int.Parse(s[0].Split('.')[1]);
                months[month - 1] += avgDayTemp;
                count[month - 1] ++;
            }
            average = Gentemp / days;               //среднегодовая температура
            for (i = 0; i < days; i++)
            {
                months[i] /= count[i];              //получаем средние значения температур в месяцах
                if (months[i] > maxBefore && months[i] < average)
                    maxBefore = months[i];
                if (months[i] < minAfter && months[i] > average)
                    minAfter = months[i];
                if ((average - maxBefore) > (minAfter - average))
                    minSuit = minAfter;
                else
                    minSuit = maxBefore;
                if ((months[i] == minSuit) && (suitable[i] > 0))
                    suitable[i] = 1;
            }
            diff = Math.Abs(average - minSuit);
            Console.WriteLine(average);
            for (i = 0; i < days; i++)
            {
                if (suitable[i] == 1)
                    Console.WriteLine("{0} {1} {2}", i + 1, minSuit, diff);
            }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17819 / 13927 / 5331
Регистрация: 17.03.2014
Сообщений: 28,516
Записей в блоге: 1
02.05.2017, 20:45 4
Цитата Сообщение от Juicer Посмотреть сообщение
C#
1
2
3
4
5
6
            for (i = 0; i < 12; i++)
            {
                suitable[i] = 0;
                months[i] = 0;
                count[i] = 0;
            }
Этот цикл лишний. Элементы массива и так равны нулю после создания.
0
0 / 0 / 1
Регистрация: 25.11.2016
Сообщений: 60
07.05.2017, 10:33  [ТС] 5
Я знаю, по умолчанию они обнуляются, задача ЕГЭшная, это скорее для экспертов, эту часть можно и не писать
Поправка: в последнем цикле вместо
Цитата Сообщение от Juicer Посмотреть сообщение
i < days
надо "i<12"
0
07.05.2017, 10:33
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2017, 10:33
Помогаю со студенческими работами здесь

Температура материнской платы 90-120 градусов, температура процессора 18-23 градуса - это нормально?
Температура Мат. платы &quot;бегает&quot; в пределах от 90 до 120 градусов цельсия, хотя температура процессора 18-23 градуса, подскажите плизз, это...

Температура процессора и температура ядер в чем разница ?
всем привет . Недавно купил новый камень i5 3570k @ 4.2 Ghz под кулерок zalman 10x Performa. Температура в простое. Вот t в 100%...

С 8 до 20 часов температура воздуха измерялась ежечасно. Известно, что в течение этого времени температура понижалась. Определите, в котором часу была
Я написала вот так вот, изначально задав данные, но сказали, что нужно писать через массив, помогите пожалуйста #include...

С 8 до 20 часов температура воздуха измерялась ежечасно. Известно, что в течение этого времени температура понижалась. Определите, в котором часу была
Задание 1 С 8 до 20 часов температура воздуха измерялась ежечасно. Известно, что в течение этого времени температура понижалась....

Температура плавления и температура кристаллизации
В каких случаях температура плавления не совпадает с температурой кристаллизации? И где об этом можно почитать?


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Комментарии в JSON
hw_wired 10.02.2025
JSON - текстовый формат обмена данными, построенный на основе синтаксиса JavaScript. Этот формат отличается простотой, читаемостью и широкой поддержкой во всех современных языках программирования. . . .
Перезаписываем локальные файлы с помощью git pull
hw_wired 10.02.2025
Git pull - незаменимая команда для синхронизации локального репозитория с удаленным. При работе над проектом в команде разработчиков часто возникает необходимость получить актуальные изменения,. . .
Оператор --> в C++
hw_wired 10.02.2025
Оператор --> (называемый "spaceship operator" или оператор космического корабля) - важное нововведение в стандарте C++20, упрощающее реализацию операций сравнения в пользовательских типах данных. . . .
Отмена git add до коммита
hw_wired 10.02.2025
Git предлагает несколько методов для отмены индексации файлов перед созданием коммита. Разработчики часто сталкиваются с ситуацией, когда нужно убрать файлы из индекса, не теряя внесенные изменения в. . .
Типы MIME в JSON: что и когда использовать в REST API
hw_wired 10.02.2025
MIME-типы играют ключевую роль в современных веб-приложениях, особенно в контексте REST API и микросервисной архитектуры. Они определяют формат передаваемых данных между клиентом и сервером, что. . .
Переименование локальной ветки Git
hw_wired 10.02.2025
Git предлагает систему управления версиями, где ветки играют ключевую роль в организации разработки. Ветки позволяют изолировать изменения кода, экспериментировать с новыми функциями и поддерживать. . .
Удаление элемента из массива в JavaScript
bytestream 10.02.2025
В JavaScript массивы - это упорядоченные наборы данных, которые часто требуют модификации, включая удаление элементов. Самый распространенный метод для этой задачи - splice(). Этот метод позволяет не. . .
Что значит yield в Python
bytestream 10.02.2025
Ключевое слово yield в Python создает генераторную функцию - особый тип функции, которая возвращает итератор. В отличие от обычных функций, использующих return для возврата значения и завершения. . .
Чем отличаются git pull и git fetch
bytestream 10.02.2025
Git предоставляет множество команд для работы с удаленными репозиториями, среди которых особое место занимают git fetch и git pull. Эти команды помогают синхронизировать локальный репозиторий с. . .
Как удалить ветку Git в локальном и удаленном репозитории
bytestream 10.02.2025
Git предлагает развитую систему ветвления, позволяющую разработчикам создавать параллельные версии кода для различных задач. Ветка в Git - это легковесный указатель на определенный коммит, который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru