Звук - это колебания воздуха, воздействующие на орган слуха человека. Впервые запись и воспроизведение звука осуществил выдающийся американский изобретатель сэр Томас Алва Эдисон (1847-1931) в 1877 г. Он изобрел фонограф - восковой валик, на котором игла фонографа при вращении валика оставляла звуковую дорожку. Звуковые колебания передавались на иглу от мембраны, находящейся в рупоре. Так осуществлялась запись звука. Для воспроизведения звука использовался тот же валик, покрытый путем электролиза металлом. Игла фонографа, двигаясь по канавке, передавала колебательные движения на мембрану и рупор. Так воспроизводился звук. Этот записи звука называется механическим. В дальнейшем он был значительно усовершенствован.
В 1888 г. была изобретена грампластинка, и на смену фонографу пришел граммофон. Его изобрел немецкий инженер Эмиль Берлинер. Ему удалось устранить такой недостаток фонографа, как невозможность тиражирования записей. Он отделил запись звука от воспроизведения и создал матрицу для штампования грампластинок.
В это же время французский инженер Шарль Кро предложил портативный вариант граммофона - патефон. Его выпускала в Париже фирма «Пате» (отсюда и название - патефон).
К концу XIX столетия начался век электричества, и в связи с этим изобретатели вели активные поиски новых записи звука. В 1888 г. знаменитый русский физик А.Г. Столетов создал первый в мире фотоэлемент. Это открытие позволило русскому ученому А.Ф. Викшемскому разработать в 1889 г. аппарат для оптической записи звука на светочувствительной ленте. Суть изобретения - в преобразовании звуковых колебаний в электрические и затем - в переменные световые. При освещении таким модулированным светом фотобумаги получается фотографическая фонограмма. Затем был найден воспроизведения звука с фотографической фонограммы. Его предложил в 1900 г. русский инженер И.Л. Поляков.
Итак, целевой язык - 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; // переправляем очередной кусок информации в поток вывода}
Звук - это колебания воздуха, воздействующие на орган слуха человека. Впервые запись и воспроизведение звука осуществил выдающийся американский изобретатель сэр Томас Алва Эдисон (1847-1931) в 1877 г. Он изобрел фонограф - восковой валик, на котором игла фонографа при вращении валика оставляла звуковую дорожку. Звуковые колебания передавались на иглу от мембраны, находящейся в рупоре. Так осуществлялась запись звука. Для воспроизведения звука использовался тот же валик, покрытый путем электролиза металлом. Игла фонографа, двигаясь по канавке, передавала колебательные движения на мембрану и рупор. Так воспроизводился звук. Этот записи звука называется механическим. В дальнейшем он был значительно усовершенствован.
В 1888 г. была изобретена грампластинка, и на смену фонографу пришел граммофон. Его изобрел немецкий инженер Эмиль Берлинер. Ему удалось устранить такой недостаток фонографа, как невозможность тиражирования записей. Он отделил запись звука от воспроизведения и создал матрицу для штампования грампластинок.
В это же время французский инженер Шарль Кро предложил портативный вариант граммофона - патефон. Его выпускала в Париже фирма «Пате» (отсюда и название - патефон).
К концу XIX столетия начался век электричества, и в связи с этим изобретатели вели активные поиски новых записи звука. В 1888 г. знаменитый русский физик А.Г. Столетов создал первый в мире фотоэлемент. Это открытие позволило русскому ученому А.Ф. Викшемскому разработать в 1889 г. аппарат для оптической записи звука на светочувствительной ленте. Суть изобретения - в преобразовании звуковых колебаний в электрические и затем - в переменные световые. При освещении таким модулированным светом фотобумаги получается фотографическая фонограмма. Затем был найден воспроизведения звука с фотографической фонограммы. Его предложил в 1900 г. русский инженер И.Л. Поляков.
Объяснение:
Итак, целевой язык - 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; // переправляем очередной кусок информации в поток вывода}