Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Приклади програм. Приклад 1. Дано текстовий файл, що містить декілька рядків дов­жиною не більше 255 символів






    Приклад 1. Дано текстовий файл, що містить декілька рядків дов­жиною не більше 255 символів. У кожному з рядків без помилок записано єдиний вираз, який має вигляд a#b, де a, b – невід’ємні цілочислові вели­чини, # – одна з операцій +, –, /, *. У файлі за останнім виразом переве­дення рядка не виконувалося. Вивести кожен із виразів і їх значення на екран і в новий текстовий файл.

    Розв’язок.

    #include < cstdlib>
    #include < conio.h>
    #include < iostream>
    #include < fstream>
    using namespace std;
    int main()
    {
    int a, b;
    char s[256], c;
    int i;
    cout < < " Input-file name? ";
    cin > > s; // Уводимо ім'я файлу
    cin.get(); // Зчитуємо символ нового рядка
    ifstream fInp;
    fInp.open(s); // Відкриття потоку (тільки для читання)
    if (! fInp) // Якщо має місце помилка відкриття
    {
    cout < < " Error of opening of a input-file "
    < < s;
    cout < < " \nPress any key to exit.\n";
    getch();
    return 1;
    }
    cout < < " Output-file name? ";
    cin > > s; // Уводимо ім'я файлу
    cin.get(); // Зчитуємо символ нового рядка
    ofstream fOut;
    fOut.open(s); // Відкриття потоку (тільки для запису)
    if (! fOut) // Якщо має місце помилка відкриття
    {
    cout < < " Error of opening of a output-file "
    < < s;
    cout < < " \nPress any key to exit.\n";
    getch();
    return 2;
    }
    while (fInp.peek()! = EOF) // Поки не кінець файлу
    {
    fInp.getline(s, 256); // Читаємо рядок з файлу
    i = 0;
    a = 0;
    while (s[i] > = '0' & & s[i] < = '9') // Формування
    { // першого операнда
    a = a * 10 + s[i] - '0';
    i++;
    }
    c = s[i++]; // Знак операції
    b = 0;
    while (s[i] > = '0' & & s[i] < = '9') // Формування
    { // другого операнда
    b = b * 10 + s[i] - '0';
    i++;
    }
    switch (c) // Обчислення значення виразу
    {
    case '+': a += b;
    break;
    case '-': a -= b;
    break;
    case '/': a /= b;
    break;
    case '*': a *= b;
    }
    cout < < s < < " = " < < a < < endl; // Вивід на екран
    fOut < < s < < " = " < < a < < endl; // Вивід у файл
    }
    fOut.close(); // Закриття вихідного потоку (файлу)
    fInp.close(); // Закриття вхідного потоку (файлу)
    cout < < " Press any key to exit.\n";
    getch();
    return 0;
    }

    Приклад 2. У текстовому файлі data.txt через довільну кількість будь-яких пробільних символів записано цілі числа, причому за останнім числом додаткові символи відсутні. Переписати у файл res.txt із файлу data.txt усі числа за винятком максимальних (у припущенні, що їх може бути декілька). У кожному рядку файлу res.txt (за винятком останнього) повинно міститися по 10 чисел із розділенням їх символом табуляції.

    Розв’язок.

    #include < conio.h>
    #include < iostream>
    #include < fstream>

    using namespace std;
    int main()
    {
    int v, Max;
    bool b = true;
    ifstream fInp;
    fInp.open(" data.txt"); // Відкриття потоку (для читання)
    if (! fInp) // Якщо має місце помилка відкриття
    {
    cout < < " Error of opening of a input-file";
    cout < < " \nPress any key to exit.\n";
    getch();
    return 1;
    }
    ofstream fOut;
    fOut.open(" res.txt"); // Відкриття потоку (для запису)
    if (! fOut) // Якщо має місце помилка відкриття
    {
    cout < < " Error of opening of a output-file";
    cout < < " \nPress any key to exit.\n";
    getch();
    return 2;
    }
    while(! fInp.eof()) // Поки не кінець потоку
    { // читаємо по одному
    fInp > > v; // числу
    if (b) // і шукаємо максимальне значення
    {
    b = false;
    Max = v;
    }
    else
    if (v > Max)
    Max = v;
    }
    fInp.close(); // Закриваємо
    // і знову відкриваємо вхідний потік
    fInp.open(" data.txt");
    // Замість закриття і повторного відкриття файлу можна
    // встановити стан потоку в нуль функцією clear() і
    // зсунути покажчик поточної позиції на початок потоку
    // fInp.clear();
    // fInp.seekg(0);
    int i = 0;
    while(! fInp.eof())
    {
    fInp > > v; // Читаємо одне число
    if (v < Max) // Якщо це не максимум
    {
    if (i == 10) // Оформлюємо виведення
    {
    fOut < < endl;
    i = 0;
    }
    else
    if (i! = 0)
    fOut < < '\t';
    fOut < < v; // Виводимо число
    i++;
    }
    }
    fOut.close(); // Закриваємо вихідний потік
    fInp.close(); // Закриваємо вхідний потік
    cout < < " Press any key to exit.\n";
    getch();
    return 0;
    }

    Приклад 3. Створити текстовий файл «Заміри температури пацієн­тів поліклініки». Запис про кожного пацієнта заносити в окремий рядок файлу у вигляді: прізвище (послідовність не більш ніж з 30 символів без пробільних символів), вік (ціле число), температура (дійсне число) з розді­ленням цих елементів даних одним символом табуляції. Занести у файл інформацію про 10 пацієнтів.

    Розв’язок.

    #include < iostream>
    #include < fstream>
    #include < conio.h>
    using namespace std;
    int main()
    {
    char FileName[100], Surname[31];
    int Age;
    double Temperature;
    cout < < " Enter file name: ";
    cin > > FileName; // Уводимо ім'я файлу
    cin.get(); // Зчитуємо символ нового рядка
    ofstream fOut; // Визначаємо вихідний потік і відкри-
    fOut.open(FileName); // ваємо його тільки для запису
    if (! fOut) // Якщо має місце помилка відкриття
    {
    cout < < " Error of opening of a output-file "
    < < FileName;
    cout < < " \nPress any key to exit.\n";
    getch();
    return 1;
    }
    for (int i = 0; i < 10; i++)
    {
    cout < < " Enter Surname: ";
    cin > > Surname;
    cout < < " Enter Age: ";
    cin > > Age;
    cout < < " Temperature: ";
    cin > > Temperature;
    fOut < < Surname < < '\t' < < Age < < '\t'
    < < Temperature < < endl; // Пишемо у файл
    }
    fOut.close(); // Закриваємо потік
    puts(" Press any key to exit.");
    getch();
    return 0;
    }

    Приклад 4. Дано текстовий файл «Заміри температури пацієнтів поліклініки». Запис про кожного пацієнта занесена в окремий рядок файлу у вигляді: прізвище (послідовність не більш ніж з 30 символів без про­більних символів), вік (ціле число), температура (дійсне число) із розді­ленням цих елементів даних у рядку файлу довільною кількістю будь-яких пробільних символів. Вивести на екран прізвища і температуру пацієнтів, чия температура, нижче 36.0 або вище 36.9 градусів.

    Розв’язок.

    #include < iostream>
    #include < fstream>
    #include < conio.h>
    using namespace std;
    int main()
    {
    char FileName[100], Surname[31];
    int Age;
    double Temperature;
    cout < < " Enter file name: ";
    cin > > FileName; // Уводимо ім'я файлу
    cin.get(); // Зчитуємо символ нового рядка
    ifstream fInp; // Визначаємо вхідний потік і відкри-
    fInp.open(FileName); // ваємо його тільки для читання
    if (! fInp) // Якщо має місце помилка відкриття
    {
    cout < < " Error of opening of a input-file "
    < < FileName;
    cout < < " \nPress any key to exit.\n";
    getch();
    return 1;
    }
    while (! fInp.eof()) // Поки не кінець файлу
    { // Читаємо з файлу
    fInp > > Surname > > Age > > Temperature;
    if (Temperature < 36.0 || Temperature > 36.9)
    cout < < Surname < < '\t' < < Temperature < < endl;
    // Якщо прочитаний рядок файлу містить
    if (fInp.peek() == '\n') // ознаку кінця рядка,
    fInp.ignore(2); // то пропускаємо 2 символи
    }
    fInp.close(); // Закриваємо потік
    puts(" Press any key to exit.");
    getch();
    return 0;
    }

    Приклад 5. Дано текстовий файл із рядками довжиною не більше 255 символів. Розвернути кожен його рядок на 180°.

    Розв’язок.

    #include < iostream>
    #include < string.h>
    #include < conio.h>
    #include < fstream>
    using namespace std;
    int main()
    {
    char FileName[100], str[256], ch;
    cout < < " File name? ";
    cin > > FileName; // Уводимо ім'я файлу
    fstream fInpOut; // Визначаємо двонаправлений потік
    // і зв'язуємо його з існуючим файлом для введення
    fInpOut.open(FileName, ios:: in | ios:: out); // і виводу
    if (! fInpOut)
    {
    cout < < " Error of opening of a file "
    < < FileName;
    cout < < " \nPress any key to exit.\n";
    getch();
    return 1;
    }
    int k;
    streampos Pos1 = 0; // Поточна позиція файлу (початкова)
    while (! fInpOut.eof())
    {
    fInpOut.getline(str, 256); // Читаємо рядок
    // Зараз активний режим читання. Далі писати
    // не можна. Покажчик поточної позиції зсунувся
    // на strlen(str) байт або на strlen(str) + 2 байт,
    // якщо було зчитано і ознаку кінця рядка у файлі
    streampos Pos2 = fInpOut.tellg(); // Запам'ятовуємо
    // положення поточного покажчика
    k = strlen(str);
    for (int i = 0; i < k / 2; i++) // Розвертаємо вміст
    { // рядка
    ch = str[i];
    str[i] = str[k - 1 - i];
    str[k - 1 - i] = ch;
    }
    fInpOut.seekp(Pos1, ios:: beg); // Повертаємо
    // покажчик поточної позиції у положення, яке
    // він займав перед читанням. Тепер можна писати
    fInpOut < < str; // Пишемо у файл. Далі читати не можна
    Pos1 = Pos2;
    fInpOut.seekg(Pos1); // Встановлюємо покажчик
    // у положення, яке він займав по закінченні
    // попереднього сеансу читання. Тепер можна читати
    }
    fInpOut.close(); // Закриваємо потік
    puts(" Press any key to exit.");
    getch();
    return 0;
    }






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.