Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Форматування даних при обмінах з потоками↑ ⇐ ПредыдущаяСтр 13 из 13 Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Для форматування даних при обміні з потоками існують такі засоби: - прапори форматування дозволяють виводити значення з різноманітним вирівнюванням; - комбінації прапорів поєднують за допомогою диз'юнкції; - маніпулятори дозволяють використати себе в якості правого операнда операцій << і >> (cout<<модифікатор). Безпосереднє застосування операцій виведення << (включення в потік) і введення >>; (витяг з потоку) до стандартних потоків cout, cin, cerr, clog для даних базових типів приводить до використання "замовчуваних" форматів зовнішнього представлення значень, що пересилаються. Наприклад, при виведенні чисел кожне з них займає рівно стільки позицій, скільки необхідно для його представлення. Це не завжди зручно і правильно. Наприклад, виконання операторів int il= 1, i2 = 2, i3 = 3, i4 = 4, i5 = 5; cout «"\n" «i1 «i2 «i3 «i4 «i5; приведе до такого результату: 12345 Для поліпшення читання найпростіше явно ввести розділові пробіли. Виконавши оператор cout «"\n"«i1 ‘ ’«i2 ‘ ’«i3 ‘ ’«i4 ‘ ’«i5 ‘ одержимо більш наочний результат: 12345 Наступний крок - додавання пояснювального тексту і(чи) символів табуляції. Ширина (кількість позицій) зовнішнього представлення кожного числа вибирається автоматично, виходячи з необхідної кількості позицій. Однаковість не завжди влаштовує користувача програми. Наприклад, періодичний дріб 1.0 / 3.0 можна представити дуже різними способами: 0.3 0.3333 3.3е-1 0.3333333е0 Однак стандартне представлення при виведенні за допомогою оператора cout «"\nl.0/3.0 = " << 1.0 / 3.0; буде завжди однаковим: 1.0 / 3.0 = 0.333333 Формати представлення виведеної інформації і правила сприйняття даних, що вводяться з потоку, можуть бути змінені програмістом за допомогою прапорів форматування. Прапори: реалізовані у виді окремих фіксованих битов чисел типу long, тому кілька прапорів за допомогою логічних бітових виражень можна поєднувати, тим самим по-різному комбінуючи властивості потоку. Типи прапорів форматування представлені в таблиці 13.1. Крім прапорів для керування форматом використовуються компонентні змінні класу ios (табл. 13.2). У наступній програмі демонструються основні принципи форматування за допомогою компонентних функцій класу ios. //Р11-02.СРР - форматування виведеної інформації (include <strstrea.h> void main () (char name[] = "Рядок довжиною 52 символу " "у поле шириною 58 позицій,"; cout «n\n"; cout.width(58); // Ширина поля виводиться для потоку cout // Символ заповнення порожніх позицій поля: cout.fill('$'); // Перший вивід рядка в потік cout: cout <<name<<endl; cout. width (58); // Забрати не можна // Заповнювач між знаком і значенням: cout.setf (ios:: internal); double dd = -33.4455; cout «dd «endl; // Вивід речовинного значення cout. width (58); // Забрати не можна // Зміна вирівнювання: cout.setf (ios::left,ios:: adjustfield); // Символ заповнення порожніх позицій поля: cout.fill(#); // Другий висновок рядка в потік cout: cout «name «endl; long nn = 90000; // Шіснадцяткове значення Oxl5f90 // Зміна підстави числення: cout.setf (ios:: hex, ios::basefield); // Виводити ознака підстави числення: cout.setf (ios::showbase); // Перехід на верхній регістр: cout.setf (ios:: uppercase); cout. width (58); // Забрати не можна cout «nn «endl; // Вивід цілого значення типу long cout, width (58); // Забрати не можна // Зміна вирівнювання: cout. setf (ios:: internal, ios:: adjustfield); // Символ заповнення порожніх позицій поля: cout. fill ('$'); cout. unsetf (0x0200); // Перехід на нижній регістр cout «nn «endl; // Вивід цілого значення типу long } Результат виконання програми: $$$$$$Рядок довжиною 52 символу в поле шириною 58 позицій.-$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$33.4455 Рядок довжиною 52 символу в поле шириною 58 позицій. ####§! Ox$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$15f90 Прокоментуємо програму і результати. За замовчуванням ширина поля виведення встановлюється рівній довжині прийнятого представлення виведеного значення. Тому дія функції width() однократне, і її потрібно при кожному виведенні значення явно використовувати, якщо значення ширини, що замовчується, поля виведення не влаштовує програміста. Функція fill () установлює символ заповнення порожніх позицій поля. При першому виведення рядка name[] за замовчуванням установлене вирівнювання по правому краї поля, і символи $ поміщені ліворуч від умісту рядка. Перед виведенням значення дійсної перемінний dd функцією setf() установлений прапор internal. Під його впливом символ заповнення розмістився між знаком '-' і числовим значенням 33.4455. Ширина поля явно зазначена в 58 позицій. Перед другим виводом рядка name[] "під впливом" другого параметра (adjustfield) функції setf () скинуті прапори right і internal і явно встановлений прапор left вирівнювання по лівому краї. Змінено символ заповнення порожніх позицій ‘#'. Перед виводом довгого цілого числа nn установлена підстава системи числення (basefield - скидає прапори основ числення; hex - явно встановлює шістнацяткову підставу). Установлено прапори showbase і uppercase і ширина поля виведення. Число 90000 виведене в шіснацятковому виді, ознакою 0х позначена підстава системи числення, для зображення цифр і ознаки підстави використовуються прописні букви. Тому що при переході до вирівнювання по лівому краї прапор internal виявився скинутим, то символ заповнення '#' розміщений не після ознаки підстави числення ох, а заповнює праву порожню частину поля. Заключний вивід значення nn, рівного 90000, виконаний із прапорами internal і left. Для переходу на нижній регістр використана функція unsetf () з явним значенням прапора uppercase.
Таблиця 13.1 – Типи прапорів
Продовження таблиці 13.1 – Типи прапорів
Таблиця 13.2 - Компонентні змінні класу ios
Продовження таблиці 13.2 - Компонентні змінні класу ios
Маніпулятори Незважаючи на гнучкість і великі можливості керування форматами за допомогою компонентних функцій класу ios, їхнє застосування достатнє громіздко. Більш простий спосіб із зобов'язання параметрів і прапорів форматування забезпечують маніпулятори, до можливостей яких ми перейдемо. Маніпуляторами називають спеціальні функції, що дозволяють програмісту змінювати стани і прапори потоку. Особливість маніпуляторів і їхня відмінність від звичайних функцій полягає в тому, що їх імена (без параметрів) і виклики (з параметрами) можна використовувати в якості правого операнда для операції обміну. У якості лівого операнда в цьому вираженні, як звичайно, використовує- потік (посилання на потік), і саме на цей потік впливає маніпулятор. Маніпулятори бібліотеки класів ios мови С++ поділяються на дві групи: маніпулятори з параметрами і маніпулятори без параметрів (табл. 13.3, 13.4). Таблиця 13.3 - Маніпулятори без параметрів
Не всі перераховані маніпулятори діють як на вхідні, так і на вихідні потоки, ws діє тільки при введенні; endl, ends, flush - тільки при виведення.
Таблиця 13.4 - Маніпулятори з параметрами визначені у файлі iomanip.h Маніпулятори dec, hex, oct, що задають основу системи числення, змінюють стан потоку, і ця зміна залишається в силі до наступного явної зміни. Маніпулятор endl рекомендується використовувати при кожнім виведення. Наприклад, його використання просте необхідно в такому операторі: cout «"Чекайте! Йде набір статистики." «endl; При відсутності endl тут не можна гарантувати, що повідомлення користувачу не залишиться в буфері потоку cout до закінчення набору статистики. Рекомендується за допомогою маніпулятора flush скидати буфер вхідного потоку при виведення на екран підказки до наступного введення інформації: cout «"Уведіть назву файлу:" «flush; cin» fileName; // Тут fileName - символьний масив За допомогою маніпуляторів можна керувати представленням інформації у вихідному потоці. Наприклад, маніпулятор setw(int n) дозволить виділити для числового значення поле фіксованої ширини, що зручно при печатці таблиць. Приклад розробки програми #include "stdafx.h" #include "conio.h" #include <stdlib.h> #include <fstream> #include <iostream> using namespace std; class Cat { public: Cat(char * my_name, int my_age){age = my_age; strcpy(name, my_name);}; Cat(){age = 0; strcpy(name, "none");}; void Myau(){cout << "\nMyau! I'm cat, my name is " << name << ", my age is " << age;}; private: int age; char name[25]; }; void WriteOfstream() { char buffer[255]; cout << "\nPut your text: "; cin.ignore(1, '\n'); cin.getline(buffer, 255); ofstream fout("text.txt", ios::app); fout << buffer << "\n"; fout.close(); } void ReadOfstream() { char ch; cout << "\nFile text:\n"; ifstream fin("text.txt"); while (fin.get(ch)) cout << ch; fin.close(); } void WriteCat() { int age; char name[20]; cout << "\nInput cat's name:"; cin >> name; cout << "\nInput cat's age:"; cin >> age; Cat cat1(name, age); cat1.Myau(); ofstream fout("objects.dat", ios::binary | ios::app); fout.write((char *) &cat1, sizeof (cat1)); fout.close; } void ReadCats() { ifstream fin("objects.dat", ios::binary); Cat cat1; while (fin.read((char *) &cat1, sizeof(cat1))) cat1.Myau(); fin.close; } int main(int argc, char* argv[]) { int cChoice; char temp; int itemp; const int number = 285; //system("cls"); do { switch(cChoice) { case 1: cout.setf(ios::left); cout << "\nSIMPLE OUT: "; cout << "Field_1"; cout << "Field_2";
cout << "\nWIDTH FLAG: "; cout.width(10); cout << "Field_1"; cout.width(20); cout << "Field_2";
cout << "\nFILL FLAG: "; cout.fill('_'); cout.width(10); cout << "Field_1"; cout.width(20); cout << "Field_2";
cout << "\nALIGN FLAG: "; cout.width(10); cout << "left" << endl; cout.width(10); cout.setf(ios::right); cout << "right";
cout << "\nTYPE FLAG: "; cout << "\n\tdec:" << dec << number; cout << "\n\thex:" << hex << number; cout << "\n\toct:" << oct << number; break; case 2: WriteOfstream(); break; case 3: ReadOfstream(); break; case 4: WriteCat(); break; case 5: ReadCats(); break; case 6: //char_vector.Sort(); break; default: //total++; 1; } cout <<("\n\n=====================================================\n"); cout <<(":: STL VECTORS LAB::\n"); cout <<("=====================================================\n"); cout <<(" Type your choice:\n"); cout <<(" [1] Simple COUT\n"); cout <<(" [2] OFSTREAM write to file text.txt\n"); cout <<(" [3] OFSTREAM read from file text.txt\n"); cout <<(" [4] OFSTREAM Make cat and write to objects.dat\n"); cout <<(" [5] OFSTREAM Get cat from objects.dat\n"); cout <<(" [0] Exit\n"); cout <<("=====================================================\n\n"); cin >> cChoice; } while (cChoice!= 0); return 0; } Контрольні запитання 1. Що таке потік і як він визначається? 2. Що таке буфер? 3. Класифікація потоків, що використовуються у програмуванні. 4. Для чого призначені cin/cout? 5. Особливості використання бібліотеки потоків. 6. Особливості операцій вставки та вилучення. 7. Що таке маніпулятори? Для чого вони необхідні? 8. Для чого необхідні прапорці у потоках? 9. Види пріоритетів потоків. 10. Функції обміну з потоками, які вам відомі. Лабораторна робота №14 Тема: Особливості розробки програм з використанням файлових потоків Мета: Набуття навичок студентами в розробці потоків Порядок виконання 1. Ознайомитись з теоретичною частиною даної теми. 2. Розробити ієрархію класів з використанням стандартної бібліотеки вводу/виводу С++ для організації та роботи з файловими потоками відповідно Завдання. При розробці програм використовувати: · Бібліотечну функцію (з бібліотеки ANSIC) int create (const char* path, int mode); · Бібліотечну функцію void open (const char* File_Name, int mode=замовчуване значення, int protection=замовчуване значення); · Конструктори класів ifstream, ofstream, fstream. 3. Розробити тест для перевірки вірності даної програми. 4. Оформити звіт до лабораторної роботи. Завдання Варіант 1 Для збереження даних про планшетні сканери описати структуру виду: struct scan_info{ char model[25]; // найменування моделі int price; // ціна double x_size; // гориз. розмір обл. сканування double y_size; // вертик. розмір обл. сканування int optr; // оптичне розрішення int grey; // число градацій сірого }; Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших двох байтах розміщується значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери. Написати функцію, що витягає з цього файлу дані про сканер у структуру типу scan_info. Обов'язковий параметр — номер необхідного запису. Функція повинна повертати нульове значення, якщо читання пройшло успішно, і –1 у противному випадку. Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) — 6–8 записів, і що виводить на дисплей дані про запис, на які був запит. Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається. Варіант 2 Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1. Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших двох байтах розміщується значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери. Написати функцію, що сортує записи в описаному вище бінарному файлі по одній з наступних характеристик: ціна або число градацій сірого. Обов'язковий параметр — ознака, що задає критерій сортування. Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з восьми записів і здійснює його сортування. Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається. Варіант 3 Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1. Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших чотирьох байтах розміщається значення типу long, що визначає кількість зроблених у файл записів; далі без пропусків розміщуються записи про сканери. Написати функцію, що сортує записи в описаному вище бінарному файлі по найменуванню моделі сканера. Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з восьми записів і здійснює його сортування. Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається. Варіант 4 Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1. Написати функцію, що динамічно виділяє пам'ять під масив структур (не менше шести елементів), заповнює його даними в режимі діалогу і записує масив у бінарний файл. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери. Написати функцію, що витягає дані про сканер з описаного вище бінарного файлу в структуру типу scan_info. Обов'язковий параметр — номер необхідного запису. Функція повинна повертати нульове значення, якщо читання пройшло успішно, і –1 у противному випадку. Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з восьми записів і здійснює вивід на дисплей даних про необхідний запис. Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається. Варіант 5 Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1. Написати функцію, що записує дані про сканер із приведеної структури в необхідну позицію в бінарному файлі. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери. Запис може здійснюватися в будь-яку позицію, причому якщо між записом, що вводиться, і останнім (чи початком файлу) наявні пропуски, вони заповнюються нулями. Написати функцію, що «ущільнює» описаний вище бінарний файл шляхом видалення з нього записів, що містять усі нулі. Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з шести записів і здійснює його ущільнення. Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається. Варіант 6 Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1. Написати функцію, що динамічно виділяє пам'ять під масив структур (не менше шести елементів), заповнює його даними в режимі діалогу, і записує масив у бінарний файл. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери. Написати функцію, що запитує дані про сканер у режимі діалогу і заміщає записи в бінарному файлі по заданому номеру. Обов'язковий параметр — номер запису, що заміщається. Функція повинна повертати нульове значення, якщо запис пройшов успішно, і –1 у противному випадку. Привести приклад програми, що створює файл із даними про сканери (дані вводяться з клавіатури) з восьми записів і здійснює вставку нових даних про сканер. Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається. Варіант 7 Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1. Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери. Написати функцію, що вводить дані про сканер із клавіатури в структуру типу scan_info, і якщо дані про цей сканер відсутні у файлі, поміщає вміст структури в кінець файлу; у противному випадку видає відповідне повідомлення. Привести приклад програми, що створює файл із даними про сканери (дані вводяться з текстового файлу) — 6–8 записів і доповнює файл записами по 2–3 сканерах, що вводяться з клавіатури. Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається. Варіант 8 Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1. Написати функцію, що записує в бінарний файл дані про сканер із приведеної структури. Структура файлу: у перших двох байтах розміщається значення типу int, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери. Написати функцію, що вводить дані про сканер із клавіатури в структуру типу scan_info і поміщає її вміст на місце першого запису у файлі. Файл повинен існувати. При цьому, запис, який раніше займав першу позицію, ставиться на другу, другу на третю і т.д. Привести приклад програми, що створює файл із даними про сканери (дані вводяться з текстового файлу) — 6–8 записів і доповнює цей файл 1–2 новими записами, що вводяться з клавіатури. Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних змінних у функціях не допускається. Варіант 9 Для збереження даних про планшетні сканери описати структуру виду, описаного у варіанті 1. Написати функцію, що робить запит на кількість сканерів, інформація про які буде вводитися, динамічно виділяє пам'ять під масив структур відповідного розміру і заповнює його даними в режимі діалогу (із клавіатури). При цьому ім'я сканера може містити пробіли. Написати функцію, що записує даний масив у створюваний бінарний файл. Якщо ціна сканера менше 200, то дані про цей сканер у файл не записуються. Інформація про інші сканери записується в бінарний файл, причому спочатку пишуться дані про всі сканери, ім'я яких починається з заголовної букви, а потім — із прописної. Структура файлу: у перших чотирьох байтах розміщається значення типу long, що визначає кількість зроблених у файл записів; далі без пропусків розміщаються записи про сканери. Привести приклад програми, що створює файл із даними про сканери і здійснює вивід на дисплей даних про необхідний запис (або всіх, або по номері). Усі необхідні дані для функцій повинні передаватися їм як параметри. Використання глобальних перемінних у функціях не допускається Варіант 10 Для збереження даних про ноутбук описати структуру виду: struct NOTEBOOK{ char model[21]; // найменування struct size{ // габаритні розміри float x; float y; float z; }; float w; // вага int price; // ціна } Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у стуктуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти (ціле) — число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється читання даних тільки для тих ноутбуків, частота процесора яких більше 120МГц, і запис у бінарний файл по зменшенню ціни. Варіант 11 Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 10. Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти (ціле) — число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється читання даних тільки для тих ноутбуків, обсяг HDD яких менше 1 Гб, і запис зчитаних даних у бінарний файл за абеткою по найменуванню. Варіант 12 Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 10. Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти (ціле) — число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, ціла кількість яких в одному кубічному метрі не перевищує 285-ти штук. Варіант 13 Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 10. Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти (ціле) — число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, максимальний обсяг ОЗП яких не менша 40Мб, відсортованих по обсягу. Варіант 14 Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 10. Написати функцію, що читає дані про ноутбуках з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, діагональ дисплея яких більше одинадцяти дюймів. Варіант 15 Для збереження даних про ноутбук описати структуру виду: struct NOTEBOOK{ struct disp_res{ // роздільна здатність дисплея int x; // по горизонталі int y; // по вертикалі }; int f; // частота регенерації float d; // розмір діагоналі дисплея int price; // ціна char model[21]; // найменування } Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, вага яких менш 7кг, відсортованих у порядку зростання ціни. Варіант 16 Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 15. Написати функцію, що читає дані про ноутбуках з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, обсяг відеопам'яті яких 2Мб, відсортованих у порядку зменшення тактової частоти процесора. Варіант 17 Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 15. Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, обсяг HDD яким більше 1Гб, відсортованих у порядку зростання розміру діагоналі дисплея. Варіант 18 Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 15. Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, тактова частота процесора яких більше 120МГц, відсортованих у порядку зменшення ваги. Варіант 19 Для збереження даних про ноутбук описати структуру виду: struct NOTEBOOK{ struct disp_res{ //роздільна здатність дисплея int x; // по горизонталі int y; // по вертикалі }; int f; // частота регенерації float d; // розмір діагоналі дисплея float hdd; // розмір диска char model[21]; // найменування } Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, тактова частота процесора яких більше 120МГц, відсортовані в порядку зростання ціни. Варіант 20 Для збереження даних про ноутбук описати структуру виду, описаного у варіанті 19. Написати функцію, що читає дані про ноутбук з файлу note.txt (див. c. note.txt) у структуру приведеного виду. Написати функцію, що записує вміст структури в кінець бінарного файлу. Структура бінарного файлу: перші два байти — ціле число записів у файлі; далі записи у форматі структури NOTEBOOK. Написати програму, у якій на основі розроблених функцій здійснюється запис у двійковий файл даних тільки про ті ноутбуки, ціна яких більше 3500$, відсортовані в порядку зростання тактової частоти процесора. Приклад файлу note.txt: Aser Note Light 2699 5.6 02.0x11.8x08.3 100 40 10.4 1 1024x0768 60 0.774 ASW ND5123T 3489 7.2 02.3x11.8x10.1 133 32 12.1 2 1024x0768 70 1.300 ARMNote TS80CD 3699 7.2 02.0x11.5x08.8 133 64 11.3 1 1024x0768 75 1.300 AST Ascentia P50 4499 7.5 02.3x11.3x09.0 133 40 11.3 1 0800x0600 70 0.774 BSI NP8657D 2605 8.0 02.3x11.8x09.3 133 40 11.3 1 1024x0768 60 0.810 BSI NP5265A 3765 8.2 02.5x12.0x09.0 150 32 12.1 2 1024x0768 70 1.300 Dell Xpi P100SD 3459 6.0 02.3x11.0x08.8 100 40 10.3 1 1024x0768 60 0.773 Digital HiNote 4799 4.0 01.3x11.0x08.8 120 40 10.4 1 0800x0600 56 1.000 Gateway Solo S5 4499 5.6 02.0x11.9x08.8 133 40 11.3 2 1024x0768 60 0.686 Hertz Z-Optima NB 3995 8.0 02.3x11.9x09.0 150 40 11.2 2 1024x0768 75 1.000 HP OmniBook 5500 6120 7.1 02.0x11.5x09.0 133 64 11.4 1 1024x0768 75 1.300 IBM ThinkPad 560 3749 4.1 01.3x11.8x08.8 120 40 12.1 2 1024x0768 85 0.774 NEC Versa 4080H 4780 6.6 02.3x11.8x09.5 120 48 10.4 1 0800x0600 70 0.776 Polywell Poly 500 3300 7.9 02.3x11.9x09.0 120 40 10.4 1 1024x0768 72 1.000 Samsung SENS 810 3667 8.7 02.3x11.5x09.5 100 32 11.4 2 1024x0768 75 0.773 Twinhead Slimnote 2965 7.4 02.0x11.5x08.0 075 64 10.4 1 1024x0768 70 0.772 Опис файлу note.txt: У файлі note.txt міститься текстова інформація про ноутбук. Кожен рядок містить дані про одну модель. Дані в рядку розміщаються в наступних полях: 1:20 — найменування моделі; 21:24 — ціна в доларах (ціле число); 26:28 — маса ноутбука в кг (число з десятковою крапкою з чотирьох символів); 30:43 — габаритні розміри ноутбука в дюймах (Висота х довжин
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-18; просмотров: 626; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.70.169 (0.012 с.) |