Массив — это упорядоченный набор однотипных элементов, обозначаемых одним именем; доступ к элементу массива осуществляется по его номеру.
Для записи элементов массива в память компьютера нужно выделить для их хранения необходимое количество ячеек памяти, которое определяется размером массива.
В программе для каждого массива должны быть указаны его параметры: имя, размерность и размер. Бывают одномерные, двумерные и т.д. массивы. Это называется размерностью.
Одномерные массивы (последовательности).
I — номер элемента, A[I] — элемент массива, стоящий на I-ом месте
- Сформировать и вывести на экран последовательность из n элементов, заданных датчиком случайных чисел на интервале [-23, 34].
Источник: studfile.net
Pascal ABC задачи с решением
Сгенерировать случайное число, вывести на экран это число, а также сумму и произведение его цифр.
Олимпиадная задача по информатике | Pascal #1
Алгоритм решения задачи:
- random(900) генерирует случайное число от 0 до 899. Если прибавить к нему 100, то получится диапазон от 100 до 999 включительно, т. е. охватывает все трехзначные числа.
- Чтобы извлечь из числа цифру сотен надо его разделить нацело на 100.
- Для получения цифры десяток можно сначала разделить нацело на 10, а затем найти остаток от деления на 10.
- Единицы извлекаются путем нахождения остатка от деления числа на 10.
Программа на языке Паскаль:
var n: integer ; a,b,c: byte ; begin randomize; n := random(900) + 100; writeln(n); a := n div 100; b := n div 10 mod 10; c := n mod 10; writeln(‘Сумма: ‘,a+b+c); writeln(‘Произведение: ‘,a*b*c); end .
Пример выполнения программы:
536 Сумма: 14 Произведение: 90
Задача 2:
Сгенерировать случайные целое число, вещественное число, букву в диапазонах, которые вводит пользователь.
Описание переменных:
- min_i, max_i — минимальная и максимальная границы диапазона для целого числа;
- n_i — случайное целое число;
- min_f, max_f — минимальная и максимальная границы диапазона для вещественного числа;
- n_f — случайное вещественное число;
- first_c, last_c — первый и последний символ диапазона, в котором должен быть сгенерирован случайный символ;
- min_c, max_c — коды-числа, соответствующие указанным символам;
- n_c — случайное число, которое будет переведено в символ по таблице ASCII.
Программа на языке Паскаль:
var min_i, max_i, n_i: integer ; min_f, max_f, n_f: real ; first_c, last_c: char ; min_c, max_c, n_c: byte ; begin randomize; write(‘Minimum integer: ‘); readln(min_i); write(‘Maximum integer: ‘); readln(max_i); n_i := random(max_i-min_i+1) + min_i; writeln(n_i); write(‘Minimum float: ‘); readln(min_f); write(‘Maximum float: ‘); readln(max_f); n_f := random() * (max_f-min_f) + min_f; writeln(n_f:5:2); write(‘First char: ‘); readln(first_c); write(‘Last char: ‘); readln(last_c); min_c := ord(first_c); max_c := ord(last_c); n_c := random(max_c-min_c+1) + min_c; writeln(chr(n_c)); end .
Программирование Pascal с нуля | Информатика ОГЭ 2022 | Умскул
Пример выполнения программы:
Minimum integer : -100 Maximum integer : 100 -46 Minimum float: 0.23 Maximum float: 0.85 0.53 First char : k Last char : q p
Задача 3:
Найти позицию в алфавите двух английских букв и количество символов между ними.
Определить букву по ее позиции в алфавите.
Алгоритм решения задачи:
Позиция буквы в алфавите определяется ее «смещением» относительно первой буквы алфавита. Если знать коды первой буквы и искомой, то разность их кодов покажет, на сколько позиций они отстоят друг от друга. В языке программирования Pascal код-номер буквы по таблице кодов символов ASCII определяется с помощью функции ord(), которой в качестве значения передается символ.
Для обратного действия — определения буквы по ее известной позиции в алфавите — надо к позиции буквы прибавить код первой буквы алфавита. После этого получить искомую букву по ее коду. Это делается с помощью функции chr(), которой передается число-код символа по таблице ASCII.
Программа на языке Паскаль:
var a,b: char ; an, bn, n: byte ; begin write(‘Буква 1: ‘); readln(a); write(‘Буква 2: ‘); readln(b); an := ord(a); bn := ord(b); writeln(‘Позиция 1: ‘, an-ord(‘a’)+1); writeln(‘Позиция 2: ‘, bn-ord(‘a’)+1); n := abs(bn-an)-1; writeln(‘Количество букв между ними: ‘, n); writeln; write(‘Позиция буквы в алфвите: ‘); readln(n); n := n+ord(‘a’)-1; writeln(‘Это буква — ‘, chr(n)); end .
Пример выполнения программы:
Буква 1: w Буква 2: z Позиция 1: 23 Позиция 2: 26 Количество букв между ними: 2 Позиция буквы в алфвите: 10 Это буква — j
Задача 4:
По координатам двух точек, которые вводит пользователь, определить уравнение прямой, проходящей через эти точки.
Алгоритм решения задачи:
Общий вид уравнения прямой имеет вид y = kx + b. Чтобы найти уравнение для конкретной прямой, необходимо вычислить коэффициенты k и b. Сделать это можно, если известны координаты двух точек, лежащих на этой прямой. В этом случае решается система уравнений:
Программа на языке Паскаль:
var x1,y1,x2,y2: real ; k, b: real ; begin write(‘A(x1;y1): ‘); readln(x1, y1); write(‘B(x2;y2): ‘); readln(x2, y2); k := (y1 — y2) / (x1 — x2); b := y2 — k * x2; writeln(‘y = ‘,k:0:2,’x + ‘,b:0:2); end .
Примеры выполнения программы:
A(x1;y1): 6 9 B(x2;y2): -1 3 y = 0.86x + 3.86
A(x1;y1): 1.2 5.6 B(x2;y2): -3.45 8.2 y = -0.56x + 6.27
Источник: sites.google.com
Решение типичных задач на языке Pascal Геометрические задачи

