Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глинський С++.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.26 Mб
Скачать
  1. Введення-виведенні засобами бібліотеки сstdіo

Виведення

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

Приклад:

  • printf ( “Значення числа Пі дорівнює %f\n”, pi);

  • printf(“Hello, wor1d!\n”); // Простий випадок (без аргументів)

  • int a=2, b=3;int sum=a+b; // Складний випадок (з аргументами)

printf(“%d=%d+%d”, sum, a, b);

Форматний рядок може містити

1) символи;

2) специфікації перетворення;

3) керуючі символи.

Кожному аргументу відповідає своя специфікація перетворення:

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

%f - число із плаваючою крапкою;

%c - символ;

%s - рядок.

Обробка рядка формату

• У звичайному випадку рядок формату просто виводиться на екран

• Модифікатори формату, починаються із символу %,заміняються черговим аргументом

• У модифікаторах формату задається передбачуваний тип аргументу і спосіб його виведенні

Приклад

використання функції уведення/виведенні в стилі С:

#include <сstdio>

int main()

{

int i;

printf("Уведіть ціле число\n");

scanf(“%d", &i);

printf("Ви ввели число %d, спасибі!", i);

return 0;

}

використання потоків бібліотеки класів C++:

#include <iostream>

int main()

{

int i;

cout << "Уведіть ціле число\n";

cin >> i;

cout << "Ви ввели число " << i << "спасибі!";

return 0;

}

Прості модифікатори формату

• %c - підстановка char

• %d або %i - підстановка int

- %o - те ж у восьмеричній системі

- %x - те ж у шестнадцятковій системі

• %u - підстановка unsigned

• %f, %lf - підстановка float, double у звичайній формі

- аналог cout<<fixed

• %e, %le - те ж в експонентній формі

- аналог cout<<scientific

• %g, %lg - те ж у формі, що займає менше місця

• %s - підстановка рядка (char*)

• %% - виведення символу % (не є модифікатором формату, тому що не приводить до читання аргументу)

Складні модифікатори формату (цілі, дійсні)

• Всі складні модифікатори формату впливають тільки на виведення

однієї змінної (на відміну від маніпуляторів для cout<<)

• %5d - виведення цілого числа в 5 позиціях

- аналог cout<<setw(5)

• %05d - виведення цілого числа в 5 позиціях з нулями спереду

- аналог cout<<setfill('0')<<setw(5)

• %9.3lf - виведення дійсного числа (double) в 9 позиціях з 3

знаками після десяткової крапки

- аналог cout<<setw(9)<<setprecision(3)

• %+5d або %+9.3lf - виведення числа зі знаком (+ або -) спереду

- аналог cout<<showpos

• %-5d - виведення числа з вирівнюванням уліво (число ліворуч, пробіли праворуч)

- аналог cout<<left

• за замовчуванням усе вирівнюється вправо

Складні модифікатори формату (рядка)

• %20s - виведення рядка в 20 позиціях (по замовчанню рядок вирівнюється вправо, ліворуч вставляються пробіли)

• %-20s - виведення рядка в 20 позиціях з вирівнюванням уліво

• %.5s - виведення перших 5 символів рядка

• %20.5s - виведення перших 5 символів рядка в 20 позиціях

Приклад Змінна currTime містить час у хвилинах. Для тих, хто не зрозумів необхідно вивести hh:mm

minInHour = 60

// За допомогою cout

• cout<<setfill('0');

• cout<<setw(2)<<currTime/minInHour<<":";

• cout<<setw(2)<<currTime%minInHour;

// За допомогою printf

• printf(“%02d:%02d”, currTime/minInHour,currTime%minInHour);

Форматоване введення з клавіатури

scanf(рядок_формату, аргумент1, аргумент2, ..., аргумент)

Результат функції - число успішно прочитаних аргументів.

  • Для цілих, дійсних, символьних аргументів використовуються адреси (&a, &f, &c).

int a, b;

scanf(“%d%d”, &a, &b);

  • Для рядків використовується адреса першого елемента (або ім'я масиву)

char str[20]; // Якщо користувач уведе 20 і більше символів,то відбудеться помилка

scanf(“%s”, str);

// або (запис у масив починаючи з 5-го елемента)

scanf(“%s”, &(str[5]);

Аналіз рядка формату

Символи - не модифікатори формату - очікуються у рядку, що виводиться

• Прості модифікатори формату ті ж, що для printf

(%c, %d, %i, %o, %x, %f, %lf, %e, %le, %g, %lg, %s)

• %20s - введення не більше 20 символів рядка (безпечно, на відміну від %s)

• %3d - введення цілого числа не більше 3 цифр

• %*lf - прочитати дійсне число, але не записувати в черговий аргумент

Задача 1 (про трикутник, заданий координатами вер­шин). Дано координати трьох вершин трикутника А(1; 1), В(2; 2) та С(-1; 2). Обчислити медіану і радіус описаного кола г.

#include <iostream> // Трикутник2

#include <cmath> //Бібліотека математичних функцій

#include <conio.h>

using namespace std;

int main()

{

//clrscr(); // Очищаємо екран

float x1, x2, x3, y1, y2, y3; // Оголошуємо змінні та вводимо дані

cout<< "Уведіть координати точки А";

cin >> x1>> y1;

cout << "Уведіть координати точки В";

cin >>x2>> y2;

cout << "Уведіть координати точки С";

cin >> x3 >> y3;

float a,b,c,x,y, mb, p, s, r; // Оголошуємо додаткові змінні

//Обчислюємо довжини сторін трикутника

a = sqrt(pow((x3 - x2), 2) + pow((y3 - y2), 2));

b = sqrt(pow((x1 - x3), 2) + pow((y1 - y3), 2));

c = sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));

x = (x1 + x) / 2; // Обчислюємо координати

y = (y1 + y3) / 2; // середини сторони b

mb = sqrt(pow((x - x2), 2) + pow((y - y2), 2)); // Обчислюємо медіану mb

p = (a + b + c) / 2; // Обчислюємо периметр

s = sqrt(p* (p - a) * (p - b) * (p - c)); // Обчислюємо площу

r = a * b * c / (4 * s); // Обчислюємо радіус

cout << "mb = " << mb << "\n"; //Виводимо значення медіани

cout<< "r = " << r<< "\n"; //Виводимо радіус

getch(); //Затримуємо результати на екрані

}

1.12.1

5.1-5.10

Belov 3.3, стор. 54

Zubenko-Omelchuk 3.10.5, стор.423

Burn Straustrup 21.1-21.4, стор. 717,

21.8,стор.766