Домашнее задание для ПО 2.11 по системному программированию от 17.04.20
учебно-методический материал

Склемин Алексей Анатольевич

В текстовом файле, содержащем текст программы на языке Си, проверить соответствие открывающихся и закрывающихся фигурных скобок { и }. Результат проверки вывести на экран и записать в виде фразы в текстовый файл. Результат работы программы (вывод) поместить в отдельный текстовый файл (например, "out . txt " ), продублировав на экране.

Скачать:

ВложениеРазмер
Microsoft Office document icon 42.doc29.5 КБ

Предварительный просмотр:

Сорок второе задание

В текстовом файле, содержащем текст программы на языке Си, проверить соответствие открывающихся и закрывающихся фигурных скобок { и }. Результат проверки вывести на экран и записать в виде фразы в текстовый файл. Результат работы программы (вывод) поместить в отдельный текстовый файл (например, "out . txt " ), продублировав на экране.


#include

using namespace std;

#include

int main()

{

    char file_name[100]; // буфер хранения пути к файлу

    cout << "Введите имя файла: ";

    cin >> file_name;

    ifstream fin(file_name); // открываем файл для чтения

        if (!fin.is_open()) // если файл не открыт

            cout << "Файл не может быть открыт!\n"; // сообщить об этом

        else

        {

            int counterBracketOpen = 0, // количество вхождений фигурных открывающихся скобок

                counterBracketClose = 0; // количество вхождений фигурных закрывающихся скобок

            char symbol; // временная переменная для хранения символов считанных из файла

            fin >> symbol; // предварительное считывание из файла символа

            while (fin)

            {

             if (symbol == '{') counterBracketOpen++; // инкремент количества октрывающихся фигурных скобок

             if (symbol == '}')

             {

                 counterBracketClose++; // инкремент количества закрывающихся фигурных скобок

                 // если нарушен порядок следования скобок

                 if (counterBracketClose > counterBracketOpen)  break; // выход из цикла

             }

            fin >> symbol; // считываем символ из файла

            } // конец while

            fin.close(); // закрываем исходный файл

            ofstream fout("./out"); // создаём файл для записи результата проверки

            // выполнияем проверку баланса скобок

            if (counterBracketOpen == 0 && counterBracketClose == 0)

            {

                cout << "В файле нет фигурных скобок!" << endl;

                fout << "В файле нет фигурных скобок!" << endl;

            }

            else

                if (counterBracketOpen == counterBracketClose)

                {

                    cout << "Баланс скобок не нарушен!" << endl;

                    fout << "Баланс скобок не нарушен!" << endl;

                }

                else

                {

                    cout << "Баланс Скобок нарушен!" << endl;

                    fout << "Баланс Скобок нарушен!" << endl;

                }

            fout.close(); // закрываем файл результата

        }

    return 0;

}


По теме: методические разработки, презентации и конспекты

Домашнее задание для ПО 1.11 по системному программированию от 04.02.20

Шестнадцатеричное представление Представим, что необходимо просмотреть содержимое некотоpых байт в памяти. Требуется oпределить содержимое четырех последовательных байт (двух слов), которые имеют двои...

Домашнее задание для ПО 1.11 по системному программированию от 11.02.20

Сегменты Сегментом называется область, которая начинается на границе параграфа, то есть, по любому адресу, который делится на 16 без остатка. Хотя сегмент может располагаться в любом месте памяти и им...