Хорошие материалы по Паскалю (раздел «Изучение языка программирования»).
Работа в классе «Массивы»
-
Пользователь вводит число n (1 ≤ n ≤ 100), затем n чисел. Вывести их в обратном порядке.
Пользователь вводит число n (1 ≤ n ≤ 100), затем n чисел. Вывести сумму чисел, стоящих на чётных позициях (второго, четвёртого и т. д.).
Создать массив
fib: array[1..20] of integer;в котором содержатся числа Фибоначчи (1, 1, 2, 3, 5... — каждое следующее число равно сумме двух предыдущих). Пользователь вводит число n (1 ≤ n ≤ 100), затем n чисел. Вывести все попарные суммы этих чисел (например, если пользователь ввёл 7, 20, 10, то надо вывести 27, 17 и 30). Пользователь вводит число n (1 ≤ n ≤ 100), затем n чисел. Вывести, сколько различных чисел он при этом ввёл (например, если он ввёл 4, 2, 4, 3, 4, 2, то надо вывести 3). Создать массив из миллиона элементов, в каждую ячейку положить random(1000). Пользователь вводит i и j, вывести сумму значений элементов массива с i-го по j-й (включительно).
Игра «Лабиринт»
Поле представляет собой квадрат 10×10, каждая клетка — либо препятствие, либо свободная.
На одной из свободных клеток находится клад, на другой — игрок. Игрок может передвигаться вверх, вниз, влево, вправо. Он не может встать на клетку с препятствием или выйти за границу лабиринта.
Способ вывода на экран, ввода пользовательских команд и прочие детали реализации — на усмотрение автора.
Игра «Крестики-крестики»
Поле представляет собой квадрат 8×8, заполненный нулями и единицами.
Каждый ход состоит в том, что игрок выбирает некоторую клетку поля, после чего все клетки, стоящие в том же столбце или в той же строке меняют своё значение: нолик становится единицей, единица — ноликом.
Если поле целиком заполнено единицами, то игрок выиграл (не забудьте его поздравить).
Работа в классе «Функции и процедуры»
-
Написать процедуру rectangle(height, width: integer), которая выводит на экран прямоугольник height × width, состоящий из звездочек.
Написать функцию power(a, b: integer): integer, которая вычисляет a в степени b.
Написать самому функцию copy(s: string; index, len: integer): string;
Написать функцию gcd(a, b: integer): integer, которая вычисляет НОД(a, b).
Написать функцию lcm(a, b: integer): integer, которая вычисляет НОК(a, b).
Домашнее задание «Немножно математики напоследок»
Написать следующие функции, все в одном файле, и прислать по электронной почте М. Э.:
-
Функцию isPrime(n: integer): boolean, которая проверяет, правда ли что данное число простое (делится только на единицу и на само себя), и возвращает true, если число простое, и false в противном случае.
Функцию smallestPrimeFactor(n: integer): integer, которая возвращает наименьший простой делитель числа n. Что делает эта функция, если ей передали единицу — на ваше усмотрение.
Функцию countDivisors(n: integer): integer, которая возвращает количество делителей числа n.
(* на пятерку) Процедуру 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