Завдання № 1
Написати програму для обчислення значення виразу:
2
1 +
3 + 4
6
5 +
7 + x
при різних значеннях х.
Передбачити програмну обробку значень х, при яких вираз не існує.
Рішення
Аналіз введених з клавіатури вихідних даних
Умова, при якому х> 0
Повторення попередньої операції для кожної функції
Виведення умови для виходу
Висновок результатів
program Project1;
{$ APPTYPE CONSOLE}
uses
SysUtils;
var
x, y, n: real;
begin
repeat
writeln ('enter x');
readln (x);
if (x +7) = 0 then writeln ('resheniy net') else
if (5 +6 / (7 + x)) = 0 then writeln ('resheniy net') else
if (3 +4 / (5 +6 / (7 + x))) = 0 then writeln ('resheniy net')
else
y: = 1 +2 / (3 +4 / (5 +6 / (7 + x)));
writeln ('y =', y: 1:10);
writeln ('dly vuhoda nagmite 0, esli net to 1');
readln (n);
if n = 0 then break
until false
end.
Рис. 1. Результати роботи програми для завдання 1
Завдання № 2
Шахова дошка містить 8х8 клітин. Горизонталі і вертикалі позначаються цифрами 1-8. Написати програму, що перевіряє, чи можна з першої заданої клітини потрапити на другу одним ходом чорного слона.
Рішення
Аналіз введених з клавіатури вихідних даних для першої клітини
Умова для а1> 8 або в1> 8.
Аналіз введених з клавіатури вихідних даних для другої клітини
Умова для abs (а2-а1).
Виведення умови для виходу
Висновок результатів
Для вирішення задачі введемо координати першої клітини, при тому, що вони повинні бути менше восьми; потім координати другий клітини (вони також повинні бути менше восьми). Якщо різниця координат перший клітини дорівнює різниці координат другий клітини, то значить з першої клітини можна потрапити на другу одним ходом чорного слона, якщо координати не рівні, то не можна. Запишемо результат.
program Project2;
{$ APPTYPE CONSOLE}
uses
SysUtils;
var
a1, a2, b1, b2: integer;
c: real;
begin
repeat
writeln ('Enter koordinati 1-oy kletki ot 1 do 8');
readln (a1, b1);
if (a1> 8) or (b1> 8) then writeln ('Nelsya enter eto chislo, enter other');
writeln ('Enter koordinati 2-oy kletki ot 1 do 8');
readln (a2, b2);
if abs (a2-a1) = abs (b2-b1) then writeln ('mogno') else writeln ('nelsya');
readln;
writeln ('dly vuhoda nagmite 0, esli prodolgit to 1');
readln (c);
if c = 0 then break;
until false
end.
Рис.2. Результати рабат програми для завдання 2
Завдання № 3
Тетяна Ларіна, читаючи черговий французький роман, підрахувала суму номерів прочитаних сторінок. Написати програму, що визначає номер останньої прочитаної сторінки.
Рішення
Аналіз введених з клавіатури вихідних даних
Рішення за допомогою арифметичної прогресії
Виведення умови для виходу
Висновок результатів
program Project2;
{$ APPTYPE CONSOLE}
uses
SysUtils;
var
sum, i, n: integer;
begin
write ('enter n:');
readln (n);
i: = 0;
repeat
inc (i);
sum: = sum + i;
until sum> = n;
writeln ('otvet', i);
readln (i);
end.
Рис. 3. Результати роботи програми для завдання 3
Завдання № 4
Знайти всі двозначні числа, сума цифр яких не змінюється при множенні на 2,3,4,5,6,7,8,9.
Рішення
Для написання цієї програми скористаємося функцією sumc (множення I на будь-яке однозначне число). Для перевірки кратності зручно використовувати операцію mod, що дозволяє визначити залишок при розподілі цілих чисел. Оскільки числа двозначні, то цикл буде від 10 до 99.
program Project 4;
/ / Uses SysUtils;
var
sum, i: integer;
function sumc (val: integer): integer;
var
x: integer;
begin
x: = 0;
repeat
x: = x + val mod 10;
val: = val div 10;
until val = 0;
sumc: = x;
end;
begin
for i: = 10 to 99 do
begin
sum: = sumc (i);
if sumc (i * 2) = sum then writeln ('2: ', i);
if sumc (i * 3) = sum then writeln ('3: ', i);
if sumc (i * 4) = sum then writeln ('4: ', i);
if sumc (i * 5) = sum then writeln ('5: ', i);
if sumc (i * 6) = sum then writeln ('6: ', i);
if sumc (i * 7) = sum then writeln ('7: ', i);
if sumc (i * 8) = sum then writeln ('8: ', i);
if sumc (i * 9) = sum then writeln ('9: ', i);
ReadLn;
end.
Рис. 4. Результати роботи програми для задачі 4
Завдання № 5
Одновимірний масив, що містить N елементів, складається з нулів, одиниць і двійок, розташованих у довільному порядку (заповнення масиву-випадковим чином). Перетворити масив так, щоб спочатку розташувалися всі двійки, потім усі нулі і, нарешті, всі одиниці.
Рішення
program Project5;
/ / Uses SysUtils;
const
n = 20;
var
arr: array [1 .. n] of byte;
tmp, i, j, k: byte;
begin
randomize;
for i: = 1 to n do arr [i]: = random (3);
for i: = 1 to n do
for j: = i to n do
if arr [i] <arr [j] then
begin
tmp: = arr [i];
arr [i]: = arr [j];
arr [j]: = tmp;
end;
for i: = 1 to n do if arr [i] = 1 then
begin
k: = i;
break;
end;
for i: = k to n do
for j: = i to n do
if arr [i]> arr [j] then
begin
tmp: = arr [i];
arr [i]: = arr [j];
arr [j]: = tmp;
end;
for i: = 1 to n do write (arr [i], '');
ReadLn;
end.
Рис. 5. Результати роботи програми для завдання 5
Завдання № 6
Задано матриця відстаней між містами. Написати програму, в якій зазначено усі міста, відстані від яких до інших міст не більше А.
Рішення
program Project6;
/ / Uses SysUtils;
const
a = 20;
var
arr: array [1 .. 5, 1 .. 5] of byte;
i, j: byte;
begin
randomize;
for i: = 1 to 5 do
for j: = 1 to 5 do arr [i, j]: = 0;
for i: = 2 to 5 do
for j: = 1 to i-1 do arr [i, j]: = random (50) +1;
for i: = 1 to 5 do
for j: = 1 to 5 do if (arr [i, j] <= a) and (arr [i, j] <> 0) then writeln (i, '', j, '', arr [i, j ]);
ReadLn;
end.
Рис. 6. Результати роботи програми для завдання 6
Завдання № 7
Видалити ведучі та кінцеві пробіли в рядку.
Рішення
Аналіз введених з клавіатури вихідних даних
Застосування функції trim
Виведення умови для виходу
4. Висновок результатів
Для вирішення цього завдання використовуємо рядковий тип даних. Для видалення пробілів скористаємося функцією trim (видаляє всі ведучі і кінцеві пробіли). Запишемо результат.
program Project7;
{$ APPTYPE CONSOLE}
uses
SysUtils;
var
s: string; Index, Count: integer;
n: real;
begin
repeat
s: = ('enter stroku s klaviaturi');
readln (s);
s: = trim (s);
writeln (s);
write ('dly vuhoda nagmite 0, esli prodolgit to 1');
readln (n);
if n = 0 then break
until false
end.
Рис.7. Результати роботи програми для задачі 7
Завдання № 8
Написати програму для видалення всіх рядків двовимірного масиву з негативними елементами.
Рішення
Для вирішення задачі використовуємо функцію haveotr, а також процедуру delete (видаляє з рядка символи, починаючи з позиції Index). Відзначимо, що haveotr = брехня, але якщо масив від 1 до 5 <0, то в цьому випадку haveotr = правда.
program Project8;
/ / Uses SysUtils;
var
arr: array [1 .. 5, 1 .. 5] of integer;
i, j: byte;
function haveotr (n: byte): boolean;
begin
haveotr: = false;
for j: = 1 to 5 do if arr [n, j] <0 then haveotr: = true;
end;
procedure del (n: byte);
begin
for j: = 1 to 5 do arr [n, j];
end;
begin
repeat
randomize;
for i: = 1 to 5 do
for j: = 1 to 5 do arr [i, j]: = random (5) -1;
for i: = 1 to 5 do
if haveotr (i) then del (i);
until false
end.
Завдання № 9
Наведені два непустих безлічі великих і малих літер. Написати програму, яка виводить перераховані множини в алфавітному порядку.
Рішення
Для вирішення завдання вводимо два непустих безлічі (випадковим чином удвох літери). N - число постійне і дорівнює 20. Обчислюємо за допомогою to length. Записуємо результат.
program Project 9;
/ / Uses SysUtils;
const
n = 20;
var
tmp: char;
pr, st: string;
i, j: byte;
a: real;
begin
repeat
writeln ('enter st');
readln (st);
for i: = 1 to length (st) do
for j: = i to length (st) do
if st [i]> st [j] then
begin
tmp: = st [i];
st [i]: = st [j];
st [j]: = tmp;
end;
writeln ('enter pr');
readln (pr);
for i: = 1 to length (pr) do
for j: = i to length (pr) do
if pr [i]> pr [j] then
begin
tmp: = pr [i];
pr [i]: = pr [j];
pr [j]: = tmp;
end;
writeln (st);
writeln (pr);
write ('dly vuhoda nagmite 0, esli prodolgit to 1');
readln (a);
if a = 0 then break
until false
end.
Рис. 9. Результати роботи програми для завдання 9
Завдання № 10
У файлі цілих чисел замінити всі парні натуральні числа їх квадратами.
Рішення
program Project1;
/ / Uses SysUtils;
var
n, i, tmp: integer;
Fin, Fout: text;
begin
assignfile (Fin, 'in.txt');
ReSet (Fin);
assignfile (Fout, 'out.txt');
ReWrite (Fout);
readln (fin, n);
for i: = 1 to n do
begin
read (fin, tmp);
if tmp mod 2 = 0 then write (fout, tmp * tmp, '')
else write (fout, tmp, '');
end;
closeFile (Fin);
closeFile (Fout);
end.