Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_1 часть_укр.doc
Скачиваний:
2
Добавлен:
09.11.2019
Размер:
1.41 Mб
Скачать

4.1.2.Форматне виведення даних

У мові С, що є попередником мови С++, введення-виведення даних здійснюється за допомогою бібліотеки stdio, що підключається директивою:

#include <stdio.h>

Форматне виведення реалізується функцією:

printf (<форматний рядок>, <список аргументів>);

<форматний рядок> – рядок символів у лапках, що показує, як повинні бути надруковані аргументи. Наприклад:

printf ("Value PI equals %f\n", pi);

Форматний рядок може містити символи тексту для виведення, специфікації перетворення та управляючі символи.. Кожному аргументу відповідає своя специфікація перетворення, наприклад,

%d – десяткове ціле число ;

%f – число із плаваючою крапкою типу float або double;

%e – число в експонентній формі типу float або double;;

%c – символ;

%s – рядок.

Таким чином, специфікація перетворення починається із символу % і закінчується символом перетворення (d, f, c та ін.). Після символу % перед символом перетворення може перебувати:

Знак мінус, що вказує на вирівнювання перетвореного аргументу по лівому краю поля виведення.

Ширина поля виведення – задає мінімальне число позицій для перетвореного аргументу. Якщо величина аргументу вимагає більшого числа позицій, то поле виведення автоматично розширюється. Якщо ж величина має менше символів, чим зазначена ширина поля, то ліворуч від її додаються пробіли.

Точність – число, яке стоїть через крапку за значенням ширини поля виведення й показує, скільки позицій ширини поля виведення виділяється під дробову частину аргументу типу float або double. Для специфікацій f та e точність за умовчанням дорівнює 6.

Приклади:

printf ("x=%20.8f\n", x);

– виведення значення аргументу x у поле шириною 20 з 8 знаками після десяткової крапки.

printf ("x=%-10d\ny=%-10d", x, y);

– виведення значень x і y в окремі рядки з вирівнюванням зліва.

4.1.3.Форматне введення

Форматне введення реалізується функцією:

scanf (<форматний рядок>, <список аргументів>);

<форматний рядок> – рядок символів у лапках, що містить специфікації перетворення аргументів. Ця специфікація складається із символу % і закінчується символом перетворення d, f, c або іншим:

%d – при введенні очікується десяткове ціле число;

%c – очікується окремий символ; для читання наступного символу потрібно користуватися специфікацією %1s;

%s – очікується символьний рядок

%f – очікується число із плаваючою крапкою типу float.

%е – цей символ перетворення є синонімом для f. Формат уведення змінної типу float включає необов'язковий знак, рядок цифр, можливо фіксовану десяткову крапку й необов'язкове поле експоненти.

Аргументами в функції scanf мають бути покажчики. Покажчик – це об'єкт, що зберігає адресу області пам'яті, у яку записано значення змінної. Приклади використання функції scanf:

scanf("%f", &x);

– введення значення дійсного аргументу x типу float (а не double);

scanf("%s%d", &str, &k);

– введення рядка символів str і цілочисельного аргументу k.

4.1.4. Приклад. Програма обчислення ряду

Скласти програму для обчислення спадного ряду:

з додатними членами. При обчисленні суми враховувати члени, що перевищують задане значення . Передбачити багаторазове введення значення користувачем.

Насамперед, знайдемо рекурентне співвідношення між найближчими членами ряду:

,

звідки:

Обчислення ряду починаємо з оголошення й ініціалізації наступних змінних: n (номер поточного члена ряду; ураховуємо, що початкове значення і ), an (значення поточного члена), sum (сума членів). Оголошуємо змінну delta, у якій зберігається значення точності обчислень, і символьну змінну cont, яка буде містити символ, що означає відповідь на запит про продовження обчислень. Далі програма пропонує ввести delta, і користувач уводить значення delta. Запускається цикл while для обчислення поточного члена ряду й додаванню його до змінної sum. Обчислення спадного ряду з додатними членами припиняються, коли поточний член виявляється менше delta. Сума ряду, а також точність обчислень і кількість врахованих членів ряду виводяться на екран. Потім формується запит, чи потрібно продовжити обчислення даного ряду при іншому значенні delta. Якщо користувач натискає клавішу «y» (yes), програма пропонує знову ввести delta. Якщо ж натиснута будь-яка інша клавіша, обчислення припиняються. Обробка запиту реалізується за допомогою циклу do...while. Алгоритм обчислень подається у вигляді наступної блок-схеми (мал. 4.1):

Мал. 4.1. Блок-схема функції main() обчислення ряду

Відповідно до цієї блок-схеми складаємо програму:

#include <stdio.h>

void main(){

int n=0;

//Ініціалізація змінних значенням 1-го члену ряду

double an=1., sum=1.;

char cont; //Змінна відгуку на запит

float delta; //Змінна точності

do {

//Завдання точності обчислень

printf ("Enter accuracy\n");

scanf("%f", &delta);

//Обчислення членів ряду (n>1) и додавання їх в sum

while (an>delta) {

an*=(double)(n+1)/(2*(2*n+1));

sum+=an;

n++;

};

//Виведення результату

printf ("Accuracy: %.2e ", delta);

printf ("Quantity of terms: %d\n", n);

printf ("Sum of series: %-12.8f\n", sum);

//Запит на продовження обчислень

printf ("Continue? (y/any key)");

scanf("%1s", &cont);

}

while (cont=='y'); //Перевірка результату запиту

}