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

Идёт приём заявок

Подать заявку

Для учеников 1-11 классов и дошкольников

Типовые задачи на Pascal с решениями

Задача: Написать программу которая по введеному номеру времени года(1-зима,2-весна,3-лето,4-осень)выдавала соответствующие этому времени года, месяцы количество дней в каждом из месяцев.

writeln ( ‘ Выберите время года :’ ) ; writeln ( ‘1- зима ‘ ) ;

writeln ( ‘2- весна ‘ ) ;

writeln ( ‘3- лето ‘ ) ;

writeln ( ‘4- осень ‘ ) ;

readln ( w ) ; case w of

writeln ( ‘ Зимние месяцы :’ ) ;

writeln ( ‘ декабрь — 31 день ‘ ) ;

writeln ( ‘ январь — 31 день ‘ ) ;

writeln ( ‘ февраль — 28(29) дней ‘ ) ;

writeln ( ‘ Весенние месяцы :’ ) ;

writeln ( ‘ март — 31 день ‘ ) ;

writeln ( ‘ апрель — 30 дней ‘ ) ;

writeln ( ‘ май — 31 день ‘ ) ;

writeln ( ‘Летние месяцы:’ ) ;

writeln ( ‘ июнь — 30 дней’ ) ;

writeln ( ‘ июль — 31 день’ ) ;

writeln ( ‘ август — 31 день ‘ ) ;

‘4’ : begin writeln ( ‘ Осенние месяцы :’ ) ;

writeln ( ‘ сентябрь — 30 дней ‘ ) ;

writeln ( ‘ октябрь — 31 день ‘ ) ;

writeln ( ‘ ноябрь — 30 дней ‘ ) ;

end ; else write ( ‘Такого времени года нет!’ ) ;

Задача: Определить делителем каких чисел a,b,c является число k.

var a , b , c , k , s : integer ;

writeln ( ‘ Введите 3 целых числа :’ ) ; readln ( a , b , c ) ;

write ( ‘Введите целое число для проверки делимости k=’ ) ;

writeln ( ‘Число ‘ , k , ‘ делитель числа ‘ , a ) ;

writeln ( ‘Число ‘ , k , ‘ делитель числа ‘ , b ) ;

write ( ‘Число ‘ , k , ‘ делитель числа ‘ , c ) ;

if s = 0 then write ( ‘ Число ‘ , k , ‘ не является делителем чисел ‘ , a , ‘ ‘ , b , ‘ ‘ , c ) ; readln

Задача: Подсчитать количество отрицательных среди чисел a,b,c

var a , b , c : integer ;

clrscr; writeln ( ‘Введите 3 целых положительных и отрицательных числа:’ ) ;

readln ( a , b , c ) ;

k := ord ( a 0 ) + ord ( b 0 ) + ord ( c 0 ) ; если отрицательное , ord(true)=1

false, если не отрицательное, ord(false)=0>

write ( ‘Количество отрицательных=’ , k ) ; readln

Задача
Дан круг (X0, Y0, R) и точка (X, Y), где X0, Y0, R, X, Y — вещественные числа.
Определить, лежит ли эта точка внутри данного круга.
Пример
(0, 0, 1) и (0.5, 0.5)
Результат: TRUE
Вариант решения

var X0, Y0, R, X, Y: Real;

ReadLn (X0, Y0, R, X, Y);

WriteLn (Sqr (X — X0) + Sqr (Y — Y0)

Задача
Дан треугольник с вершинами (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);

Задача
Дан прямоугольник, заданный двумя противоположными вершинами (X1, Y1); (X2, Y2) и точка (X, Y). Все Xi, Yi — вещественные числа.
Определить, лежит ли эта точка внутри данного прямоугольника.
Пример
(1, 1); (7, 4) и (4, 2)
Результат: TRUE
Вариант решения

var X1, Y1, X2, Y2, X, Y: Real;

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)));

Задача
Дано число a (0..999999999).
Найти сумму цифер числа a.

Пример
a = 12345
Результат: 15

Задача
Дано число a (0..999999999).
Вывести это число в обратном порядке.
Пример
a = 12345
Результат: 54321
Вариант решения

Задача
Дано число a (0..999999999).
Определить, является ли оно простым.
Замечание: число называется простым, елси оно делится только на 1 и на самого себя.
Пример
a = 12345
Результат: FALSE
Вариант решения

