Задания по программированию для 8-го класса (2012а)

Хорошие материалы по Паскалю (раздел «Изучение языка программирования»).

Работа в классе «Массивы»

  1. Пользователь вводит число n (1 ≤ n ≤ 100), затем n чисел. Вывести их в обратном порядке.
  2. Пользователь вводит число n (1 ≤ n ≤ 100), затем n чисел. Вывести сумму чисел, стоящих на чётных позициях (второго, четвёртого и т. д.).
  3. Создать массив
    fib: array[1..20] of integer;
    в котором содержатся числа Фибоначчи (1, 1, 2, 3, 5... — каждое следующее число равно сумме двух предыдущих).
  4. Пользователь вводит число n (1 ≤ n ≤ 100), затем n чисел. Вывести все попарные суммы этих чисел (например, если пользователь ввёл 7, 20, 10, то надо вывести 27, 17 и 30).
  5. Пользователь вводит число n (1 ≤ n ≤ 100), затем n чисел. Вывести, сколько различных чисел он при этом ввёл (например, если он ввёл 4, 2, 4, 3, 4, 2, то надо вывести 3).
  6. Создать массив из миллиона элементов, в каждую ячейку положить random(1000). Пользователь вводит i и j, вывести сумму значений элементов массива с i-го по j-й (включительно).

Игра «Лабиринт»

Поле представляет собой квадрат 10×10, каждая клетка — либо препятствие, либо свободная.

На одной из свободных клеток находится клад, на другой — игрок. Игрок может передвигаться вверх, вниз, влево, вправо. Он не может встать на клетку с препятствием или выйти за границу лабиринта.

Способ вывода на экран, ввода пользовательских команд и прочие детали реализации — на усмотрение автора.

Игра «Крестики-крестики»

Поле представляет собой квадрат 8×8, заполненный нулями и единицами.

Каждый ход состоит в том, что игрок выбирает некоторую клетку поля, после чего все клетки, стоящие в том же столбце или в той же строке меняют своё значение: нолик становится единицей, единица — ноликом.

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

Работа в классе «Функции и процедуры»

  1. Написать процедуру rectangle(height, width: integer), которая выводит на экран прямоугольник height × width, состоящий из звездочек.
  2. Написать функцию power(a, b: integer): integer, которая вычисляет a в степени b.
  3. Написать самому функцию copy(s: string; index, len: integer): string;
  4. Написать функцию gcd(a, b: integer): integer, которая вычисляет НОД(a, b).
  5. Написать функцию lcm(a, b: integer): integer, которая вычисляет НОК(a, b).

Домашнее задание «Немножно математики напоследок»

Написать следующие функции, все в одном файле, и прислать по электронной почте М. Э.:

  1. Функцию isPrime(n: integer): boolean, которая проверяет, правда ли что данное число простое (делится только на единицу и на само себя), и возвращает true, если число простое, и false в противном случае.
  2. Функцию smallestPrimeFactor(n: integer): integer, которая возвращает наименьший простой делитель числа n. Что делает эта функция, если ей передали единицу — на ваше усмотрение.
  3. Функцию countDivisors(n: integer): integer, которая возвращает количество делителей числа n.
  4. (* на пятерку) Процедуру factorize(n: integer), которая выводит на экран разложение числа n на простые множители.

Для пояснения условия, рассмотрим следующую программу:

begin
  writeln(isPrime(7));
  writeln(isPrime(8));
  writeln(smallestPrimeFactor(35));
  writeln(countDivisors(24));
  factorize(100);
end.

Она должна вывести на экран следующее:

TRUE
FALSE
5
8
2*2*5*5