У цьому розділі ми розглянемо функції, які мають декілька вхідних параметрів і одне значення, що повертається.
Вхідні параметри мають цілий тип, а значення, що повертається цілого або дійсного типу, якщо функція щось обчислює, або логічного типу, якщо функція повинна відповісти на запитання: вірно чи не вірно.
Написати функції:
Особливість цих функцій у тому, що в параметрі вказується порядковий номер цифри, а цифри перебираються в числі починаючи з останньої. Тобто номер цифри залежатиме від того, з якого боку початок нумерації. Для перерахунку номера цифри потрібно знати кількість цифр числа. Тому тут потрібна функція NumDig.
Використовуючи ці функції написати таку програму: ввести з клавіатури N натуральних чисел. В кожному числі видалити першу мінімальну цифру.
Результат роботи програми

Код програми з функціями
#include <iostream>
#include <cmath>
using namespace std;
// Прототипи функцій
int PosFirstMinDig(int);
int NumDig(int);
int DelDigCfromA(int, int);
// Функція для знаходження позиції першої мінімальної цифри
int PosFirstMinDig(int num) {
if (num <= 0) return -1;
int minDig = 9, pos = 0, count = 0;
int temp = num;
// Знаходимо мінімальну цифру та її позицію справа
while (temp > 0) {
count++;
int digit = temp % 10;
if (digit <= minDig) {
minDig = digit;
pos = count;
}
temp /= 10;
}
// Переводимо позицію для відліку зліва
return NumDig(num) - pos + 1;
}
// Функція для підрахунку кількості цифр у числі
int NumDig(int num) {
if (num <= 0) return 0;
return (int)log10(num) + 1;
}
// Функція для видалення цифри за номером N з числа A
int DelDigCfromA(int A, int N) {
if (NumDig(A) == 1) return 0;
int digits = NumDig(A);
if (N < 1 || N > digits) return A;
// Переводимо позицію зліва направо
int posFromRight = digits - N + 1;
int result = 0, power = 0;
int temp = A;
int count = 0;
while (temp > 0) {
count++;
int digit = temp % 10;
if (count != posFromRight) {
result += digit * pow(10, power);
power++;
}
temp /= 10;
}
return result;
}
int main() {
int N;
cout << "Введіть кількість чисел (N): ";
cin >> N;
for (int i = 0; i < N; i++) {
int num;
cout <<"Введіть число " << i + 1 << ": ";
cin >> num;
if (num <= 0) {
cout << "Неправильне введення: число має бути додатним" << endl;
continue;
}
int pos = PosFirstMinDig(num);
if (pos == -1) {
cout << "Помилка обробки числа" << endl;
continue;
}
int result<<Число після видалення першої мінімальної цифри: " << result << endl;
}
return 0;
}
Написати функцію bool IsPow(int A,int B), яка визначає, чи є число А ступенем числа В. Використовуючи цю функцію написати таку програму: ввести з клавіатури натуральні числа N, A та B. Знайти N чисел більших А, які є ступенем числа В
Результат роботи програми

Код програми
#include <iostream>
using namespace std;
// Перевірка, чи є a степенем b
bool IsPow(int, int);
int main()
{
int n, a, b, k = 0;
cin >> n >> a >> b;
do
{
a++;
if (IsPow(a, b))
{
cout << a << " ";
k++;
}
} while (k < n);
return 0;
}
// Функція для перевірки, чи є a степенем b
bool IsPow(int a, int b)
{
if (a <= 0 || b <= 0) return false;
while (a % b == 0)
{
a = a / b;
}
if (a == 1) return true;
else return false;
}
Написати функцію LengthByCoords, яка знаходить довжину відрізка за координатами його кінців. Використовуючи цю функцію написати таку програму: ввести з клавіатури натуральне число N, та цілі числа A та B. Отримати N пар випадкових чисел X і Y, з інтервалу [A,B], що є координатами кінців відрізка. Знайти відрізок максимальної довжини (вивести довжину відрізка та координати кінців).
Результат роботи програми

