Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Ч1(программирование).doc
Скачиваний:
52
Добавлен:
01.03.2016
Размер:
1.83 Mб
Скачать

Приклад Створенняпроекту«циклfor»

У цій лабораторній роботі ми створимо консольний додаток, який продемонструє можливості циклу для обробки різних даних. До програми додамо такі допоміжні файли, рисунок 6.2.

Рисунок 6.2 – Допоміжні файли застосування

Файл iostream забезпечує реалізацію обміну інформацією з консоллю.

Файл cmathзабезпечує доступ до математичних функцій.

Файл windows.h дає доступ до системних утиліт windows.

Файл cmathзабезпечує доступ до функційчасу.

      1. Головна функція проекту

Головна функція проекту має надати можливість користувачеві викликати потрібну програму з використанням циклу for.

Вигляд основного фрагменту функції main()наведено на рисунку 6.3.

Рисунок 6.3 – Основна частина функції main()

      1. Табулювання функції

У якості прикладу розглянемо наведену нижче, на рисунку 6.4, програму табулювання функції y = a*e (-b*x) *sin(w*x). У програмі використано рекомендації пункту 6.1.4.

Результати роботи програми наведено на рисунку 6.5.

Рисунок 6.4 – Програма виведення таблиці значень функції

Рисунок 6.5 – Результати табулювання значень функції

      1. Обробка послідовностей цілих чисел

Як приклад розглянемо таку задачу: «В послідовності цілих чисел від 1 до N потрібно виділити числа, квадрат яких дорівнює сумі квадратів інших цілих чисел».

Для вирішення цієї задачі спочатку напишемо функцію, що з’ясовує, чи можна представити квадрат одного числа, як суму квадратів інших цілих чисел. Після цього можна буде викликати цю функцію для усіх чисел із потрібного інтервалу.

Розробка допоміжної функції

Функцію, що з’ясовує, чи можна представити квадрат одного числа, як суму квадратів інших цілих чисел назвемо hasSqr.Хай вона повертає тип bool.Якщо буде знайдена пара чисел, сума квадратів яких дорівнює квадрату заданого числу, функція має повертати true,у іншому випадку має повертати false.

Самі числа, квадрати яких утворюють квадрат заданого числа, отримаємо через параметри функції, для чого ці параметри оголосимо такими, що передаються через посилання. А першим параметром функції зробимо число, що підлягає тестуванню. Таким чином прототип функції буде таким:

bool hasSqr(uint x, uint &x1, uint &x2);

Тепер можна перейти до реалізації функції. Задачу будемо вирішувати шляхом аналізу усіх комбінацій чисел х1 та х2. Перше число х1 будемо змінювати від 1 до х-1. А для кожного значення х1 будемо аналізувати значення х2 від х1 до х2-1. Перебір значень х2 починаємо від поточного значення х1 для того, щоб уникнути аналізу дзеркальних комбінацій, наприклад 3 і 5 та 5 і 3.

У тому випадку, якщо комбінація знайдена, робота функції закінчується. Тобто функція не знаходить усі можливі комбінації, а повертає першу ліпшу знайдену. Нижче наведено текст цієї функції.

bool hasSqr(uint x, uint &x1, uint &x2){ for( x1 = 1; x1 < x; x1++) { for( x2 = x1; x2 < x; x2++) if( x*x == x1*x1+x2*x2) return true; } return false; }

Розробка функції для вирішення головної задачі

Маючи функцію hasSqr() можемо перейти до вирішення головної задачі. Для цього достатньо за допомогою циклу for організувати перебір усіх чисел із заданого діапазону і викликати для кожного з них функцію hasSqr(). Якщо функція поверне true, то слід вивести на консоль значення параметрів функції. Нижче наведено текст функції для вирішення головної задачі.

void intChain(){ cout<<"Введiть число n1>1 та число n2>n1 "; uint x1, x2, a, b; cin>>x1>>x2; for(int i=x1; i<=x2; i++){ if(hasSqr(i, a, b)){ cout.width(5); cout<<i<<"^2="<<a<<"^2+"<<b<<"^2"<<"\n"; } } }

Нагадаємо, що змінні a та b отримують значення у функції hasSqr, тому що вони передаються у функцію через посилання.

Результат виконання цієї програми маємо на рисунку 6.6.

Рисунок 6.6 – Результат пошуку пар чисел, сума квадратів яких дорівнює квадрату заданого числу