Pascal. Программы 9 класс

Повторение. 

Видео уроки на повторение

Решение математических выражений в Pascal. 


Задача (урок 9к2-29.11.2021, 9к1-30.11.2021)

Составить программу для вычисления значение выражения  






где x целое число, вводимое с клавиатуры.
блок-схема

текст программы:
var x:integer;
    y:real;
begin
writeln('введите целое число');
readln(x);
y:=(5*x+sqr(x))/8;
writeln ('при x=',x,' y =',y);
end.





Одномерный массив.

Упорядоченное множество однотипных элементов, расположенное в строке (или столбце).
В общем виде:
а1, а2, а3, ..., аn

Описание одномерного массива
var mas: array[1..5] of integer;
Задается массив с именем mas, количество элементов 5, элементы целые числа
имена элементов - mas[1], mas[2] ...

Формирование массива. Ввод элементов массива с клавиатуры.


Задача
 
(урок 9к2-29.11.2021, 9к1-30.11.2021)

Составьте программу, задающую одномерный массив целых чисел из 6 элементов, вводимых с клавиатуры, и оформите вывод элементов на экран в строчку.

текст программы
var m: array [1..6] of integer;
    i: integer;
begin
writeln('ввод элементов');
for i:=1 to 6 do readln(m[i]);
for i:=1 to 6 do write(m[i],' ');
end.

Формирование массива с помощью функции случайных чисел random. 

Задача  (урок 9к2-06.12.2021)
Составьте программу, задающую одномерный массив размерность 10, состоящий из случайных чисел из промежутка  от 5 до 22. Оформите вывод элементов на экран в строчку.

Пояснение.
Обратите внимание, что случайные числа задаются функцией random(x). Для того чтобы задать случайные числа из промежутка от a до b есть формула x:=random(b-a+1)+a, в нашем случае
x:=random(18)+5


текст программы
var m: array [1..10] of integer;
    i: integer;
begin
for i:=1 to 10 do
begin
m[i]:= random(18)+5;
write(m[i],' ');
end;
end.

Задача  (урок 9к2-20.12.2021, 9к1-21.12.2021)
Составьте программу, которая в одномерном массиве размерностью 12 (элементы случайные числа из промежутка  от 1 до 9) подсчитывает количество чётных элементов. Оформите вывод элементов на экран в строчку, вывод количества чётных на следующей строке.
Пояснение Обратите внимание, что условием чётности элемента будем выводить через функцию mod (целочисленный остаток от деления). Четные числа делятся на 2 с нулевым остатком: if w[i] mod 2=0 then k:=k+1

текст программы
var m:array[1..12] of integer;
    i,k:integer;
begin
k:=0;
for i:=1 to 12 do
begin
m[i]:=random(9)+1;
write(m[i],' ');
if m[i] mod 2=0 then k:=k+1;
end;
writeln;
writeln('Количество четных - ',k);
end.
Задача  (урок 9к2-20.12.2021, 9к1-21.12.2021)
Составьте программу, которая в одномерном массиве размерностью 8 (элементы массива случайные числа из промежутка от 15 до 100) находит максимальный элемент.  Оформите вывод элементов на экран в строчку, максимальный на следующей строке.
Пояснение
Обратите внимание, что это задание аналогично задачам на поиск максимального из вводимых с клавиатуры чисел (материал 8 класса), но в данном случае при составление программы используется массив.

текст программы
var m:array[1..8] of integer;
    i,max:integer;
begin
max:=14;
for i:=1 to 8 do
begin
m[i]:=random(86)+15;
write(m[i],' ');
if max<m[i] then max:=m[i];
end;
writeln;
writeln('Максимальный - ',max);
end.

Задача  (урок 
9к2-20.12.2021, 9к1-21.12.2021)
Составьте программу, которая в одномерном массиве размерностью 12 (элементы массива случайные числа из промежутка от 0 до 6) находит количество элементов равных 3. Оформите вывод элементов на экран в строчку, количество искомых элементов на следующей строке.
Пояснение
Обратите внимание, что переменная k - счетчик, поэтому начальное значение переменной обнуляем. Условие для подсчета 3 if w[i]=3 then k:=k+1, т.е. если элемент равен 3, то k увеличивается на 1.

текст программы
var w:array[1..12] of integer;
    i,k:integer;
begin
k:=0;
for i:=1 to 12 do
begin
w[i]:=random(7);
write(w[i],' ');
if w[i]=3 then k:=k+1;
end;
writeln;
writeln('Количество троек ',k);
end.

Задача  (урок 9к2-10.01.2022, 9к1-11.01.2022)
Составьте программу, которая в одномерном массиве размерностью 7 (элементы массива случайные числа из промежутка от 1 до 8) подсчитывает сумму элементов меньше или равных 3. Оформите вывод элементов на экран в строчку, количество искомых элементов на следующей строке.
Пояснение
Обратите внимание, что переменная s - накопитель суммы, поэтому начальное значение переменной обнуляем. Условие для подсчета 3 if w[i]<=3 then s:=s+w[i], т.е. если элемент меньше или равен 3, то s увеличивается на значение элемента.
текст программы
var w:array[1..7] of integer;
    i,s:integer;
begin
s:=0;
for i:=1 to 7 do
begin
w[i]:=random(8)+1;
write(w[i],' ');
if w[i]<=3 then s:=s+w[i];
end;
writeln;
writeln('Сумма элементов <=3 ',s);
end.

Задача  (урок 9к2-17.01.2022, 9к1-18.01.2022)
Составьте программу, которая в одномерном массива размерность 20, состоящим из случайных чисел из промежутка  от 1 до 100, находится наибольший элемент оканчивающийся на цифру 2. Оформите вывод элементов на экран в строчку.
Пояснение 
Обратите внимание, что в данной задаче используем сложное условие. Проверка, что число оканчивается на цифру 2: m[i] mod 10 =2 и сравнение с максимальным max<m[i].
max может не поменяется, т.е. в данной последовательности не будет чисел, оканчивающихся на 2, и после цикла нужно поставить проверку на значение max.
текст программы
var m:array[1..20] of integer;
    i,max:integer;
begin
max:=0;
for i:=1 to 20 do
begin
m[i]:=random(100)+1;
write(m[i],' ');
if (m[i]mod 10=2)and(max<m[i]) then max:=m[i];
end;
writeln;
if max=0 then writeln('Среди данных чисел, нет оканчивающегося на 2')
else writeln('Максимальный, оканчивающийся на 2 ',max);
end.

Оператор цикла while (цикл ПОКА)

while <условие> do оператор;

Выполняет действие или действия пока истинно условие. После каждого прохождения тела цикла, условие проверяется и если условие ложно, осуществляется выход из цикла. 
Если условие истинно всегда, то происходит зацикливание. Чтобы прервать зациклившуюся программу, следует использовать комбинацию клавиш Ctrl-F2.
Условие - логическое выражение, записанное с помощью логических операторов сравнения.


Задача  (урок 9к2-31.01.2022, 9к1-01.02.2022)
Составьте программу, которая пока не будет введен 0 запрашивает целые положительные числа с клавиатуры и находит среди них наибольшее. Результат выводится на экран.
текст программы
var x,max:integer;
begin
writeln('Введите целое число');
readln(x);
max:=0;
while x<>0  do 
begin
if max<x then max:=x;
readln(x);
end;
writeln('max=',max);
end.

Задача (урок )
Составьте программу, которая для любого вводимого с клавиатуры целого числа вычисляет и выводит на экран количество единиц, десятков, сотен и т.д. (например, для числа 7865 - вывод 5 - 6 - 8 - 7)
Пояснение 
Обратите внимание, что в данной программе удобно использовать оператор цикла while (пока), с помощью функции mod 10 находим последнюю цифру числа 
a:= x mod 10 и выводим ее на экран, затем убираем ее с помощью функции div 10  x:=x div 10 и работаем с новым числом и т.д. пока x не станет 0.
текст программы
var x,a:integer;
begin
readln(x);
writeln('Результат');
while x<>0 do
begin
a:= x mod 10;
write(a,' - ');
x:=x div 10;
end;
end.