Код програми
#include <iostream>
using namespace std;
#include <cmath>
#include <cstdlib>
#include <ctime>
float LengthByCoords(int, int, int, int);
int main()
{
srand(time(0));
int n, a, b;
float dl, mxd1=0;
int x1, y1, x2, y2, mx1, my1, mx2, my2;
cin >> n >> a >> b;
for (int i=1; i<=n; i++)
{
x1=a+rand() % (b-a+1);
y1=a+rand() % (b-a+1);
x2=a+rand() % (b-a+1);
y2=a+rand() % (b-a+1);
printf("%%3d%%3d%%3d%%3d\n", x1, y1, x2, y2);
dl=LengthByCoords(x1, y1, x2, y2);
if (dl>mxd1)
{
mxd1=dl;
mx1=x1; my1=y1;
mx2=x2; my2=y2;
}
}
printf("max dl=%%.2f\n", mxd1);
printf("%%3d%%3d%%3d%%3d\n", mx1, my1, mx2, my2);
return 0;
}
float LengthByCoords(int x1, int y1, int x2, int y2)
{
float z;
z=sqrt(pow(y2-y1, 2)+pow(x2-x1, 2));
return z;
}
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури натуральні числа A та N. Знайти N чисел більших А, в яких остання цифра зустрічається більше 1 разу. | NumDigCofA |
| 2 | Вводити з клавіатури натуральні числа поки не буде введено число 0. У кожного числа видалити всі цифри, що співпадають з першою цифрою | DelDigCfromA, FirstDig |
| 3 | Ввести з клавіатури натуральне число N та отримати випадковим чином і вивести на екран N трійок натуральних чисел. Для кожної трійки з’ясувати: якщо ці числа можуть бути сторонами трикутника, то знайти його периметр та площу. У іншому випадку вивести повідомлення. | IsSide, TrianglePerimeter, TriangleArea |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури натуральні числа A, В та N. Знайти N чисел більших А, в яких перша цифра зустрічається більше В раз. | NumDigCofA, FirstDig |
| 2 | Ввести з клавіатури N натуральних чисел. У кожного числа видалити всі цифри, що співпадають з останньою цифрою. | DelDigCfromA |
| 3 | Ввести з клавіатури натуральне число N та отримати випадковим чином і вивести на екран N трійок натуральних чисел. Для кожної трійки з’ясувати: якщо ці числа можуть бути сторонами трикутника, то знайти радіус кола, вписаного в цей трикутник. У іншому випадку вивести повідомлення. | IsSide, RadIncircle |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Вводити з клавіатури натуральні числа поки не буде введено число 0. Чи вірно, що серед цих чисел є число, в якому найменша цифра зустрічається більше одного разу? | NumDigCofA, MinDig |
| 2 | Ввести з клавіатури N натуральних чисел. У кожного числа видалити всі цифри, що співпадають з максимальною цифрою цього числа. | DelDigCfromA, MaxDig |
| 3 | Ввести з клавіатури натуральне число N та отримати випадковим чином і вивести на екран N трійок натуральних чисел. Для кожної трійки з’ясувати: якщо ці числа можуть бути сторонами трикутника, то знайти радіус кола, описаного навколо цього трикутника. У іншому випадку вивести повідомлення. | IsSide, RadExcircle |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури N натуральних чисел та число В. Чи вірно, що в кожному з цих чисел найбільша цифра зустрічається В раз? | NumDigCofA, MaxDig |
| 2 | Вводити з клавіатури натуральні числа поки не буде введено число 0. У кожного числа видалити всі цифри, що співпадають з мінімальною цифрою цього числа. | DelDigCfromA, MinDig |
| 3 | Отримати випадковим чином 6 цілих чисел. Якщо ці числа можуть бути координатами вершин трикутника, то знайти його периметр та площу. У іншому випадку вивести повідомлення. | LengthByCoords, IsCoord, TrianglePerimeter, TriangleArea |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури N натуральних чисел та цифру D. У кожного числа замінить на D всі цифри, що співпадають з останньою цифрою. | ReplAllDigCofAwithB |
| 2 | Ввести з клавіатури натуральне число N та отримати та вивести на екран N випадкових чисел з інтервалу [1,99999]. У кожного отриманого числа видалити першу максимальну цифру. | DelDigNfromA, PosFirstMaxDig |
| 3 | Ввести з клавіатури N натуральних чисел та числа В і С. З введених чисел вивести на екран тільки ті, що є членами арифметичної прогресії з першим членом B та різницею C. | IsArProgr |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури цифру D та вводити натуральні числа поки не буде введено число 0. У кожного числа замінить на D всі цифри, що співпадають з першою цифрою. | ReplAllDigCofAwithB, FirstDig |
| 2 | Ввести з клавіатури N натуральних чисел. У кожного числа видалити першу мінімальну цифру. | DelDigNfromA, PosFirstMinDig |
| 3 | Ввести з клавіатури N натуральних чисел та числа В та С. З введених чисел вивести на екран тільки ті, що є членами геометричної прогресії з першим членом B та знаменником C. | IsGeomProgr |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури цифру D, натуральне число N та отримати та вивести на екран N випадкових чисел з інтервалу [1,99999]. У кожного отриманого числа замінить на D всі цифри, що співпадають з мінімальною цифрою цього числа. | ReplAllDigCofAwithB, MinDig |
| 2 | Вводити з клавіатури натуральні числа поки не буде введено число 0. У кожного числа видалити останню максимальну цифру. | DelDigNfromA, PosLastMaxDig |
| 3 | Ввести з клавіатури цілі числа L, R, В та С. З діапазону [L, R] вивести на екран тільки ті числа, які є елементами арифметичної прогресії з першим членом B та різницею C. | IsArProgr |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури цифру D, натуральне число N та отримати та вивести на екран N випадкових чисел з інтервалу [1,999999]. У кожного отриманого числа замінить на D всі цифри, що співпадають з максимальною цифрою цього числа. | ReplAllDigCofAwithB, MaxDig |
| 2 | Ввести з клавіатури N натуральних чисел. У кожного числа видалити останню мінімальну цифру. | DelDigNfromA, PosLastMinDig |
| 3 | Ввести з клавіатури цілі числа L, R, В та С. З діапазону [L, R] вивести на екран тільки ті числа, які є елементами геометричної прогресії з першим членом B та знаменником C. | IsGeomProgr |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури натуральні числа A, B та С. В інтервалі [A;B] у кожного числа видалити всі цифри С. | DelDigCfromA |
| 2 | Ввести з клавіатури N натуральних чисел та цифру D. У кожного введеного числа замінить на D, тільки першу мінімальну цифру. | ReplDigNinAwithB, PosFirstMinDig |
| 3 | Ввести з клавіатури три натуральних числа А, В і N. Вивести на екран N чисел, більших А які взаємно прості з В. | IsMutPrime |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Вводити з клавіатури натуральні числа поки не буде введено число 0. У кожного числа видалити всі цифри, що співпадають з останньою цифрою. | DelDigCfromA |
| 2 | Ввести з клавіатури натуральні числа A, B, D та N. В інтервалі [A;B] у кожного числа замінить цифру з номером N на D | ReplDigNinAwithB |
| 3 | Ввести з клавіатури N натуральних чисел та число С. Серед введених знайти кількість чисел, що взаємно прості з C. | IsMutPrime |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури натуральне число N та отримати та вивести на екран N випадкових чисел з інтервалу [1,99999]. У кожного числа видалити всі цифри, що співпадають з першою цифрою | DelDigCfromA, FirstDig |
| 2 | Ввести з клавіатури цифру D та вводити натуральні числа поки не буде введено число 0. У кожного введеного числа замінить на D тільки першу максимальну цифру. | ReplDigNinAwithB, PosFirstMaxDig |
| 3 | Ввести з клавіатури три натуральних числа А, В і С. Знайдіть в інтервалі [A, B] усі числа взаємно прості з C. | IsMutPrime |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури N натуральних чисел. У кожного отриманого числа видалити всі цифри, що співпадають з мінімальною цифрою цього числа. | DelDigCfromA, MinDig |
| 2 | Ввести з клавіатури цифру D та вводити натуральні числа поки не буде введено число 0. У кожного введеного числа замінить на D тільки останню максимальну цифру. | ReplDigNinAwithB, PosLastMaxDig |
| 3 | Ввести з клавіатури два натуральних числа А та В. Знайдіть усі пари взаємно простих чисел в інтервалі [A, B] | IsMutPrime |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури натуральне число N та отримати та вивести на екран N випадкових чисел з інтервалу [1,99999]. У кожного числа видалити всі цифри, що співпадають з максимальною цифрою цього числа | DelDigCfromA, MaxDig |
| 2 | Ввести з клавіатури N натуральних чисел та цифра D. У кожного числа замінить на D тільки останню мінімальну цифру. | ReplDigNinAwithB, PosLastMinDig |
| 3 | Ввести з клавіатури натуральне число В. Знайти всі правильні прості дроби, що не скорочуються, знаменники яких не більше В (дріб задається двома натуральними числами – чисельником та знаменником). Відповідь для В=5: 1/2 1/3 2/3 1/4 3/4 1/5 2/5 3/5 4/5 | IsMutPrime |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури N натуральних чисел та число D. Приписати це число у кінець кожного введеного числа, а потім від отриманого числа відняти 1. | InsStartBtoA |
| 2 | Ввести з клавіатури цифру D, натуральне число N та отримати та вивести на екран N випадкових чисел з інтервалу [1,99999]. У кожного отриманого числа, у якого максимальна цифра зустрічається у числі більше одного разу, замінить на D тільки останню максимальну цифру. | ReplDigNinAwithB, MaxDig, NumDigCofA, PosLastMaxDig |
| 3 | Ввести з клавіатури N натуральних чисел. Знайти їх найбільший спільний дільник. Пояснення: ввести два числа, знайти для них НСД, ввести третє число, знайти НСД для третього числа та знайденого НСД перших двох чисел, ввести четверте число і т.д. поки не будуть введені всі числа | GcdOfAB |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури число D та вводити натуральні числа поки не буде введено число 0. Приписати це число у початок кожного введеного числа, а потім до отриманого числа додати 1. | InsStartBtoA |
| 2 | Ввести з клавіатури N натуральних чисел та цифру D. У кожного введеного числа, у якого максимальна цифра зустрічається у числі більше одного разу, замінить на D тільки першу максимальну цифру. | ReplDigNinAwithB, MaxDig, NumDigCofA, PosFirstMaxDig |
| 3 | Отримати випадково 6 цілих чисел. Якщо ці числа можуть бути координатами вершин трикутника, то знайти радіус кола вписаного у цей трикутник | LengthByCoords, IsCoord, RadIncircle |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури N натуральних чисел та число D. Приписати це число у початок та кінець кожного введеного числа, а потім від отриманого числа відняти 100. | InsStartBtoA |
| 2 | Ввести з клавіатури цифру D та вводити натуральні числа поки не буде введено число 0. У кожного введеного числа, у якого мінімальна цифра зустрічається у числі більше одного разу, замінить на D тільки першу мінімальну цифру. | ReplDigNinAwithB, MinDig, NumDigCofA, PosFirstMinDig |
| 3 | Отримати випадково 6 цілих чисел. Якщо ці числа можуть бути координатами вершин трикутника, то знайти радіус кола описаного навколо цього трикутника | LengthByCoords, IsCoord, RadExcircle |
| № задачі | Умова задачі | Які функції потрібні |
|---|---|---|
| 1 | Ввести з клавіатури числа А і В та вводити натуральні числа поки не буде введено число 0. Приписати число А у початок, а число В у кінець кожного введеного числа. Потім від отриманого числа відняти 50. | InsStartBtoA |
| 2 | Ввести з клавіатури цифру D та вводити натуральні числа поки не буде введено число 0. У кожного введеного числа, у якого максимальна цифра зустрічається у числі більше одного разу, замінить на D тільки останню максимальну цифру. | ReplDigNinAwithB, MaxDig, NumDigCofA, PosLastMaxDig |
| 3 | Ввести з клавіатури N натуральних чисел. Знайти їх найменше спільне кратне. | GcdOfAB, LcmofAB |