var a, N: LongInt;

for N := 2 to a div 2 do

if a mod N = 0 then

Задача
Дано число a (0..999999999).
Разложить это число на простые множители.
Пример
a = 12345
Результат: 3 5 823
Вариант решения

var a, N: LongInt;

function Prost (X: LongInt): Boolean;

for N := 2 to X div 2 do

if X mod N = 0 then

if Prost (a) then

if (a mod N = 0) and Prost (N) then

Задача
Дано число S (0..999999999), обозначающее количество секунд.
Вычислить числа Hour, Minute (0..59), Second (0..59), показывающие число часов, минут и секунд соответственно в числе S.
Пример
S = 12345
Результат: 3:25.45
Вариант решения

Hour, Minute, Second: Integer;

Second := S mod 60;

Minute := S div 60;

Hour := Minute div 60;

Minute := Minute mod 60;

WriteLn (Hour, ‘:’, Minute, ‘.’, Second);

Задача
Дано натуральное число a (1..999999999).
Представить его в виде суммы квадратов двух натуральных чисел или сообщить о невозможности такого представления.
Пример
a = 29
Результат: 2, 5
Вариант решения

var a, n: LongInt;

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));

Задача
Дано число a (1..999999999).
Определить, является ли оно совершенным.
Замечание: натуральное число называется совершенным, если оно равно сумме всех своих собственных делителей, включая 1.
Пример
a = 496
Результат: TRUE
Вариант решения

var a, i, S: LongInt;

for i := 2 to a div 2 do

if a mod i = 0 then Inc (S, i);

Задача
Даны два натуральных числа: m, n (1..999999999), образующие дробь вида m / n.
Сократить дробь, что бы числитель и знаменатель были взаимнопростые.
Пример
m = 256; n = 64
Результат: 4 1
Вариант решения

var m, n, i: LongInt;

if (m mod i = 0) and (n mod i = 0) then

Задача
Дана строка S, состоящая из латинских букв и пунктуационных знаков.
Преобразовать эту строку к верхнему регистру.
Пример
S = ‘Hello, World!’
Результат: HELLO, WORLD!
Вариант решения

for i := 1 to Length (S) do

Задача
Дана строка S, состоящая из латинских букв и пробелов.
Определить количество слов в данной строке.
Замечание: словом считается любая последовательность максимальной долины, состоящая из латинских букв и не содержащая пробелов.
Пример
S = ‘Hello World’
Результат: 2
Вариант решения

i, Count, State: Integer;

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;

Задача
Дано 10 строк, вводимых с клавиатуры.
Вывести их в алфавитном порядке.
Пример
Marina
Aleksej
Sergej
Ivan
Peter
Lubov
Irina
Pavel
Natasha
Kostya

type TStrs = array[1..N] of string;

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

Задача
Дана строка S.
Определить, является ли она полиндромом.
Замечание: полиндромом называются строки, которые одинаково читаются как слева-направо, так и справа-налево.
Пример
S = ‘asdfgfdsa’
Результат: TRUE
Вариант решения

for i := 1 to Length (S) div 2 do

if S[i] <> S[Length(S)-i+1] then

Задача
Дана строка S, состоящая только из символов ‘0’ или ‘1’.
Подсчитать длинну самой длинной последовательности, состоящей только из ‘1’.
Пример
S = ‘111110011110110’
Результат: 5
Вариант решения

i, Len, MaxLen: Integer;

for i := 1 to Length (S) do

if Len > MaxLen then MaxLen := Len;

end else Inc (Len);

Задача
Дан массив A, состоящий из 100 натуральных чисел, заполненный случайным образом (каждый элемент находится в промежутка от 1 до 1000).
Отсортировать данный массив по неубыванию и вывести на экран.

var A: array[1..n] of Word;

i, j, tmp: Integer;

for i := 1 to n do

A[i] := Random (1000) + 1;

for i := 1 to n — 1 do

for j := n downto 2 do

for i := 1 to n do

Задача
Дан массив A, состоящий из 10 целых чисел.
Вывести все элементы, значение которых превосходит среднего арифметического элементов массива.
Пример
A: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Результат: 6, 7, 8, 9, 10
Вариант решения