Задача (урок )
В целочисленных массивах a и b содержатся длины катетов десяти прямоугольных треугольников (a[i] – длинна первого катета, b[i] – длинна второго катета i-того треугольника). Найдите треугольник с наибольшей площадью. Выведите его номер, длины катетов и площадь. Предусмотрите случай, когда таких треугольников несколько.
текст программы
var a:array[1..10] of integer;
    b:array[1..10] of integer;

    s:array[1//10] jf real;
    i,n,k:integer;sm:real;
begin
sm:=0;
n:=0;
for i:=1 to 10 do
begin
a[i]:=random(10)+1;
b[i]:=random(10)+1;
write(i,':',a[i],',',b[i],' ');
s[i]:=1/2*a[i]*b[i];
if sm<s[i] then begin sm:=s[i];n:=i;end;
end;

for i:=1 to 10 
if s[i]=sm then k:=k+1;
writeln;
writeln('наибольшая площадь=',sm,' катеты ',a[n],',',b[n]);

writeln(' количество таких треугольников ',k);
end.



Сортировка одномерного массива

Задача (урок )
Составить программу, которая сортирует элементы одномерного массива размерностью 7 по возрастанию (элементы массивы случайные числа от 10 до 60).
текст программы
var mas:array[1..7] of integer;
    i,j,a:integer;
begin
for i:=1 to 7 do
begin
mas[i]:=random(51)+10;
write(mas[i],' ');
end;
for j:=1 to 6 do
for i:=1 to 6 do
if mas[i]>mas[i+1] then
       begin
       a:=mas[i];
       mas[i]:=mas[i+1];
       mas[i+1]:=a;
       end;
writeln;
write ('Отсортированный массив  ');
for i:=1 to 7 do write(mas[i],' ');
end.

Задача (урок )
Составить программу, которая в данном массиве: m[1]:=4; m[2]:=8; m[3]:=7; m[4]:=2; m[5]:=1;m[6]:=8; m[7]:=1; m[8]:=5; m[9]:=6; m[10]:=8;
находит максимальный элемент (элементы) и заменяет его (их) на 0.
текст программы
var m:array[1..10] of integer;
    i,max,k:integer;
begin
m[1]:=4; m[2]:=8; m[3]:=7; m[4]:=2; m[5]:=1;
m[6]:=8; m[7]:=1; m[8]:=5; m[9]:=6; m[10]:=8;
max:=m[1];

for i:=1 to 10 do
begin
write(m[i],' ');
if m[i]>max then max:=m[i];
end;
writeln;
writeln('max=',max);

for i:=1 to 10 do
if m[i]=max then m[i]:=0;

writeln('результат');
for i:=1 to 10 do
write(m[i],' ');
end.

Повторение. Работа со строковыми функциями copy и length. 
Задача  (урок )
Составьте программу, которая печатает на экране вводимое с клавиатуры словосочетание из двух слов в обратном порядке (пример ввод: доброе утро; вывод: утро доброе).
Пояснение 
Для решения данной задачи воспользуемся оператором цикла while. Вырезая из введенной строки s последовательно по одной букве с помощью функции copy, сравниваем эти символы с пробелом и пока не пробел собираем их в строку s1. Это будет второе слово в новой фразе. Первое вырезаем с символа n+1, количество символов - длина фразы - n.
текст программы
uses crt;
var s,s1:string;
    n,d:integer;
begin
writeln('Введите фразу из 2-х слов, между словами 1 пробел');
readln(s);
d:=length(s);
n:=1;
while copy(s,n,1)<>' ' do
begin
s1:=s1+copy(s,n,1);
n:=n+1;
end;
writeln(copy(s,n+1,d-n)+' '+s1);
end.