• Главная
  • Карта сайта
Не найдено

НОУ ІНТУЇТ | лекція | Загальні відомості про мову С ++

  1. 2.9 Введення і виведення даних
  2. 2.9.1 Об'єктно-орієнтовані засоби введення-виведення.

2.9 Введення і виведення даних

Ввод- висновок даних в мові С ++ здійснюється або за допомогою функцій вводу-виводу в стилі С, або з використанням бібліотеки класів С ++. Перевага об'єктів С ++ в тому, що вони легше у використанні, особливо якщо ввод- висновок досить простий. Функції введення-виведення, успадковані від С - громіздкі, але більш гнучко управляють форматованим висновком даних.

функція

printf (рядок форматів, список виведених змінних);

виконує форматований вивід змінних, зазначених у списку, відповідно до рядком форматів.

функція

scanf (рядок форматів, список адрес вводяться змінних);

виконує введення змінних, адреси яких вказані в списку, відповідно до рядком форматів.

Рядок форматів містить символи, які будуть виводитися на екран або запитуватися з клавіатури, і так звані специфікації. Специфікації це рядки, які починаються символом% і виконують управління форматуванням:

% Прапор шіріна.точность модифікатор тип

Параметри прапор, ширина, точність і модифікатор в специфікаціях можуть бути відсутні. Значення параметрів специфікацій наведені в табл. 2.10 .

Таблиця 2.10. Символи управління Параметр Призначення Прапори - Вирівнювання числа вліво. Права сторона доповнюється пробілами. За замовчуванням вирівнювання вправо. + Перед числом виводиться знак "+" або "-" Пропуск Перед позитивним числом виводиться пробіл, перед негативним "-" # Виводиться код системи числення: 0 - перед восьмеричним числом, 0х (0Х) перед шістнадцятковим числом. Ширина n Ширина поля виводу. Якщо n позицій недостатньо, то поле виводу розширюється до мінімально необхідного. Незаповнені позиції заповнюються пробілами. On Те ж, що і n, але незаповнені позиції заповнюються нулями. Точність нічого Точність за замовчуванням n Для типів e, E, f виводити n знаків після десяткового дробу Модифікатор h Для d, i, o, u, x, X тип short int. l Для d, i, o, u, x, X тип long int. Тип c Символьний тип char. d Десяткове int зі знаком. i Десяткове int зі знаком. o Вісімкове int unsigned. u Десяткове int unsigned. x, X Шістнадцяткове int unsigned, при х, використовуючи не af, при Х - A - F. f Значення зі знаком виду [-] dddd.dddd. e Значення зі знаком виду [-] d.dddde [+ | -] ddd. E Значення зі знаком виду [-] d.ddddE [+ | -] ddd. g Значення зі знаком типу e або f в залежності від значення і точності. G Значення зі знаком типу E або f в залежності від значення і точності. s Рядок символів.

Крім того, рядок форматів може містити деякі спеціальні символи, які наведені в табл. 2.11 .

Таблиця 2.11. Спеціальні символи Символ Призначення \ b Зрушення поточної позиції вліво. \ N Переклад рядка. \ R Переклад в початок рядка, не переходячи на новий рядок \ t Горизонтальна табуляція. \ 'Символ одинарної лапки. \ "Символ подвійної лапки. \? Символ?

Першим рядком програми, в якій будуть застосовуватися функції вводавивода мови С, повинна бути директива #include <stdio.h>. Заголовки stdio.h відомості про функції введення-виведення.

Розглянемо роботу функцій на прикладі наступної задачі.

Завдання 2.2. Знаючи a, b, c - довжини сторін трикутника, обчислити площу S і периметр P цього трикутника.

Вхідні дані: a, b, c. Вихідні дані: S, P.

Для обчислення площі застосуємо формулу Герона: , де - напівпериметр.

Далі наведено дві програми для вирішення даного завдання і результати їх роботи ( Мал. 2.7 , Мал. 2.8 ).

// ЗАВДАННЯ 2.2 Варіант перший #include <iostream> #include <stdio.h> #include <math.h> using namespace std; int main () {float a, b, c, S, r; // Опис змінних. printf ( "a ="); // Висновок на екран символів a =. // У функції scanf для обчислення адреси змінної застосовується операція &. scanf ( "% f", & a); // Запис в змінну а значення введеного з клавіатури. printf ( "b ="); // Висновок на екран символів b =. scanf ( "% f", & b); // Запис в змінну b значення введеного з клавіатури. printf ( "c ="); // Висновок на екран символів c = scanf ( "% f", & c); // Запис в змінну c значення введеного з клавіатури. r = (a + b + c) / 2; // Обчислення напівпериметр. S = sqrt (r * (r -a) * (r -b) * (r -c)); // Обчислення площі трикутника. printf ( "S =% 5.2 f \ t", S); // Висновок символів S =, значення S і символу табуляції \ t. // Специфікація% 5.2f означає, що буде виведено речовий // число з п'яти знаків, два з яких після точки. printf ( "p =% 5.2 f \ n", 2 * r); // Висновок символів p =, значення виразу 2 * r // і символу закінчення рядки. // Оператор printf ( "S =% 5.2f \ tp =% 5.2f \ n", S, 2 * r) видасть той же результат. return 0; }
Мал. 2.7. Результати роботи програми до задачі 2.2 (варіант 1) // ЗАВДАННЯ 2.2. Варіант другий #include <iostream> #include <stdio.h> #include <math.h> using namespace std; int main () {float a, b, c, S, r; printf ( "Vvedite a, b, c \ n"); // Вивід на екран рядка символів. scanf ( "% f% f% f", & a, & b, & c); // Введення значень. r = (a + b + c) / 2; S = sqrt (r * (ra) * (rb) * (r -c)); printf ( "S =% 5.2 f \ tp =% 5.2 f \ n", S, 2 * r); // Висновок результатів. return 0; }
Мал. 2.8. Результати роботи програми до задачі 2.2 (варіант 2)

