Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Пример обработки строк
Поскольку обработка строк должна выполняться очень тщательно, решим предлагаемую ниже задачу по нисходящей схеме: сначала акцентировав внимание на вводе-выводе строк и заменив обработку заглушкой, а затем занявшись непосредственно обработкой. Уровень 0 Задача string. Задан текст. Распечатать слова, начинающиеся с заданной буквы. Уточнения. Пусть текст - множество строк (в обычном смысле, а также в смысле языков Паскаль, Си) длины не более 40 символов. Ограничение необходимо, так как до ввода строки ее длина неизвестна, а поле памяти под строку должно быть зарезервировано до ввода. Пусть число строк заранее неизвестно. Слова в строках будем разделять пробелами. Первый символ строки - не пробел. Пусть переносов в словах нет. Входные данные представим в наиболее общем виде, отложив вопрос реализации в языке до разработки метода. Пусть символьная let - заданная буква. Пусть все данные записаны в одном файле. Имя этого файла передадим как первый параметр программы.
Входная форма: < let> < строка 1> < строка 2> ...... < строка k> ......
Выходные данные Будем выводить искомые слова по мере нахождения. Имя выходного файла зададим как второй параметр программы. Для идентификации программы выведем ее имя (нулевой параметр программы). Выходная форма: обр1 Program < argv[0]> обр2 Поиск слов, начинающихся с буквы < let>
1 строка: < строка 1> обр3 Найденные слова: < cлово 1> обр4 < cлово 2> .... обр5 отсутствуют 2 строка: < cтрока 2> обр3 Найденные слова: < cлово 1> обр4 < cлово 2> ..... обр5 отсутствуют .............................
Аномалии входных данных в примере рассматривать не будем. Функциональный тест let='s';
Метод Построчно обрабатываем файл, пока он не исчерпан, и выводим искомые слова по мере нахождения. Возможны два варианта структур данных для представления множества строк: организация массива строк (в этом случае придется ограничить число строк текста) либо обработка без использования массива. Выберем второй вариант как более универсальный. Безразлично, представить ли отдельную строку как массив или с помощью указателя, так как в любом случае длина строки неизвестна до ее ввода и надо резервировать поле фиксированной максимально возможной длины. Представим ее массивом. Пусть: строка - символьный массив из 41 символа (последний - '\0'): char str[41]; k - текущий номер строки, dat, res - указатели на входной и выходной файлы. Схема решения: Вывод заголовка по обр1; ввод и вывод let по обр2; {построчная обработка файла} k: =1; пока не достигнут конец файла: - ввод строки; - вывод строки с пояснительным текстом по обр3; Вх.: str, res; вых.: res Обработка строки с выводом найденных слов по обр4 А0.1 или текста по обр5 в случае отсутствия искомых слов
- k: = k +1; кц;
Для отладки ввода-вывода строк на этом этапе подзадачу А0.1 заменим заглушкой, выводящей для каждой строки текст " word " и номер строки.
Текст программы с заглушкой: файл str_dbg.cpp
//Отладочный вариант функции main с заглушкой обработки строки #include< stdio.h> #include< string.h> const int lenmax=41; //типизированная константа - граница массива void main(int argc, char* argv[ ]) { char let, str[lenmax]; FILE *dat, *res; int k; //Открытие файлов с проверкой результатов открытия if((dat=fopen(argv[1], " r"))==NULL) printf(" Файл данных не открыт"); if((res=fopen(argv[2], " w"))==NULL) printf(" Файл результатов не открыт "); //Вывод заголовков и ввод let fprintf(res, " Program %s \n", argv[0]); // argv[0] - заголовок программы fscanf(dat, " %c\n", & let); //не забывайте про &! fprintf(res, " Поиск слов, начинающихся с буквы %c \n", let); // Построчная обработка файла k=1; while(! feof(dat)) { fgets(str, 41, dat); //неформатированный ввод строки; вводит все символы до '\n'; //fscanf cо спецификатором %s вводит до первого ' ' или '\n' fprintf(res, " \n %d строка: %s \n", k, str); // форматированный вывод - выводит //все символы до '\0', т.е. как надо fprintf(res, " Найденные слова: \n"); // А0.1. Обработка строки. Заглушка: печать только слова “word” и номера строки fprintf(res, " %s %d \n", " word", k); k++; } }
|