var A: array[1..n] of Integer;

for i := 1 to n do

for i := 1 to n do

if A[i] > Sum div n then WriteLn (A[i]);

Задача
Дана матрица A размерностью 3 x 3, состоящая из целых чисел.
Найти разность между максимальным и минимальным элементами данной матрицы.
Пример
A:
12 44 37
8 25 32
19 28 41
Результат: 36
Вариант решения

var A: array[1..3,1..3] of Integer;

i, j, Max, Min: Integer;

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 Min > A[i,j] then Min := A[i,j];

WriteLn (Max — Min);

Задача
Дана матрица 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
и вывести на экран.

var A: array[1..5,1..5] of Byte;

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

Задача
Дана матрица 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
и вывести на экран.

var A: array[1..5,1..5] of Byte;

for i := 1 to 5 do

for j := 1 to 5 do

for i := 1 to 5 do

for j := 1 to 5 do

Задача
Дана матрица 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
и вывести на экран.

var A: array[1..5,1..5] of Byte;

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

Задача
Дана матрица A размерностью 5 x 3, состоящая из целых чисел.
Найти номер строки, в которой сумма элементов максимальна.
Пример
A:
1 2 3
0 0 0
5 5 5
2 8 6
2 4 3
Результат: 4
Вариант решения

var A: array[1..5,1..3] of Integer;

i, j, Sum, Max, Imax: Integer;

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

Задача: Написать программу которая по введеному номеру времени года(1-зима,2-весна,3-лето,4-осень)выдавала соответствующие этому времени года, месяцы количество дней в каждом из месяцев.

uses crt;

var w:char;

begin

writeln(‘Выберите время года:’);writeln(‘1-зима’);

readln(w);case w of

‘1’:begin

writeln(‘ декабрь — 31 день’);

writeln(‘ январь — 31 день’);

writeln(‘ февраль — 28(29) дней’);

end;

‘2’:begin

writeln(‘ март — 31 день’);

writeln(‘ апрель — 30 дней’);

writeln(‘ май — 31 день’);

end;

‘3’:begin

writeln(‘ июнь — 30 дней’);

writeln(‘ июль — 31 день’);

writeln(‘ август — 31 день’);

end;

‘4’:beginwriteln(‘Осенние месяцы:’);

writeln(‘ сентябрь — 30 дней’);

writeln(‘ октябрь — 31 день’);

writeln(‘ ноябрь — 30 дней’);

end;else write(‘Такого времени года нет!’);

end;

end.

  • Бондаренко Анна ИвановнаНаписать 2052 16.04.2018

Номер материала: ДБ-1459208

    16.04.2018 96
    16.04.2018 154
    16.04.2018 184
    16.04.2018 243
    16.04.2018 92
    16.04.2018 175
    16.04.2018 281
    16.04.2018 422

Не нашли то что искали?

Вам будут интересны эти курсы:

Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение редакции может не совпадать с точкой зрения авторов.

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

writeln (‘ Введите a’); readln (a);

writeln (‘ Введите b’); readln (b);

if b=1 then writeln (a)

Из одного порта в другой необходимо перевезти 15 различных грузов. Грузоподъемность судна, на котором будет проходить перевозка, 50 тонн. Грузы пронумерованы, и информация о массах грузов хранится в массиве М(15). Определить, сколько рейсов необходимо сделать судну, если грузы неделимы и могут перевозиться только подряд в порядке их нумерации. (Предполагается, что масса отдельного груза не превышает 50 тонн).

mas=array[1..15] of integer;

for i:=1 to 15 do

