Решение задач на языке программирования Pascal
(Подготовка к ОГЭ)
Авторы проекта: Александрова З.В., учитель физики и информатики МБОУ СОШ №5 пгт Печенга, Мурманская область
Задача 1 .
Напишите программу для выведения на экран трёх чисел в порядке обратном вводу. Нужно ввести с клавиатуры три числа (первое, второе и третье), а компьютер должен вывести третье, затем первое и второе.
Решение:
program tri_сhisla;
var a, b, c: integer;
begin
writeln('Введите три числа через пробел');
readln(a, b, c);
writeln(c,' ', a, ' ',b);
read
end .
y then begin x:=x+y; y:=x-y; x:=x-y; writeln('x=',x); writeln('y=',y); readln end ; end . " width="640"
Задача 2.
Напишите программу, которая производит обмен значений переменных x и y , если x больше y .
program Obmen;
var x,y: integer;
begin
writeln('Введите значения x и y');
readln(x,y);
if xy then
begin
x:=x+y;
y:=x-y;
x:=x-y;
writeln('x=',x);
writeln('y=',y);
readln
end ;
end .
n then m:=m-n; if mthen n:=n-m until m=n; nod:=m; writeln('НОД = ', nod); readln end . program nod1; var m, n: integer; nod: integer; begin writeln ('Введите первое число m='); readln (m); writeln ('Введите второе число n='); readln (n); while mn do if mn then m:=m-n else n:=n-m; nod:=m; writeln('НОД = ', nod); readln end . " width="640"
Задача 3.
Напишите программу для вычисления наибольшего общего делителя двух целых чисел.
1 способ
2 способ
program nod2;
var
m, n: integer;
nod: integer;
begin
writeln ('Введите первое число m=');
readln (m);
writeln ('Введите второе число n=');
readln (n);
repeat
if mn then m:=m-n;
if mthen n:=n-m
until m=n;
nod:=m;
writeln('НОД = ', nod);
readln
end .
program nod1;
var
m, n: integer;
nod: integer;
begin
writeln ('Введите первое число m=');
readln (m);
writeln ('Введите второе число n=');
readln (n);
while mn do
if mn then m:=m-n
else n:=n-m;
nod:=m;
writeln('НОД = ', nod);
readln
end .
'); readln (n); if n0 then k1:=k1+1; if nthen k2:=k2+1; until n=0; writeln ('Введено:') ; writeln ('положительных чисел - ', k1); writeln ('отрицательных чисел - ', k2); readln end . " width="640"
Задача 4.
Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введен 0) и подсчет количества введенных положительных и отрицательных чисел.
program podschet_chisel_1;
var n, k1, k2: integer;
begin
k1:=0;
k2:=0;
repeat
writeln ('Введите целое число');
readln (n);
if n0 then k1:=k1+1;
if nthen k2:=k2+1;
until n=0;
writeln ('Введено:') ;
writeln ('положительных чисел - ', k1);
writeln ('отрицательных чисел - ', k2);
readln
end .
Задача 5.
Даны натуральные числа n и k. Составить программу вычисления выражения 1 k + 2 k + … + n k . Для решения задачи нужно организовать два цикла, один из которых поместим внутрь другого. Такие конструкции называют вложенными циклами.
program dvazikla;
var
n,k,sum,d,i,j : integer;
begin
writeln('Введите значения n и k через пробел');
readln(n,k);
sum:=0;
for i:=1 to n do
begin
d:= 1;
for j:=1 to k do
d:=d*i;
sum:= sum+ d;
end ;
writeln(sum);
readln
end .
Задача 6.
Проверить, является ли четырехзначное число счастливым билетом. Дано четырехзначное число. Проверить, является ли оно «счастливым билетом».
Счастливым билетом называется число, в котором: а) при четном количестве цифр в числе сумма цифр его левой половины равна сумме цифр его правой половины; б) при нечетном количестве цифр – то же самое, но с отбрасыванием серединной цифры.
program Schastliviy_bilet;
var
n: integer ;
left, right: integer ;
begin
writeln( 'Введите номер билета - четырёхзначное число' );
readln(n);
right := n mod 10 ;
n := n div 10 ;
right := right + n mod 10 ;
n := n div 10 ;
left := n mod 10 ;
n := n div 10 ;
left := left + n;
writeln(left=right);
if left=right then writeln( 'Билет является счастливым' )
else writeln( 'Билет не является счастливым' );
readln
end .
Задача 7.
Напишите программу, которая в последовательности натуральных чисел определяет СУММУ чисел. Программа получает на вход количество чисел в последовательности, а затем сами числа. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число – СУММУ чисел.
Program Summa_ch;
Var a, i, sum, n: integer ;
Begin
Writeln( 'Введите количество чисел n
Readln(n);
sum:= 0 ;
For i:= 1 to n do
Begin
Writeln('Введите число’);
Readln(a);
sum:= sum + a;
End ;
Writeln( 'sum=' , sum);
readln
End .
Задача 8.
Напишите программу, которая в последовательности натуральных чисел определяет СУММУ чисел, КРАТНЫХ 4. В последовательности всегда имеется число, кратное 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число – СУММУ чисел, кратных 4.
Program Summa_ch1;
Var a, i, sum, n: integer ;
Begin
Writeln( 'Введите количество чисел n
Readln(n);
sum:= 0 ;
For i:= 1 to n do
Begin
Writeln('Введите число’);
Readln(a);
if a mod 4 = 0
then sum:= sum + a;
End ;
Writeln( 'sum=' , sum);
readln
End .
Задача 9.
Напишите программу, которая в последовательности натуральных чисел определяет СУММУ чисел, ОКАНЧИВАЮЩИХСЯ на 2. В последовательности всегда имеется число, ОКАНЧИВАЮЩЕЕСЯ на 2. Программа получает на вход количество чисел в последовательности, а затем сами числа. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число – СУММУ чисел, ОКАНЧИВАЮЩИХСЯ на 2.
Program Summa_ch2;
Var a, i, sum, n: integer ;
Begin
Writeln( 'Введите количество чисел n
Readln(n);
sum:= 0 ;
For i:= 1 to n do
Begin
Writeln('Введите число’);
Readln(a);
if a mod 10 = 2
then sum:= sum + a;
End ;
Writeln( 'sum=' , sum);
Readln
End .
Задача 10.
Напишите программу, которая в последовательности натуральных чисел определяет СУММУ чисел, чётных чисел. В последовательности всегда имеется чётное число. Программа получает на вход количество чисел в последовательности, а затем сами числа. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число – СУММУ чётных чисел.
Program Summa_ch3;
Var a, i, sum, n: integer ;
Begin
Writeln( 'Введите количество чисел n
Readln(n);
sum:= 0 ;
For i:= 1 to n do
Begin
Writeln( 'Введите число' );
Readln(a);
if a mod 2 = 0
then sum:= sum + a;
End ;
Writeln( 'sum=' , sum);
Readln
End .
0 ) then l := l + 1 ; if (a then m := m + 1 ; end ; writeln(k, ' ' , l, ' ' , m, ' ' ); end . " width="640"
Задача 11.
Подсчитайте, сколько среди данных N чисел нулей, положительных чисел, отрицательных чисел.
program chisla;
var
n, a, i, k, l, m: integer ;
begin
k := 0 ;
l := 0 ;
m := 0 ;
writeln ( 'Введите количество чисел' );
read(n);
for i := 1 to n do
begin
writeln ( 'Введите число' );
read(a);
if (a = 0 ) then
k := k + 1 ;
if (a 0 ) then
l := l + 1 ;
if (a then
m := m + 1 ;
end ;
writeln(k, ' ' , l, ' ' , m, ' ' );
end .
0 do begin if (a mod 10 c) then c := a mod 10 ; if (a mod 10 then b := a mod 10 ; a := a div 10 ; end ; writeln(b, ' ' , c); read end . " width="640"
Задача 12.
Дано натуральное число N. Определить наименьшую и наибольшую цифры данного числа
program chislo1;
var
a, b, c: integer ;
begin
writeln ( 'Введите число' );
read(a);
b := 10 ;
c := - 10 ;
while a 0 do
begin
if (a mod 10 c) then
c := a mod 10 ;
if (a mod 10 then
b := a mod 10 ;
a := a div 10 ;
end ;
writeln(b, ' ' , c);
read
end .
Задача 13.
Программа получает на вход последовательность целых неотрицательных чисел, каждое число записано в отдельной строке. Последовательность завершается числом 0, при считывании которого программа должна закончить свою работу и вывести количество членов последовательности (не считая завершающего числа 0).Числа, следующие за числом 0, считывать не нужно
program posledov;
var
a, s: integer ;
begin
s := 0 ;
writeln ( 'Введите число' );
read (a);
while a 0 do
begin
s := s + 1 ;
read(a);
end ;
writeln(s);
end .
Задача 14.
Выведите все точные квадраты натуральных чисел, не превосходящие данного числа N. Входные данные: задано единственное целое число N. Выходные данные: необходимо вывести все точные квадраты натуральных чисел, не превосходящие данного числа N.
program kvadratchislo;
var
i, n: integer ;
begin
writeln ( 'Введите количество чисел' );
read(n);
for i := 1 to n do
if sqr(i) then
writeln(sqr(i));
readln
end .
Задача 15.
Определите количество четных элементов в последовательности, завершающейся числом 0. Само число 0, и все, что следует за ним, учитывать не нужно.
program posvedchet;
var
a, k: integer ;
begin
k := 0 ;
writeln ( 'Введите число' );
read(a);
while a 0 do
begin
if (a mod 2 = 0 ) then
k := k + 1 ;
read(a);
end ;
writeln(k);
end .