2.9.1 Об'єктно-орієнтовані засоби введення-виведення.

Опис об'єктів для керування введенням-виведенням міститься в заголовки iostream. При підключенні цього файлу за допомогою директиви #include <iostream> в програмі автоматично створюються об'єкти-потокі8 cin для введення з клавіатури і cout для виведення на екран, а також операції приміщення в потік << і читання з потоку >>.

Отже, за допомогою об'єкта cin і операції >> можна ввести значення будь-якої змінної. Наприклад, якщо змінна i описана як целочисленная, то команда cin >> i; означає, що в змінну i буде записано певне ціле число, введене з клавіатури. Якщо потрібно ввести декілька змінних, слід написати cin >> x >> y >> z; .

Об'єкт cout і операція << дозволяють вивести на екран значення будь-якої змінної або текст. Текст необхідно укладати в подвійні лапки, крім того, допустимо застосування спеціальних символів \ t і \ n ( табл. 2.11 ). Запис cout << i; означає висновок на екран значення змінної i. А команда cout << x << "\ t" << y; виведе на екран значення змінних x і y, розділені символом табуляції.

Завдання 2.3. Дано тризначне число. Записати його цифри в зворотному порядку і вивести на екран нове число.

Розберемо рішення даної задачі на конкретному прикладі. Тут будуть використовуватися операції цілочисельний арифметики.

Нехай P = 456. Обчислення залишку від ділення числа P на 10 дасть його останню цифру (кількість одиниць в числі P): 456% 10 = 6.

Операція ділення без остачі числа P на 10 дозволить зменшити кількість розрядів і число стане двозначним:

Залишок від ділення отриманого числа на 10 буде наступною цифрою числа P (кількість десятків у числі P):

Останню цифру числа P (кількість сотень) можна знайти так:

Так як в завданні потрібно записати цифри числа P в зворотному порядку, значить в новому числі буде 6 сотень, 5 десятків і 4 одиниці:

S = 6 * 100 + 5 * 10 + 4 = 654.

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

#include <iostream> using namespace std; int main (int argc, char * argv []) {unsigned int P, S; // Визначення цілочисельних змінних без знака. cout << "P ="; // Висновок на екран символів P =. cin >> P; // Введення заданого числа P. S = P% 10 * 100 + P / 10% 10 * 10 + P / 100; // Обчислення нового числа S. cout << "S =" << S << endl; // Висновок на екран символів S = і значення змінної S. return 0; }

Завдання 2.4. Нехай целочисленная змінна i і речова змінна d вводяться з клавіатури. Визначити розмір пам'яті, відведеної для зберігання цих змінних і їх суми, в байтах. Обчислити, скільки пам'яті буде виділено для зберігання рядка З Новим Роком! .Вивесті на екран розміри різних типів даних мови С ++ в байтах.

Далі наведено текст програми.

#include <iostream> using namespace std; int main () {int i; // Визначення цілочисельний змінної. double d; // Визначення дійсної змінної. cout << "i ="; cin >> i; // Введення змінної i. cout << "d ="; cin >> d; // Введення змінної d. // Розмір пам'яті, відведеної під змінну i. cout << "Розмір i:" << sizeof i << "\ n"; // Розмір пам'яті, відведеної під змінну d. cout << "Розмір d:" << sizeof d << "\ n"; // Розмір пам'яті, відведеної під значення виразу i + d. cout << "Розмір i + d:" << sizeof (i + d) << "\ n"; cout << "Розмір рядка <З Новим Роком!>:"; // Розмір пам'яті, відведеної під рядок. cout << sizeof "З Новим роком!" << "\ n"; // Обчислення розмірів різних типів даних: cout << "Розмір char:" << sizeof (char) << "\ n"; cout << "Розмір int:" << sizeof (int) << "\ n"; cout << "Розмір short int:" << sizeof (short int) << "\ n"; cout << "Розмір long int:" << sizeof (long int) << "\ n"; cout << "Розмір long long int:"; cout << sizeof (long long int) << "\ n"; cout << "Розмір float:" << sizeof (float) << "\ n"; cout << "Розмір double:" << sizeof (double) << "\ n"; cout << "Розмір long double:" << sizeof (long double) << "\ n"; return 0; }

Результати роботи программи9

i = 23 d = 45.76 Розмір i: 4 Розмір d: 8 Розмір i + d: 8 Розмір <З Новим роком! »: 26 Розмір char: 1 Розмір int: 4 Розмір short int: 2 Розмір long int: 4 Розмір long long int: 8 Розмір float: 4 Розмір double: 8 Розмір long double: 12Символ?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью