Задача 78.78. Обчислити значення функції 10Сos(2x) на проміжку від -2 до 2 з кроком 0.2.
Розв’язання: Дана задача є класичною у програмуванні і називається задачею табулювання. У даному випадку можна використати один з циклів, що дають можливість працювати з дійсними числами. Такими числами у мові Паскаль є цикл з передумовою і цикл з післяумовою. Саме останній ми і використаємо.
Програмна реалізація не становить труднощів, про що легко судити з приведеного тексту програми.
program tabulirovanie;
var a, b, h, x, y : real;
begin
a := -2; b:= 2; h := 0.2;
x := a;
repeat
y := 10*Cos(2*x);
writeln('x = ',x:3:2,' y = ',y:3:2);
x := x + h;
until x > b + h;
readln
end.
Спробуйте пояснити, чому у нас така дещо “дивна” умова закінчення циклу.
Варіант розв’язання задачі з використанням циклу з передумовою рекомендуємо написати самостійно.
Задача 79.79. Скласти програму для побудови графіка функції 10Sin(x+1) на проміжку від -3 до 3.
Розв’язання: Одразу зауважимо, що умова задачі нами самими сформульована не завсім коректно. Зроблено це з метою ще раз наголосити на необхідності уважного прочитання умови задачі і, в першу чергу, необхідності коректного формулювання самої умови задачі.
Домовимось, що графік будемо будувати у вигляді точок, хоча побудова графіка за допомогою ліній не набагато складніша. Сама задача побудови графіка функції є ускладненням попередньої задачі табулювання функції. Ускладнення полягає в тому, що отримані точки потрібно зобразити графічно на екрані комп’ютера. Побудувати графік за точками на аркуші паперу не становить великих труднощів. Нам же потрібно врахувати ряд тонкощів, а саме: специфіку направленості і розміщення екранної системи координат та той факт, що екранні координати можуть бути лише цілими числами.
Для зміни напрямку по осі ОY нам достатньо поміняти знак функції на протилежний. А ось з зсувом по осям центру координат до центру екрану справа трішки складніша, але тільки трішки. Зверніть увагу на зроблені нами коментарі у тексті програми і вам все стане одразу зрозумілим, особливо у тому випадку, коли ви детально розібрались з даним питанням у курсі математики. Якщо ж коментарі, наведені нами, вам не допомогли, рекомендуємо вам відкласти цю книгу на деякий час в сторону і засісти за підручник з математики.
Для перетворення дробових значень отриманих значень координат використаємо функцію round.
program grafik;
uses dos, crt, graph;
const kx = 100; { коефіцієнт розтягу по осі ОХ = 100 }
ky = 15 ; { коефіцієнт розтягу по осі ОY = 15 }
a = -3; b= 3;
h = 0.1; { задали крок табулювання }
var y, x : real;
gd, gm, i, x1, y1 : integer;
begin
gd := 9; gm := 1;
initgraph(gd,gm,'egavga.bgi'); { розмір екрану 640 на 350 точок }
setcolor(3); { будуємо осі координат }
rectangle(0,0,639,349);
line(0,175,640,175); line(640,175,620,170); line(640,175,620,180);
line(320,0,320,349); line(320,0,325,15); line(320,0,315,15);
setcolor(5); { задали колір для побудови графіка }
x := a; { початкове значення по осі ОХ }
while x <= b do { поки не досягли кінця інтервалу побудови графіка }
begin
y := 10*Sin(x+1); { задали функцію }
x1 := 320 + round(kx*x); { екранна координата по осі ОХ з зсувом вправо }
y1 := -round(ky*y)+175; { екранна координата по осі OY з зсувом вниз }
PutPixel(x1, y1, 10); { поставили точку на екрані }
x := x+h; { і перейшли до розгляду наступної точки }
end;
readln;
closegraph;
end.
Вправи та завдання
80.80. Натуральне число N (1 Ј N Ј 9999) вводиться з клавіатури. Підрахувати кількість дільників числа N.
81.81. В інтервалі [A, B] знайти число, що має найбільшу кількість дільників. (10 Ј A,B Ј 10000). А та В вводяться з клавіатури.
82.82. Скласти програму розкладу числа на прості множники.
83.83. Визначити, чи є дане число N, що вводиться з клавіатури, простим.
84.84. Перевірити, чи можна задане число N записати у вигляді добутку двох простих чисел.
85.85. Перевірити, чи можна задане число N записати у вигляді добутку трьох простих чисел.
86.86. Перевірити, чи можна задане число N записати у вигляді квадрату простого числа.
87.87. Перевірити, чи можна задане число N записати у вигляді кубу простого числа.
88.88. Знайти всі прості числа в заданому діапазоні.
89.89. Знайти перші 5 простих чисел, більших від деякого числа N.
90.90. Дано просте число N. Знайти наступне просте число.
91.91. Задано деяке число N. Знайти найближче до нього просте число.
92.92. Знайти три попередніх до числа N простих числа.
93.93. Прості числа А та В називаються «близнятами», якщо |А–В|=2. На заданому проміжку [A, B] знайти всіх «близнят».
94.94. Задано деяке парне число N. Визначити, чи є сусідні з ним числа «близнятами».
95.95. Задано деяке число N. Скласти програму пошуку простих чисел менших N при допомозі «решета Ератосфена».
96.96. Знайти суму дільників натурального числа N.
97.97. Задано натуральне N. Знайти 3 «досконалих»[3] числа, більших за задане.
98.98. Знайти всі «досконалі» числа на заданому проміжку.
99.99. Задано натуральне N. Знайти три найближчі до нього «досконалих» числа.
100.100. Знайти всі «дружні» числа на заданому діапазоні.
101.101. Визначити кількість розрядів[4] заданого натурального числа.
102.102. Знайти суму цифр заданого дійсного числа.
103.103. Знайти число М, яке утворене з даного числа записом цифр в зворотному порядку.
104.104. Перевірити чи є задане число «поліндромом»[5].
105.105. Знайти всі менші заданого числа N числа, які при піднесенні до квадрату утворюють число, що є «поліндромом».
106.106. Визначити на заданому проміжку всі прості числа, які є «поліндромами».
107.107. Знайти на заданому проміжку всі числа, що є одночасно і парними і «поліндромами» .
108.108. Знайти всі N–значні симетричні числа.
109.109. Знайти на заданому інтервалі всі симетричні числа.
110.110. Знайти на заданому інтервалі всі симетричні числа, які одночасно є «поліндромами».
111.111. Задано N–значне натуральне число. Зробити з нього (N–2)–значне, відкинувши першу і останню цифри.
112.112. Задано натуральні числа N i M. Отримати число К, яке утворюється з числа N викреслювання цифри розряду М.
113.113. Дано N–значне число. Замінити в ньому першу цифру на різницю першої і останньої цифр, якщо різниця додатна або різницею останньої і першої цифр в протилежному випадку.
114.114. З заданого натурального числа М утворити найменше число К, яке складається з тих же цифр, що і число М.
115.115. Знайти всі N–значні натуральні числа Армстронга (N<10).
116.116. Знайти всі натуральні числа менші заданого, сума квадратів цифр яких ділиться на К.
117.117. На заданому проміжку знайти всі натуральні числа, рівні сумі кубів своїх цифр.
118.118. На заданому проміжку знайти всі натуральні числа, рівні кубу суми своїх цифр.
119.119. В десятковому запису числа 52*6* дві цифри пропущено. Встановити, що це за число, якщо відомо, що воно ділиться на К (К – парне і не більше 100).
120.120. Знайти номер автомобіля, що порушив правила вуличного руху, якщо відомо, що номер N–значний (3 Ј N Ј 5), кратний 2, 5 і 7, а сума його цифр становить К (N Ј К Ј N*9).
121.121. Знайти кількість «щасливих» автобусних квитків в рулоні.
122.122. Якщо сума цифр тролейбусного квитка ділиться на 7, то такий квиток назвемо «везучим». Чи можуть два підряд квитки бути «везучими»?
123.123. З цілого числа М утворити число К, замінивши в ньому всі «двійки» на «трійки». Знайти всі спільні дільники обох чисел.
124.124. Задано натуральне число М. Утворити з нього число К, «викресливши» всі цифри 3 і 7, залишивши незмінним порядок інших цифр.
125.125. На заданому проміжку [A, B] надрукувати всі числа, в запису яких немає двох заданих цифр.
126.126. Підрахувати кількість N–значних натуральних чисел (N Ј 10), в запису яких всі цифри різні.
127.127. Вивести на екран всі натуральні числа з заданого інтервалу, якщо відомо, що ці числа повинні бути кратними М, а сума цифр кратна К.
128.128. Знайти і вивести на екран всі N–значні натуральні числа, сума цифр яких не змінюється при множенні на К (1 Ј N Ј 100000, 2 Ј K Ј 9).
129.129. Знайти всі натуральні числа з заданого інтервалу, які кратні свому цифровому кореню.
130.130. З заданого інтервалу знайти всі натуральні числа, цифровий корінь яких кратний 3 або 5.
131.131. З заданого інтервалу знайти всі натуральні числа, цифровий корінь яких є простим числом.
132.132. Скласти програму добування кореня квадратного з натурального числа N. Користуватись операцією sqrt заборонено.
133.133. Обчислити всі корені простих чисел з заданого діапазону з заданою точністю. Користуватись операцією sqrt заборонено.
134.134. Вважаючи три заданих числа А, В, С знаменниками трьох звичайних дробів, знайти спільний знаменник цих дробів.
135.135. Написати програму додавання двох звичайних дробів. Результат додавання записати у вигляді звичайного дробу.
136.136. Задано два числа А і В. Число С є найбільшим спільним дільником цих чисел, а число М – найменше спільне кратне А і С. Знайти корінь квадратний з М.
137.137. Написати програму скорочення звичайного дробу.
138.138. Перевірити, чи є три задані числа взаємно простими.
139.139. Знайти всі дільники числа М, які є взаємно простими з числом К.
140.140. На заданому інтервалі знайти всі числа Фібоначчі. Порахувати їх кількість.
141.141. На заданому інтервалі знайти всі число Фібоначчі, які є простими числами.
142.142. Знайти всі дільники числа М, які є числами Фібоначчі.
143.143. На заданому проміжку знайти різницю між кількістю чисел, що на є числами Фібоначчі і кількістю чисел Фібоначчі.
144.144. У заданому діапазоні знайти всі Піфагорові трійки і їх кількість.
145.145. Знайти найменше число менше М, яке при діленні на 2 дає в остачі 1, при діленні на 3 дає в остачі 2, при діленні на 4 дає в остачі 3, при діленні на 5 дає в остачі 4, при діленні на 6 дає в остачі 5 і саме число М кратне 7.