Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи по програмуванні(14 лаб).doc
Скачиваний:
77
Добавлен:
16.05.2015
Размер:
1.43 Mб
Скачать

Завдання 2.

Варіант 1. Розробити програму для виводу на екран усіх позитивних елементів кожного рядка двовимірного динамічного масиву і їх порядкових номерів.

Варіант 2. Розробити програму для виводу на екран усіх негативних елементів кожного рядка двовимірного динамічного масиву і їх порядкових номерів.

Варіант 3. Розробити програму для виводу на екран усіх позитивних елементів кожного стовпця даного двовимірного динамічного масиву і їх порядкових номерів.

Варіант 4. Розробити програму для виводу на екран усіх негативних елементів кожного стовпця даного двовимірного динамічного масиву і порядкових номерів.

Варіант 5. Розробити програму для виводу на екран суми і кількості всіх позитивних елементів кожного рядка даного двовимірного динамічного масиву.

Варіант 6. Розробити програму для виводу на екран суми усіх негативних елементів кожного рядка даного двовимірного динамічного масиву і їх кількості в кожнім рядку.

Варіант 7. Розробити програму для виводу на екран середнього арифметичного всіх позитивних елементів кожного стовпця даного двовимірного динамічного масиву.

Варіант 8. Розробити програму для виводу на екран середнього арифметичного всіх негативних елементів кожного стовпця даного двовимірного динамічного масиву.

Варіант 9. Розробити програму для виводу на екран суми усіх позитивних елементів верхньої і нижньої трикутних матриць даного двовимірного динамічного масиву і їхньої кількості в кожній.

Варіант 10. Розробити програму для виводу на екран суми усіх негативних елементів верхньої і нижньої трикутних матриць даного двовимірного динамічного масиву і їх кількості в кожній.

Теоретичні відомості

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

Відповідно до особливостей «пристрою», до якого приєднаний потік, потоки прийнято ділити на стандартні, консольні, строкові й файлові. Консольні потоки мають зручні засоби для роботи із клавіатурою і з екраном. Консольні потоки не сумісні з Windows програмуванням, тому про них буде вестися мова менше.

Якщо символи потоку в сукупності утворять символьний масив (рядок) в основній пам'яті, то це строковий потік. Якщо при використанні потоку його символи розміщаються на зовнішньому носії (дискеті...), то говорять про файловий потік.

Стандартні потоки для базових класів

Бібліотека потокових класів в C++ побудована на основі двох базових класів: ios і streambuf. Останній забезпечує буферизацію даних, і звертатися до його методів не потрібно, тому що його основне призначення забезпечувати взаємодію створюваних потоків з фізичними пристроями. На рис. 13.1 представлена структура ієрархії базового класу ios, де:

  • cin – об'єкт класу iostream, пов'язаний зі стандартним буферизованим вх. потоком (звичайно клавіатура консолі).

  • cout – об'єкт класу iostream, пов'язаний зі стандартним буферизованим вих. потоком (звичайно дисплей консолі).

  • cerr – об'єкт класу iostream, пов'язаний з небуферизованим вих. потоком (звичайно дисплей консолі), у який направляються повідомлення про помилки.

  • clog – об'єкт класу iostream, пов'язаний зі стандартним буферизованим вих. потоком (звичайно дисплей консолі), у який з буферизацією направляються повідомлення про помилки.

Приклад використання в програмі об’єктів класу iostream:

cin<<ім'я_об'єкта_базового типу;

cout<<вираз_базового_типу;

cerr<< вираз_базового_типу;

clog<< вираз_базового_типу;

Рисунок 13.1 - Схема ієрархії класу бібліотеки потоків введення/виведенняios

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

Наявність буфера обміну надає певні переваги при роботі з потоками, оскільки дані з потоку не витягаються доти, поки не буде натиснута клавіша <Enter>. Користувачеві надається можливість виправляти дані, що вводяться, перше ніж вони будуть передані в потік. При першому варіанті введення варто мати на увазі, що читання даних із вхідного потоку припиняється, коли черговий символ, що буде прочитаний, виявиться недопустимим; такими символами можуть бути узагальненні пробільні символи, кома, крапка (при введенні змінних, які у внутрішне представлення не заносять крапку, наприклад типу int), крапка з комою та інші відмінні від числового символи.