writeln (‘ Введите m’,'[‘,i,’]’);

writeln (‘ Потребовалось , k,’ рейсов ‘);

Коммерсант, имея стартовый капитал k рублей, занялся торговлей, которая ежемесячно увеличивает капитал на p % . Через сколько лет он накопит сумму s , достаточную для покупки собственного магазина?

writeln (‘Введите стартовый капитал’);

writeln (‘Введите % увеличения капитала’);

writeln (‘Введите сумму, необходимую для покупки магазина’);

writeln (‘Количество лет -‘, int ( n /12));

Число Цукермана – натуральное число, которое делится на произведение своих цифр, например: 175 делится на 1·7·5=35. Составить программу, которая выводит на экран все трехзначные числа Цукермана.

var i,a,b,c: integer;

for i := 111 to 999 do

b := (i div 10) mod 10;

if (b <> 0) and (c <> 0) and (i mod (a * b * c) = 0) then writeln (i);

На конференцию приехало N человек. Для их перевоза выделили автомобили вместимостью К и М человек (без водителя). К гостинице автомобили подаются в таком порядке: сначала вместимостью К человек, потом – М человек и так далее. В автомобиле можно перевозить не более максимально допустимого количества пассажиров. Определить, сколько необходимо автомобилей для перевозки всех делегатов конференции.

writeln (‘Введите количество участников’);

writeln (‘Введите вместимость первого автомобиля’);

writeln (‘Введите вместимость второго автомобиля’);

if x mod 2<>0 then N:=N-K else N:=N-M;

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

A: array [1..4] of integer;

writeln (‘В коробке’, n , ‘закончились спички’);

writeln (‘Израсходовано спичек’, m );

Сформировать квадратную матрицу следующего вида.

A: array [1..5, 1..5] of byte;

Дано число типа byte . Проверить, является ли палиндромом его двоичное представление с учетом того, что сохранены старшие нули. Пример таких чисел: 102 (т. к. 102 = 0110 0110 2 , а это палиндром), 129 (129 = 1000 0001 2 ) и т. д.

a := 8 * a + 4 * b + 2 * c + d;

Даны два натуральных числа. Найти их наименьшее общее кратное.

Примечание: наименьшим общим кратным двух чисел m и n называется наименьшее натуральное число, которое делится на m и n . Обозначение: НОК( m , n )

while m <> n do begin

if m > n then begin

writeln(prod div m)

Дана последовательность символов длины n ( n >= 1 ). Проверить баланс круглых скобок в этом выражении. Например, при вводе выражения (())() программа должна сообщить о правильности расстановки скобок, а при вводе выражения ((()) – о неправильности.

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

for i := 1 to n do begin

if c = ‘(‘ then inc(count);

if c = ‘)’ then dec(count);

if count = -1 then break

writeln ( count = 0)

Сколько существует упорядоченных пар натуральных чисел а и b , для которых известны их наибольший общий делитель d и их наименьшее общее кратное m ?

a, b, i, j, d, m:integer;

function nod(a, b:integer):integer;

if a=b then nod:=a

if a>b then nod:=nod(a-b, b) else nod:=nod(a, b-a)

writeln (‘ Введите НОД двух чисел d’);

writeln (‘ Введите НО K двух чисел m’);

for i:=1 to 100 do

for j:=1 to 100 do

if ((nod(a, b)=d) and ((a*b div nod(a, b))=m)) then writeln (i, j);

Правительство гарантирует, что инфляция в новом году составит р % в месяц. Какого роста цен за год можно ожидать? Составить программу решения задачи.

Сложные проценты вычисляются по формуле .

writeln (‘Введите процент месячной инфляции’);

Факультету выделен стипендиальный фонд в размере f рублей в месяц. Результаты сессии таковы: «отличников», «хорошистов», «троечников». Повышенная стипендия (для отличников) составляет рублей, обычная — рублей; задолжники стипендии лишаются. Составить программу, определяющую сколько студентов каждой категории могут получать стипендию и каков будет остаток фонда на материальную помощь малоимущим студентам?

writeln (‘ Введите размер фонда ’);

writeln (‘Введите количество отличников, хорошистов и троечников’);

readln ( n 1, n 2, n 3);

writeln (‘Введите размер стипендий’);

if f>s1*n1 then k1:=n1 else k1:=f div s1;

if f>s2*n2 then k2:=n2 else k2:=f div s2;

if f>s2*n3 then k3:=n3 else k3:=f div s2;

writeln (‘Количество отличников, получивших стипендию=’, k 1);

if k 2>0 then writeln (‘Количество хорошистов, получивших стипендию= ‘, k 2);

if k 3>0 then writeln (‘Количество троечников, получивших стипендию =’, k 3);

writeln (‘Фонд материальной помощи=’, f );

N коробок стоят по кругу. В i -ой коробке j змей. Каждую минуту змеи переползают в соседнюю коробку (из i -ой в i +1 -ую), а из N -ой – в первую. Составить программу, определяющую количество змей в каждой коробке через М минут.