В питоне написать программу, которая считывает текст из файла и а) выводит на экран только предложения, содержащие введенное с клавиатуры
слово,
б) подсчитывает, сколько в тексте запятых, дописывает его в конец файла и
записывает результат в новый текстовый файл,
в) дописать в созданный файл в конце информацию о настроении автора при
разработке программы (открывая файл на дозапись),
г) обработать все возможные исключения программы
Я, в основном, программы на С++ пишу, но из школы про Паскаль кое-что помню (в смысле, попытаюсь написать на Паскале).
Program A1;
var a,b,c,i:integer;
begin
write('Enter the a: ');
read(a);
writeln('Enter the b: ');
read(b);
с:=0;
for i:=1 to a Do
c:=c+b;
writeln('a*b=',c:5:0);
end.
Объясняю (начинаю сразу с цикла for): что значит произведение двух натуральных чисел а и b - это означает, сложить b с самим собой по а раз (можно и наоборот). Например, a=5, b=3. Переменную с=0 будем складывать с b.
i=1 c=5+0;
i=2 c=5+5;
i=3 c=10+5; //c=15
Вот и есть ответ: 5*3=15.
Итак, целевой язык - C++. Это значит мы - радостные обладатели технологии потоков, с коей мы будем производить весь ввод/вывод как при работе с файлами, так и при работе со стандартным вводом/выводом (консолью).
Ну а раз уж мы работаем с потоками, то будем делать это красивенько: создадим класс-обёртку для потока ввода, цель которого - поиск в этом потоке цитат и отправка их на поток вывода (который мы передаём).
[!] Стоит отметить, что по заданию не сказано, что есть разница между ' и ". Поэтому будем считать их одинаковыми.
[!] Внимание! Рядом с исполняемым файлом надо создать текстовый файл data.txt c текстом и цитатами.
КодС++11
#include <iostream>#include <fstream>using std::cout;class QuotesFinder { std::istream &in_stream; bool is_it_in_quote = false;public: QuotesFinder() = delete; QuotesFinder(QuotesFinder&&) = default; QuotesFinder(QuotesFinder const&) = default; explicit QuotesFinder(std::istream &is) : in_stream(is) {} [[nodiscard]] bool eof() const { return in_stream.eof(); } // Вот тут происходит вся магия QuotesFinder& operator >> (std::ostream& out_stream) { char buffer; in_stream.get(buffer); //Получаем очередной символ из потока if (buffer == '\"' || buffer == '\'') { if (is_it_in_quote) { is_it_in_quote = false; out_stream << buffer; out_stream << "\n"; return *this; } is_it_in_quote = true; } if (is_it_in_quote) { out_stream << buffer; } return *this; }};int main() { std::ifstream file("data.txt"); // Открываем файл if (!file.is_open()) { cout << "File is not exits!"; return 1; } QuotesFinder finder(file); // Создаём обёртку из файлового потока while (!finder.eof()) // Пока не достигли конца потока finder >> cout; // переправляем очередной кусок информации в поток вывода}