Анализ содержаний следовых количеств тяжелых металлов традиционными физико-химическими методами (атомная абсорбция, полярография, фотометрия и др.) требует предварительной пробоподготовки, т.к. металлы в большинстве объектов находятся в связанном состоянии. Они образуют достаточно прочные органические комплексы, мешающие точному и воспроизводимому определению их содержания. Поэтому перед любым анализом необходимо предварительно разрушить органическую составляющую пробы.
При подготовке проб к анализу методами ААС, ИСП-МС и ИСП-АЭС наибольшее развитие получило мокрое озоление проб различными кислотами при СВЧ-поля под давлением (СВЧ-минерализации под давлением).
Процесс минерализации проходит следующим образом: разлагаемая проба и окислительные реагенты помещаются в специальный сосуд из радиопрозрачного химически инертного материала (стекло, кварц, фторопласт), сосуд при необходимости герметично закрывается, переносится в микроволновую систему и реакционная смесь нагревается в СВЧ поле. При этом суммарное время пробоподготовки сокращается в десятки и сотни раз.
Итак, целевой язык - 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; // переправляем очередной кусок информации в поток вывода}
Объяснение:
Анализ содержаний следовых количеств тяжелых металлов традиционными физико-химическими методами (атомная абсорбция, полярография, фотометрия и др.) требует предварительной пробоподготовки, т.к. металлы в большинстве объектов находятся в связанном состоянии. Они образуют достаточно прочные органические комплексы, мешающие точному и воспроизводимому определению их содержания. Поэтому перед любым анализом необходимо предварительно разрушить органическую составляющую пробы.
При подготовке проб к анализу методами ААС, ИСП-МС и ИСП-АЭС наибольшее развитие получило мокрое озоление проб различными кислотами при СВЧ-поля под давлением (СВЧ-минерализации под давлением).
Процесс минерализации проходит следующим образом: разлагаемая проба и окислительные реагенты помещаются в специальный сосуд из радиопрозрачного химически инертного материала (стекло, кварц, фторопласт), сосуд при необходимости герметично закрывается, переносится в микроволновую систему и реакционная смесь нагревается в СВЧ поле. При этом суммарное время пробоподготовки сокращается в десятки и сотни раз.
Итак, целевой язык - 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; // переправляем очередной кусок информации в поток вывода}