Единственный в мире Музей Смайликов
Самая яркая достопримечательность Крыма

Скачать 71.5 Kb.
Решение типичных задач на языке Pascal
Геометрические задачи
Задача 1
Дан круг (X0, Y0, R) и точка (X, Y), где X0, Y0, R, X, Y — вещественные числа.
Определить, лежит ли эта точка внутри данного круга.
Пример
(0, 0, 1) и (0.5, 0.5)
Результат: TRUE
ReadLn (X0, Y0, R, X, Y);
WriteLn (Sqr (X — X0) + Sqr (Y — Y0)
Задача 2
Дан треугольник с вершинами (X1, Y1); (X2, Y2); (X3, Y3) и точка (X, Y). Все Xi, Yi — вещественные числа.
Определить, лежит ли эта точка внутри данного треугольника.
Пример
(0, 0); (3, 0); (0, 3) и (1, 1)
Результат: TRUE
var X1, Y1, X2, Y2, X3, Y3, X, Y: Real;
S0, S1, S2, S3: Real;
function S (X1, Y1, X2, Y2, X3, Y3: Real): Real;
var a, b, c, p: Real;
a := Sqrt (Sqr (X1 — X2) + Sqr (Y1 — Y2));
b := Sqrt (Sqr (X1 — X3) + Sqr (Y1 — Y3));
c := Sqrt (Sqr (X3 — X2) + Sqr (Y3 — Y2));
S := Sqrt (p * (p — a) * (p — b) * (p — c));
ReadLn (X1, Y1, X2, Y2, X3, Y3, X, Y);
S0 := S (X1, Y1, X2, Y2, X3, Y3);
S1 := S (X, Y, X2, Y2, X3, Y3);
S2 := S (X1, Y1, X, Y, X3, Y3);
S3 := S (X1, Y1, X2, Y2, X, Y);
WriteLn (S0 + eps >= S1 + S2 + S3);
Задача 3
Дан прямоугольник, заданный двумя противоположными вершинами (X1, Y1); (X2, Y2) и точка (X, Y). Все Xi, Yi — вещественные числа.
Определить, лежит ли эта точка внутри данного прямоугольника.
Пример
(1, 1); (7, 4) и (4, 2)
Результат: TRUE
ReadLn (X1, Y1, X2, Y2, X, Y);
WriteLn ((Abs (X1 — X2) = Abs (X1 — X) + Abs (X2 — X)) and
(Abs (Y1 — Y2) = Abs (Y1 — Y) + Abs (Y2 — Y)));
Задачи на числа
Задача 1
Дано число a (0..999999999).
Найти сумму цифер числа a.
Пример
a = 12345
Результат: 15
Задача 2
Дано число a (0..999999999).
Вывести это число в обратном порядке.
Пример
a = 12345
Результат: 54321
Задача 3
Дано число a (0..999999999).
Определить, является ли оно простым.
Замечание: число называется простым, елси оно делится только на 1 и на самого себя.
Пример
a = 12345
Результат: FALSE
for N := 2 to a div 2 do
if a mod N = 0 then
Задача 4
Дано число a (0..999999999).
Разложить это число на простые множители.
Пример
a = 12345
Результат: 3 5 823
for N := 2 to X div 2 do
if X mod N = 0 then
if Prost (a) then
Задача 5
Дано число S (0..999999999), обозначающее количество секунд.
Вычислить числа Hour, Minute (0..59), Second (0..59), показывающие число часов, минут и секунд соответственно в числе S.
Пример
S = 12345
Результат: 3:25.45
Hour, Minute, Second: Integer;
begin
Second := S mod 60;
Minute := S div 60;
Hour := Minute div 60;
Minute := Minute mod 60;
WriteLn (Hour, ‘:’, Minute, ‘.’, Second);
Задача 6
Дано натуральное число a (1..999999999).
Представить его в виде суммы квадратов двух натуральных чисел или сообщить о невозможности такого представления.
Пример
a = 29
Результат: 2, 5
for n := 1 to Trunc (Sqrt (a)) do
b := Sqrt (a — Sqr (n));
if (Int (b) = b) and (b > 0) then
WriteLn (n, ‘, ‘, Trunc (b));
Задача 7
Дано число a (1..999999999).
Определить, является ли оно совершенным.
Замечание: натуральное число называется совершенным, если оно равно сумме всех своих собственных делителей, включая 1.
Пример
a = 496
Результат: TRUE
for i := 2 to a div 2 do
if a mod i = 0 then Inc (S, i);
Задача 8
Даны два натуральных числа: m, n (1..999999999), образующие дробь вида m / n.
Сократить дробь, что бы числитель и знаменатель были взаимнопростые.
Пример
m = 256; n = 64
Результат: 4 1
Задачи на строки
Задача 1
Дана строка S, состоящая из латинских букв и пунктуационных знаков.
Преобразовать эту строку к верхнему регистру.
Пример
S = ‘Hello, World!’
Результат: HELLO, WORLD!
for i := 1 to Length (S) do
Задача 2
Дана строка S, состоящая из латинских букв и пробелов.
Определить количество слов в данной строке.
Замечание: словом считается любая последовательность максимальной долины, состоящая из латинских букв и не содержащая пробелов.
Пример
S = ‘Hello World’
Результат: 2
i, Count, State: Integer;
begin
for i := 1 to Length (S) do
1: if UpCase (S[I]) in [‘A’..’Z’] then
2: if not (UpCase (S[I]) in [‘A’..’Z’]) then State := 1;
Задача 3
Дано 10 строк, вводимых с клавиатуры.
Вывести их в алфавитном порядке.
Пример
Marina
Aleksej
Sergej
Ivan
Peter
Lubov
Irina
Pavel
Natasha
Kostya
i: Integer;
procedure Sort (var S: TStrs);
var i, j: Integer;
for i := 1 to N — 1 do
for j := i + 1 to N do
for i := 1 to N do
for i := 1 to N do
Задача 4
Дана строка S.
Определить, является ли она полиндромом.
Замечание: полиндромом называются строки, которые одинаково читаются как слева-направо, так и справа-налево.
Пример
S = ‘asdfgfdsa’
Результат: TRUE
for i := 1 to Length (S) div 2 do
if S[i] <> S[Length(S)-i+1] then
Задача 5
Дана строка S, состоящая только из символов ‘0’ или ‘1’.
Подсчитать длинну самой длинной последовательности, состоящей только из ‘1’.
Пример
S = ‘111110011110110’
Результат: 5
i, Len, MaxLen: Integer;
begin
for i := 1 to Length (S) do
if Len > MaxLen then MaxLen := Len;
end else Inc (Len);
Задачи на массивы
Задача 1
Дан массив A, состоящий из 100 натуральных чисел, заполненный случайным образом (каждый элемент находится в промежутка от 1 до 1000).
Отсортировать данный массив по неубыванию и вывести на экран.
i, j, tmp: Integer;
begin
for i := 1 to n do
A[i] := Random (1000) + 1;
for i := 1 to n — 1 do
for j := n downto 2 do
Задача 2
Дан массив A, состоящий из 10 целых чисел.
Вывести все элементы, значение которых превосходит среднего арифметического элементов массива.
Пример
A: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Результат: 6, 7, 8, 9, 10
i, Sum: Integer;
begin
for i := 1 to n do
for i := 1 to n do
if A[i] > Sum div n then WriteLn (A[i]);
Задачи на матрицы
Задача 1
Дана матрица A размерностью 3 x 3, состоящая из целых чисел.
Найти разность между максимальным и минимальным элементами данной матрицы.
Пример
A:
12 44 37
8 25 32
19 28 41
Результат: 36
i, j, Max, Min: Integer;
begin
for i := 1 to 3 do
for j := 1 to 3 do
for i := 1 to 3 do
for j := 1 to 3 do
if Max A[i,j] then Min := A[i,j];
WriteLn (Max — Min);
Задача 2
Дана матрица A размерностью 5 x 5.
Заполнить ее следующим образом:
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
и вывести на экран.
i, j: Integer;
begin
for i := 1 to 5 do
for j := 1 to 5 do
A[i,j] := 1 + (i + j — 2) mod 5;
for i := 1 to 5 do
for j := 1 to 5 do
Задача 3
Дана матрица A размерностью 5 x 5.
Заполнить ее следующим образом:
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
и вывести на экран.
i, j: Integer;
begin
for i := 1 to 5 do
for j := 1 to 5 do
Задача 4
Дана матрица A размерностью 5 x 5.
Заполнить ее следующим образом:
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
и вывести на экран.
i, j: Integer;
begin
for i := 1 to 5 do
for j := 1 to 5 do
if Odd (i) then A[i,j] := j + (i — 1) * 5
else A[i,j] := 6 — j + (i — 1) * 5;
for i := 1 to 5 do
for j := 1 to 5 do
Задача 5
Дана матрица A размерностью 5 x 3, состоящая из целых чисел.
Найти номер строки, в которой сумма элементов максимальна.
Пример
A:
1 2 3
0 0 0
5 5 5
2 8 6
2 4 3
Результат: 4
i, j, Sum, Max, Imax: Integer;
begin
for i := 1 to 5 do
for j := 1 to 3 do
for i := 1 to 4 do
for j := 1 to 3 do
if (Sum > Max) or (i = 1) then
Источник: topuch.com