- •Int main() /* головна обов’язкова функція, де ключове слово int означає, що функція main() повертатиме у точку виклику результат цілого типу*/ 6
- •Засоби розробки с програм
- •Директиви препроцесора.
- •Using namespace std; // вказуємо, що будемо працювати з іменами із стандартної бібліотеки
- •Запитання
- •Тема 2. Данні
- •Команда присвоєння. Правила узгодження типів.
- •Запитання
- •Тема 3. Операції та вирази
- •Тема 4. Потоки. Введення - виведення даних
- •Форматування даних
- •Введення-виведенні засобами бібліотеки сstdіo
- •Тема 5. Адреси даних. Вказівники. Динамічна пам’ять
- •Тема 6. Файли
- •Тема 7. Розгалуження
- •Логічні вирази та логічні операції.
- •Команда ?
- •Тема 8. Цикли
- •Команда циклу з післяумовою do-while має вигляд
- •Тема 9. Функції (1)
- •Тема 10. Функції (2)
- •Тема 11. Масиви
- •Тема 12. Рядки
- •Тема 13. Структури, списки, стеки, черги, об’єднання
- •Тема 14. Виняткові ситуації
- •Http://www.Rate1.Com.Ua/strannosti/2633/ Самі фатальні помилки в програмному забезпеченні
- •Помилки під час виконання (виняткові ситуації, виключення) Exceptions - це помилки, що виникають у випадку, коли програма намагається виконати неприпустиму операцію.
- •Тема 15. Графіка
- •Написание простых графических программ
- •Http://www.Rsdn.Ru/article/opengl/ogltut2.Xml Графическая библиотека OpenGl
Введення-виведенні засобами бібліотеки с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
