Главная страница
Навигация по странице:

  • Цель работы

  • Индивидуальное задание

  • Алгоритм программы

  • Текст программы

  • Результат программы

  • Информатика


    Скачать 181.08 Kb.
    НазваниеИнформатика
    Дата05.06.2018
    Размер181.08 Kb.
    Формат файлаdocx
    Имя файла3.docx
    ТипДокументы
    #46143

    Министерство образования и науки Российской Федерации

    ФГАОУ ВО «Севастопольский государственный университет»

    Институт радиоэлектроники и информационной безопасности

    Кафедра «Радиоэлектроника и телекоммуникации»


    ОТЧЁТ

    по лабораторной работе №3

    «Программирование операций над строками и файлами»

    по дисциплине

    «Информатика»


    Выполнил:

    студент гр. РС/с-11-о

    Штерев Дмитрий

    Вариант № 2

    Защитил с оценкой: ______

    Принял: ст. преподаватель

    Редькина Е. А.

    Севастополь

    2017

    1. Цель работы

    Изучить основные принципы операций над строками и файлами в языках C/C++.

    Исследовать свойства файловых указателей.

    1. Индивидуальное задание

    Написать программу, которая считывает из текстового файла четыре предложения и выводит их на экран в обратном порядке, т.е. первым выводит четвертое предложение, а последним — первое. Ввод-вывод осуществлять с помощью средств языка С++.

    1. Алгоритм программы



    Рис. 1 – Блок-схема программы (часть 1)



    Рис. 2 – Блок-схема программы (часть 2)

    1. Текст программы

    #include

    #include

    #include

    #include

    using namespace std;

    int main()

    {

    setlocale(LC_ALL, "Russian");

    // обработка текста

    ifstream fin ("C:\\Borland\\Program\\333.txt", ios::in); // поместите папку с текстовым файловым на лок диск D

    if (!fin)

    {

    cout << "Файл не может быть открыт!" << endl << endl;

    }

    else

    {

    fin.seekg(0, ios::end);

    long len = fin.tellg();

    char *str1 = new char [len + 1];

    fin.seekg(0, ios::beg);

    fin.read(str1, len);

    str1[len] = '\0';

    int k = 0, i = 0, j = 0; // k - начало нового предложения, i - счетчик циклов, j - счетчик найденных слов

    char *token;

    char deliteli[] = ",.!?\/<>)(*;:' ";

    const int bukvy = 15;

    char slovo[bukvy];

    const int max = 10000;

    char predlojeniya[max], rezerv[max];

    cout << "Введите искомое слово: ";

    cin >> setw(bukvy) >> slovo;

    OemToCharA (slovo, slovo); //Функция CharToOem транслирует в строку с OEM-кодировкой символов.

    system("cls");

    cout << "Слово, введенное Вами: " << slovo << endl;

    // считаем кол-во точек/вопр/воскл в исходном тексте, ведь в тексте может вообще не быть предложений

    int n = 0;

    for (i = 0; i < strlen(str1); i++)

    {

    if (str1[i]=='.' || str1[i] == '!' || str1[i] == '?') n++;}

    if (n == 0)

    cout << endl << "Текст в файле вообще не содержит предложений" << endl << endl;

    // основная часть

    else

    {

    cout << endl << "Предложения с введенным Вами словом:" << endl;

    for (i = 0; i < strlen(str1); i++)

    {

    if (str1[i]=='.' || str1[i] == '!' || str1[i] == '?')

    {

    strncpy(predlojeniya, str1+k, i-k+1);

    predlojeniya[i-k+1] = '\0';

    strcpy (rezerv, predlojeniya); // функция strtok вычленяет токены, разделяемые любым из символов ",.!?\|/<>)(*;:' ",

    token = strtok(predlojeniya, deliteli); // дубликат строки (rezerv)

    while (token != NULL)

    {

    if (!strcmp(token, slovo))

    {cout << rezerv; j++;}

    token = strtok(NULL, deliteli);

    }

    k = i + 1;

    }

    }

    if (j == 0) cout << endl << "К сожалению, текст не содержит предложений со словом <" << slovo << ">" << endl;

    cout << endl << "--------------------------------------------------------------------------------" << endl;

    }

    }

    system("pause");

    return 1;

    }



    1. Результат программы




    Рис. 3 – Результат поиска предложения со словом “head”


    Рис. 4 – Результат поиска предложения со словом “conscience”


    Рис. 4 – Результат поиска предложения со словом “love”


    Рис. 5 – Данный текст

    1. Вывод

    В ходе лабораторной работы были изучены принципы работы с текстовыми файлами, строками и символами в этих файлах. Для данной задачи были использованы циклы for, while. В написанной программе были рассмотрены несколько вариантов решения задачи:

    1. файл вообще не содержит текста;

    2. файл содержит текст, но в виде набора слов, а не в виде предложений;

    3. файл содержит предложения, но нет введенного слова;

    4. файл содержит предложения с введенным словом.


    написать администратору сайта