- •1.1.2 Структура функцій програми
- •1.1.3 Правила синтаксису
- •1.1.4. Типи даних
- •1.1.5. Функції введення та виведення даних
- •1.2 Приклад програми Умова задачі
- •Особливості використання функцій вводу та виводу
- •1.3 Технологія виконання лабораторної роботи
- •1.4. Варіанти завдань
- •1.5 Контрольні запитання
- •Розгалужені обчислювальні процеси Лабораторна робота 2
- •2.1 Теоретичні відомості
- •2.1.1. Вибір із двох альтернатив
- •2.1.2. Вкладеність конструкцій вибору
- •2.1.3. Операторний блок
- •2.1.4. Поліваріантний вибір
- •2.2. Приклади програм
- •2.3. Варіанти завдань
- •2.4 Контрольні запитання
- •Циклічні обчислювальні процеси Лабораторна робота 3
- •3.1 Теоретичні відомості
- •3.1.1. Цикл із передумовою
- •3.1.2. Цикл із постумовою
- •3.1.3. Цикл із лічильником
- •3.1.4. Переривання та продовження циклу
- •3.2. Приклад алгоритму та програми
- •3.3. Варіанти завдань
- •3.4 Контрольні запитання
- •Цикли з розгалуженням Лабораторна робота 4
- •4.1 Теоретичні відомості
- •4.1.1. Рекурентні співвідношення
- •4.1.2. Функції користувача
- •4.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Код програми
- •4.3. Варіанти завдань
- •4.4 Контрольні запитання
- •Рекурсивні функції Лабораторна робота 5
- •5.1 Теоретичні відомості
- •5.2. Приклад алгоритму та програми
- •5.3. Варіанти завдань
- •6.1.2. Оголошення та ініціалізація
- •6.1.3. Операції над покажчиками
- •6.1.4. Методи розв’язанні нелінійних рівнянь
- •6.2. Приклад алгоритму та програми
- •6.3. Варіанти завдань
- •6.4 Контрольні запитання
- •Одновимірні масиви Лабораторна робота 7
- •7.1 Теоретичні відомості
- •7.2. Приклад алгоритму та програми
- •Алгоритм програми
- •Код програми
- •7.3. Варіанти завдань
- •7.4 Контрольні запитання
- •Багатовимірні масиви Лабораторна робота 8
- •8.1 Теоретичні відомості
- •8.1.1. Оголошення багатовимірних масивів. Доступ до елементів
- •8.1.2. Базові операції обробки двовимірних масивів
- •8.2. Приклад алгоритму та програми
- •8.3. Варіанти завдань
- •9.1.2. Деякі функції обробки рядків
- •9.2. Приклад алгоритму та програми
- •9.3. Варіанти завдань
- •9.4 Контрольні запитання
- •Структури та масиви структур Лабораторна робота 10
- •10.1 Теоретичні відомості
- •10.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Приклад коду
- •10.3. Варіанти завдань
- •10.4 Контрольні запитання
6.2. Приклад алгоритму та програми
Знайти корені нелінійного рівняння виду . Пошук наближеного значення хоча б одного кореня рівняння f(x) = 0 на відрізку [a; b] здійснюватимемо методом ділення відрізка навпіл. Для цього обчислимо середину m відрізка, і якщо f(m)0, то пошук продовжуватимемо на тому з відрізків [a; m], [m; b], на кінцях якого функція приймає значення різних знаків. Реалізація алгоритму подана у програмі ex5_5. Для обчислення значення функції в заданій точці визначимо функцію f(xx). У програмі змінюватимуться значення змінних через розименування покажчика, наприклад, *a = x, де double* const a — константний покажчик на тип double, double x — змінна, на яку посилатиметься покажчик. Спроба змінити сам покажчик приведе до синтаксичної помилки.
//ex6_1.срр пошук кореня рівняння методом ділення відрізка навпіл #include<iostream> #include<math.h> using namespace std; double precision=0.00001,x; //точність та аргумент функції //========== обчислити значення функції в точці =============== double f(double *param) { if (*param==0) //перевірити точку розриву, *param+=precision; //перейти до наступної точки return exp(*param)-1/(*param);//значення функції в поточній точці } //=====реалізація алгоритму половинного ділення ================ void solution(double* a, double* b ) { //параметри - константні покажчики на границі відрізка do{ x=(*a+*b)/2; //визначити середину відрізка if (f(&x)*f(&(*a))<0) //знаки функції різні на кінцях відрізка *b=x; //вибрати новий кінець відрізку else *a=x; }while( (*b-*a)>=precision); //точність розрахунків досягнута }
//======================= головна функція ===================== int main(){ double left,right; //границі відрізка cout<<"pointer to data"<<endl; cout<<"define root of e^x=1/x"<<endl; cout<<"input a,b"<<endl; cin>>left>>right; //ввести значення кінців відрізка double* pl=&left;//ініціалізувати константні покажчики double* pr=&right; solution(pl,pr); //розв’язати рівняння cout<<"root = "<<x<<endl; //вивести значення кореня рівняння system("pause"); }
Рис. 6.1. Результат роботи програми ex6_1. Розв’язання нелінійного рівняння
6.3. Варіанти завдань
-
Надрукувати таблиці значень функцій cox(x) та ex на відрізку [a; b] із кроком h, розвинувши функції у ряд Тейлора та використавши покажчики на функції. Для довідки: ряд Тейлора для функції сos(x) =1 – x 2/2! + x4/4! – x6 /6! +..., ряд Тейлора для функції ex=1 + x / 1! + x2 / 2! + x3 / 3! + ...
-
Розрахувати біноміальні коефіцієнти: C(m, n) = 1, якщо m 1, n = 0 або n = m; C(m, n) = C(m – 1, n – 1) + C(m – 1, n) в протилежному випадку. Значення n та m передавати у функцію як покажчики на тип int.
-
Нехай в трикутнику ABC задані координати вершин A=(0,0), B=(а,b), де а і b – цілі числа, що вводяться користувачем. Розробити функцію, яка визначає такі координати вершини C=(x,y), щоб площа трикутника ABC була мінімальною (не рівною нулю). Координати вершин передавати у функцію як покажчики на тип int.
-
Вивести в порядку зростання всі звичайні нескоротні дроби в діапазоні від 0 до 1, знаменники яких не перевищують 15. Чисельники та знаменники дробів подати як покажчики на типи int
-
Написати програму, яка здійснює введення у вільному форматі одного цілого числа і його переведення з текстового представлення в значення типу int. Функція getint() повинна повертати значення отриманого числа через параметр або сигналізувати значенням , якщо вхідний потік вичерпаний. Значення EOF повертати через оператор return. Знаки - або +, за якими не йде цифра, функція розуміє як неправильне представлення числа.
-
Розв’язати нелінійне рівняння x=cos(x) методами перебору та хорд, визначивши інтервал [a, b], на якому існує рішення рівняння. Порівняти результати розв’язків двома методами. У функції, що реалізують алгоритми, передавати покажчики на тип float.
-
Знайти корені нелінійного рівняння виду . Пошук наближеного значення хоча б одного кореня рівняння f(x) = 0 на відрізку [a; b] здійснювати методами перебору та дотичних. У функції, що реалізують алгоритми, передавати покажчики на тип float.
-
Знайти корені нелінійного рівняння виду . Пошук наближеного значення хоча б одного кореня рівняння f(x) = 0 на відрізку [a; b] здійснювати методами перебору та хорд.У функції, що реалізують алгоритми, передавати покажчики на тип float.
-
Знайти корені нелінійного рівняння виду . Пошук наближеного значення хоча б одного кореня рівняння f(x) = 0 на відрізку [a; b] здійснювати методами перебору та хорд. У функції, що реалізують алгоритми, передавати покажчики на тип float.
-
Знайти корені нелінійного рівняння виду . Пошук наближеного значення хоча б одного кореня рівняння f(x) = 0 на відрізку [a; b] здійснювати методами перебору та хорд. У функції, що реалізують алгоритми, передавати покажчики на тип float
-
Знайти корені нелінійного рівняння виду . Пошук наближеного значення хоча б одного кореня рівняння f(x) = 0 на відрізку [a; b] здійснювати методами дотичних та хорд. У функції, що реалізують алгоритми, передавати покажчики на тип float
-
Знайти корені нелінійного рівняння виду . Пошук наближеного значення хоча б одного кореня рівняння f(x) = 0 на відрізку [a; b] здійснювати методами дотичних та ділення навпіл. У функції, що реалізують алгоритми, передавати покажчики на тип float
-
Використовуючи покажчики на функції для їх викликів, знайти найбільше, найменше та середнє арифметичне значення двох чисел, які генеруються комп’ютером.
-
Використовуючи покажчики на функції для їх викликів, обчислити ланцюговий дріб
-
Використовуючи покажчики на функції для їх викликів, обчислити ланцюговий дріб
-
Використовуючи покажчики на функції для їх викликів, обчислити ланцюговий дріб
-
Скласти програму обчислення найбільшого числа Фібоначчі, яке не перевищує число та номера найменшого числа Фібоначчі, яке більше від числа . Використати функції, що повертають покажчики на тип int.
-
Число називається досконалим, якщо воно дорівнює сумі всіх своїх дільників, крім самого цього числа. Використати функцію, що повертає покажчик на тип int, в якому зберігається досконале число з проміжку [2,n]. Надрукувати досконалі числа з проміжку [2,n], котрі є повними квадратами.
-
Скласти програму для знаходження всіх простих чисел із діапазону [2, n], які є числами послідовності Фібоначчі або числами виду , де q – ціле число. Для обчислення простих чисел використати функцію, яка повертає значення типу покажчик на цілий тип та приймає покажчики.
-
Послідовність задана рекурентним співвідношенням
Для знаходження найбільшого члена цієї послідовності та його номера, який не перевищує число а, використати функцію, що повертає покажчики на типи int знайдених значень.
-
Скласти програму обчислення числа за формулою Грегорі
та за формулою Валліса , використовуючи покажчики для повернення значень з функцій обчислення числа . Розрахувати кількість ітерацій в каждому з методів.
-
Задати натральне число . Визначити, чи можна його подати у вигляді суми квадратів двох натуральних чисел. Якщо можливо, то визначити вказати пару таких натуральних чисел, що . Використати функції, що повертають покажчики на цілий тип та використовують покажчики як параметри.
-
Задати натуральне число . Знайти усі менші за паліндроми, які при піднесенні до квадрата дають також паліндром. Число є паліндромом, якщо його можна прочитати справа наліво та зліва направо однаково, наприклад, 12321.Використати функції, що повертають покажчики на цілий тип та використовують покажчики як параметри.
-
Скласти програму визначення чисел Армстронга, що складаються з двох, трьох та чотирьох цифр. Натуральне число із цифр є числом Армстронга, якщо сума його цифр, піднесених до го степеня, дорівнює самому числу, наприклад, 153=13+53+33. Використати функції, що повертають покажчики на цілий тип та використовують покажчики як параметри.