8«В» — Самостоятельная работа №2. Вариант A.

Задача 1.

Вводится строка, в которой сначала записана фамилия человека, а затем через 1 пробел – его имя, например “Агафонов Федор”.
А) найти позицию пробела, разделяющего фамилию и имя
Б) выделить из строки фамилию и записать её в переменную surname
В) выделить из строки имя и записать его в переменную name
Г) приписать перед фамилией первую букву имени, точку и пробел
Пример: “Агафонов Федор” -> ”Ф. Агафонов”
(Чуть более сложный вариант: пробелов может быть несколько, и пробелы могут быть в начале и в конце вводимой строки.)

Задача 2. «Значение выражения»

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

Задача 3. «Победители олимпиады»

Даны два списка: список участников олимпиады и список набранных ими баллов. Победителем олимпиады считается школьник (или несколько школьников), набравший наибольший балл среди участников.

Напишите программу, которая выведет фамилию победителя (или победителей, если их несколько).

В первой строке через пробел вводятся фамилии участников. Во второй строке через пробел вводятся набранные ими баллы (целые неотрицательные числа). Гарантируется, что количества элементов в первом и втором списках одинаковы.

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

Примеры

Ввод Вывод
Petrov Ivanov Sidorov
10 5 10
Petrov Sidorov
Cheburashka Gena Shapoklyak Galya
20 2 3 7
Cheburashka

Задача 4. «Заполнение по спирали»

Дано целое N > 0. Заполните двумерный массив размером N×N числами от 1 до N×N по спирали, как показано в примерах. Выведите полученный массив, отводя на вывод каждого элемента ровно 4 символа.

Примеры

Ввод Вывод
3
   1   2   3
8 9 4
7 6 5
4
   1   2   3   4
12 13 14 5
11 16 15 6
10 9 8 7

Задача 5. «Сжатие списка»

Дан список целых чисел. Требуется “сжать” его, переместив все ненулевые элементы в левую часть списка, не меняя их порядок, а все нули — в правую часть. Порядок ненулевых элементов изменять нельзя, дополнительный список использовать нельзя, задачу нужно выполнить за один-два прохода по списку. Распечатайте полученный список.
Имейте ввиду, что метод pop(), выполненный для элемента из середины списка, означает примерно полпрохода по списку!

Пример

Ввод Вывод
4 0 5 0 3 0 0 5
4 5 3 5 0 0 0 0

Задача 6. «Кинотеатр»

В кинотеатре n рядов по m мест в каждом. В двумерном массиве хранится информация о проданных билетах: число 1 означает, что билет на данное место уже продан, число 0 означает, что место свободно.
Поступил запрос на продажу k билетов на соседние места в одном ряду. Определите, можно ли выполнить такой запрос.

Программа получает на вход числа n и m. Далее идут n строк, содержащих по m чисел (0 или 1), разделённых пробелами. Затем дано число k.

Программа должна вывести номер ряда, в котором есть k подряд идущих свободных мест. Если таких рядов несколько, то выведите номер наименьшего подходящего ряда. Если подходящего ряда нет, выведите число 0.

Пример

Ввод Вывод
3 4
0 1 0 1
1 0 0 1
0 0 0 0
2
2