Условия всех задач из категории C4

Проверяемые элементы содержания: умения создавать собственные программы (30–50 строк) для решения задач средней сложности
 
 
 
 

Историческая справка и теоретические сведения

Программисты уже были знакомы с понятием подпрограммы: Грейс Хоппер и ее коллеги применяли подпрограммы на гарвардском «Марке-1» во время второй мировой войны, однако каждая подпрограмма решала свою специфическую задачу.

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

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

Морис Уилкс назвал мнемоническую схему для «Эдсака» и библиотеку подпрограмм собирающей системой (по-английски assembly system - отсюда слово «ассемблер»), поскольку она собирала последовательности подпрограмм.

 

Язык программирования – специальная кодовая система для записи компьютерных программ. Каждый язык программирования обладает определенной семантикой, лексикой и синтаксисом. В мире придумано и реализовано свыше 8000 тысяч языков программирования, но востребованными являются не более 20 – 30 различных языков.

Синтаксис языка – набор правил, определяющий конструкции языка и формат их представления.

Семантика языка – набор правил, определяющий содержание и смысл конструкций языка.

Наиболее популярные языки программирования:

  • C;

  • C++;

  • C#;

  • Java;

  • Basic;

  • Pascal;

  • Delphi;

  • Oberon;

  • Ada;

  • Fortran;

  • Assembler.

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

Язык программирования Pascal имеет ряд особенностей. Перечислим фундаментальные из них:

  • строгая типизация;

  • наличие средств структурного или процедурного программирования.

Также Pascal имеет и ряд существенных недостатков, например:

  • отсутствие встроенной поддержки передачи подпрограммам массивов переменной длины;

  • ненадежная работа с динамическим распределением памяти;

  • ограниченная библиотека ввода-вывода;

  • отсутствие возможности подключения подпрограмм, написанных на других языках программирования;

  • отсутствие средств раздельной компиляции (особенно важно при серьезном и низкоуровневом программировании);

  • слабая поддержка объектно-ориентированного программирования.

На заметку: Turbo Pascal, в официальной терминологии, не является отдельным (или диалектом) языком программирования. Turbo Pascal - интегрированная среда разработки программ на языке программирования Pascal.

В настоящее время, Pascal занимает лидирующие позиции в области образования и используется большинством ВУЗов всего мира для обучения студентов азам программирования. Пока, нет никаких предпосылок к тому, чтобы какой-либо другой язык смог потеснить Pascal из образовательной сферы.

 

Приведем пример наиболее актуальных и востребованных языков программирования:

ПозицияЯзык программированияДоля, %
1Java17.050
2C16.523
3C#8.653
4C++7.853
5Objective-C7.062
6PHP5.641
7(Visual) Basic4.315
8Python3.148
9Perl2.931
10JavaScript2.465

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

 

Признак делимости на 2: число делится на два тогда и только тогда, когда последняя цифра является четной.
Например: 46, 900, -24, 8, 0.

Признак делимости на 3: число делится на три тогда и только тогда, когда сумма его цифр делится на 3.
Например: 27, -903, 86526, 6.

Признак делимости на 6: число делится на шесть тогда и только тогда, когда оно делится на 2 и на 3 одновременно (то есть если оно четное и сумма его цифр делится на 3).
Например: 72, -18, 5268, 66.

Положительное число - число, имеющее значение больше нуля (нуль, как правило, к положительным числам не относят).

Язык программирования Pascal - язык программирования самого общего назначения, использующийся в основном для обучения азам программирования школьников и студентов высших учебных заведений.

 

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

*Личная рекомендация: пишите код программы через одну строку, так как в будущем, если потребуется дописать некоторый фрагмент кода (или изменить существующий), то пространство для него будет забронировано вами ранее!

 

Методические указания

Для успешного решения задач из данной категории вы должны:

  1. очень внимательно перечитать условие задачи несколько раз (рекомендую перечитать минимум 5-6 раз) и понять досконально, что требуется реализовать, какие входные данные поступают, что должно получиться на выходе;

  2. составить алгоритм поставленной задачи и формализовать его;

  3. попытаться провести моделирование на конкретных данных (по сути, проверить алгоритм в действии);

  4. запрограммировать задачу на одном из популярных языков программирования (рекомендую использовать Pascal).

 
 
 
 

Задача №1

Дано:
после единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик какой школы сколько набрал баллов. Эта информация в том же виде была разослана в школы.
Завуч школы № 50 решила наградить двух учащихся, которые лучше всех в школе сдали информатику.
Программа должна вывести на экран фамилии и имена этих учеников.
Если наибольший балл набрало больше двух человек – вывести количество таких учеников.
Если наибольший балл набрал один человек, а следующий балл набрало несколько человек - нужно вывести только фамилию и имя лучшего.

