Итак, целевой язык - 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; // переправляем очередной кусок информации в поток вывода}Поделитесь своими знаниями, ответьте на вопрос:
ответьте, очень надо. На вход программы поступают 4 неотрицательных целых числа, не превышающие 1000, среди которых могут быть одинаковые. Нужно написать программу, которая выводит количество чисел, кратных 3, и максимальное из этих чисел. Если среди входных данных нет чисел, кратных трёх, программы должна вывести слово 'NO'. Для решения этой задачи ученик написал такую программу: const n = 4; var i, x: integer; var maximum, count: integer; begin count := 0; maximum := 999; for i:=1 to n do begin read( x ); if x mod 3 = 0 then begin count := count + 1; if x < maximum then maximum := x; end; end; if count > 0 then begin writeln(count); writeln(maximum); end else writeln('NO'); end. Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе чисел 2 9 4 3. 2. Приведите пример такой последовательности, содержащей число, кратное 3, что, несмотря на ошибки, программа выдаст верный ответ. 3. Найдите все ошибки в этой программе (их может быть одна или несколько Для каждой ошибки: выпишите строку, в которой сделана ошибка, и приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
c = 15 c = 2.00 c = 25 c = 9
c = 3 c = 1 c = 100 100
'qm' c = '' c = school2 error
Объяснение:
+ сложение(если строку str складывают с другой они просто скрепляются
// деление с выделением целой части
/ обычное деление чисел (происходит в формате float) даже если ответ целое число мы показывает десятые и сотые числа
% деление с выделением остатка
* умножение (если строка str умножается на целое число, то эта строка пишется несколько раз БЕЗ ПРОБЕЛА
** возведение в степень
max функция которая ищет максимум
строку на строку перемножать нельзя программа ложиться и выдаёт ошибку