8.2. Практикум

Примечание

При выполнении заданий используйте заготовки решений: -> Google Диск.

Подробнее: см. Цикл выполнения и защиты заданий.

8.2.1. Простые текстовые файлы

№ 8.2.1

С клавиатуры в одной строке вводится произвольное количество вещественных чисел. Запишите их в файл, расположив каждое число на отдельной строке.

№ 8.2.2

Дан файл, полученный на выходе задачи № 8.2.1:

  • загрузите список чисел;
  • вычислите их сумму и максимум и допишите их в файл.

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

Если файл прочитать не удается, программа должна прекратить чтение и сообщить об этом пользователю.

Примечание

Пример

Исходный файл Файл после обработки
1
2
3
4
5
1
2
3
4
5
15
5

№ 8.2.3

Измените задачу № 8.2.2 так, чтобы вне зависимости от ошибок чтения файла, программа выполняла подсчет суммы и максимума.

Примечание

Пример

Исходный файл Файл после обработки
1
asd
3
-
1.1
5
1
asd
3
-
1.1
5
9
5

№ 8.2.4

В файле записано стихотворение. Выведите его на экран, а также укажите, каких слов в нем больше: начинающихся на гласную или на согласную букву (регистр не учитывается)?

№ 8.2.5

Информация о занятости мест в зрительном зале кинотеатра хранится в текстовом файле:

0 0 1 1
0 0 0 1 1
1 1 0 1

где строка обозначает ряд, столбец - место (0 - свободно, 1 - занято).

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

Частичное решение: № 4.2.32.

№ 8.2.6

Дан файл с результатами голосования на выборах в виде:

1 3 14 10 2 3 -1 ...

где номер (через пробел) определяет голос за партию из списка:

1. Партия №1.
2. Партия №2.
3. Партия №3.
4. Партия №4.
5. Партия №5.
-1. Испорченный бланк.

Если при чтении файла какое-либо значение не распознается (не является целым числом) или партии с таким номером не существует, считается, что бланк испорчен (-1).

Подведите итоги выборов, выведя на экран список партий в соответствии с убыванием количества полученных голосов и их процентным соотношением:

1. Партия №2 | 1111 | 58.21%
2. Партия №4 |  999 | 38.14%
...

Частичное решение: № 5.2.13.

8.2.2. Сериализация и десериализация

№ 8.2.7

На сайте Всемирного банка (WB) в разделе Data доступна экономическая статистика о валовом внутреннем продукте (ВВП) на душу населения в долларах США [1].

Используя подготовленный CSV-файл, реализуйте:

  • загрузку данных;
  • поиск государства по названию, а также государства с максимальным, минимальным ВВП на душу населения;
  • сохранение данных в новый CSV-файл с фильтром по определенному условию (например, топ-10 государств по объему ВВП на душу населения).

Совет

В исходном файле для ряда государств значения ВВП на душу населения не известны - эти государства должны быть пропущены при загрузке

№ 8.2.8

Федеральная служба государственной статистики приводит данные о заболеваемости населения по основным классам болезней [2].

Подготовленный CSV-файл содержит данные по детям (0-14 лет) и взрослым (15 лет и старше) за период 2000-2015 гг. в отношении на 1000 человек:

Класс,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,Возраст
болезни глаза и его придаточного аппарата,"31,9","32,4","33,5",33,"34,2","33,6","35,7","34,8",34,"33,5",33,"33,3","35,2",35,"34,7","33,3",Взрослые
болезни глаза и его придаточного аппарата,"4,67","4,81","5,32","5,13","5,43","5,58","5,5","5,68","5,7","5,68","5,81","5,87","6,12","6,03",6,"5,91",Дети
...

Предоставив пользователю выбрать 2 различных года для сравнения, сформируйте JSON-файл, который содержит абсолютные значения (для второго года) и изменения по количеству заболеваний в процентах (округление до 2-х знаков после запятой). Значения должны быть сгруппированы по категории Возраст и идти по убыванию.

Фрагмент выходного файла для 2014 и 2015 гг.:

{
  "Второй год": {

    "Взрослые": [
      {
        "болезни органов дыхания": 337.9
      },
      {
        "травмы, отравления и некоторые другие последствия воздействия внешних причин": 90.4
      },
      {
        "осложнения беременности, родов и послеродового периода": 73.6
      },
      ...
    ],

    "Дети": [
      {
        "болезни органов дыхания": 115.76
      },
      {
        "травмы, отравления и некоторые другие последствия воздействия внешних причин": 10.43
      },
      {
        "болезни кожи и подкожной клетчатки": 7.64
      },
      ...
    ]
  },

  "Изменения": {

    "Взрослые": [
      {
        "болезни эндокринной системы, расстройства питания и нарушения обмена веществ": 18.75
      },
      {
        "болезни системы кровообращения": 8.33
      },
      {
        "болезни органов дыхания": 1.35
      }
      ...
    ],

    "Дети": [
      {
        "травмы, отравления и некоторые другие последствия воздействия внешних причин": 0.19
      },
      {
        "новообразования": 0.0
      },
      {
        "болезни органов дыхания": -1.1
      }
      ...
    ]
  }
}

...

№ 8.2.9

На официальном сайте международной федерации хоккея на льду доступна информация об участниках прошедших чемпионатов мира (ЧМ).

Используя подготовленный JSON-файл с данными игроков сборной России на ЧМ 2016 г. [3]:

[
   {
     "номер":13,
     "фамилия":"Дацюк",
     "имя":"Павел",
     "амплуа":"Нападающий",
     "рука":"Левая",
     "дата_рождения":"1978-07-20",
     "клуб":"Детройт Ред Уингз",
     "клуб_страна":"США",
     "возраст":37.782340862423,
     "рост":180,
     "вес":88
   },
...

реализуйте:

  • загрузку данных;

  • сохранение в CSV-файл группировки по выбранному параметру в формате (на примере имени):

    "Имя","Количество"
    "Сергей","5"
    "Александр","2"
    "Алексей","2"
    ...
    

№ 8.2.10

Дан телефонный справочник в формате JSON:

[
   {
      "имя":"...",
      "телефоны":[
         {
            "описание":"...",
            "номер":"..."
         },
         {
            "описание":"...",
            "номер":"..."
         }
      ]
   },
   ...

Программа должна позволять (предоставлять функции):

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

[1]GDP per capita (current US$) | Data. URL: https://data.worldbank.org/indicator/NY.GDP.PCAP.CD.
[2]Здравоохранение::Федеральная служба государственной статистики. URL: http://www.gks.ru/wps/wcm/connect/rosstat_main/rosstat/ru/statistics/population/healthcare/
[3]Ice hockey players at IIHF world championships, 2001-2016. The dataset contains 6292 records of 3333 players“ height and weight parameters at 16 world championships. URL: https://figshare.com/articles/Height_of_ice_hockey_players/3394735/2