На вход программе сначала  подаётся число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> <Номер школы> <Количество баллов>, где
<Фамилия>           - строка, состоящая не  более чем из 30 символов без пробелов,
<Имя>               - строка, состоящая не более, чем из 20 символов без пробелов,
<Номер школы>       - целое число в диапазоне от 1 до 99,
<Количество баллов> - целое число в диапазоне от 1 до 100.

 

Найти:
напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка   программирования, например Borland Pascal 7.0), которая должна вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти учеников школы № 50.

Эти данные записаны через пробел, причём ровно один между каждой парой (то есть, всего по три пробела в каждой  строке).
Пример входной строки:
                 Иванов Иван 50 87
Пример выходных данных:
                 Круглов Василий
                 Тарасова Дарья
Другой вариант выходных данных:
                 7
Третий вариант выходных данных:
                 Гусарский Илья

 
 
 
 
 
 

Задача №2

Дано:
по каналу связи передается последовательность положительных целых чисел, все числа не превышают 1000, их количество заранее неизвестно. Каждое число передается отдельной входной строке. Признаком конца передаваемой последовательности является число 0. После числа 0 передается контрольное значение - наибольшее число R, удовлетворяющее следующим условиям:

  1. R - произведение двух различных переданных элементов последовательности ("различные" означают, что не рассматриваются квадраты переданных чисел);

  2. R делится на 6 без остатка.

Размер памяти, которую использует программа, не должен зависеть от длины передаваемой последовательности чисел. Перед текстом программы кратко опишите используемый вами алгоритм решения задачи.

Пример входных данных:
60
17
3
7
9
60
0
3600

Пример выходных данных для приведенного выше примера входных данных:
Получено 6 чисел
Полученное контрольное значение: 3600
Вычисленное контрольное значение: 1020
Контроль не пройден

 

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

Получено ... чисел
Полученное контрольное значение: ...
Вычисленное контрольное значение: ...
Контроль пройден (или - контроль не пройден)

 
 
 
 
 
 

Задача №3

Дано:
после единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик какой школы сколько баллов набрал.
Районный методист решила выяснить фамилии учеников, которые набрали наибольший балл, по каждой школе в отдельности, но только если из школы информатику сдавало не меньше трех человек. Если в школе информатику сдавало меньше трех человек, информацию по этой школе выводить не нужно.
Программа должна вывести на экран информацию в виде:
<Номер школы>  <Фамилия ученика>
в отдельной строке для каждой школы.

На вход программе сначала подается число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> <Номер школы> <Количество баллов>, где
<Фамилия>           - строка, состоящая не более чем из 30 символов без пробелов;
<Имя>               - строка, состоящая не более чем из 20 символов без пробелов;
<Номер школы>       - целое число в диапазоне от 1 до 99;
<Количество баллов> - целое число в диапазоне  от 0 до 100.

 

Реализовать:
напишите  эффективную,  в  том  числе  и по используемой памяти, программу (укажите   используемую  версию  языка  программирования,   например   Borland Pascal 7.0), которая должна вывести на экран   требуемую  информацию.

Известно, что  информатику  сдавало  больше  5-ти  учеников  района. Также известно, что в районе школы с некоторыми номерами не существуют.

Эти данные записаны через пробел, причем ровно один между каждой парой (то есть, всего по три пробела в каждой строке).

Пример входной строки:
          Иванов Иван 50 87

Пример выходных данных:
         5   Иванов
         50 Петров
         74 Сидоров

 
 
 
 
 
 

Задача №4

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

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

                 <Фамилия> <Имя> <Номер школы> <Количество баллов>, где

<Фамилия>           - строка,  состоящая  не  более  чем  из  30  символов без пробелов;
<Имя>               - строка,  состоящая  не  более  чем  из  20 символов  без пробелов;
<Номер школы>       - целое число в диапазоне от 1 до 99;
<Количество баллов> - целое число в диапазоне  от 0 до 100.

Эти данные записаны через пробел, причем ровно один между каждой парой (то есть, всего по три пробела в каждой строке).

Пример входной строки:
    Иванов Иван 50 87

Пример выходных данных:
    5 50 74 87

Другой вариант выходных данных:
    7
    Наибольший балл = 74

Третий вариант выходных данных:
    Нет таких школ

 

Реализовать:
напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая должна вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти учеников района. Также известно, что в районе школы с некоторыми номерами не существуют.

 
 
 
 
 
 
© 2011-2024 ООО "СтадиМен". Все права сохранены.
Перепечатка и использование материалов с данного сайта, разрешена только по согласию с владельцем.
Владелец оставляет за собой право воспользоваться 146 статьей УК РФ при нарушении авторских и смежных прав.
 
 
 
 
Авторизация на сайте
 
 
 
Обнаружили
ошибку на сайте?