Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Примечание 2. Программист должен сам заботиться о том, чтобы в строке-приемнике (s1) хватило место для строки-источника (s2), и о том, чтобы строка всегда имела нуль-символ.
Выход за пределы строки и отсутствие нуль-символа является распространенными причинами ошибок в программах обработки строк. 1.6 Преобразование строки в число Преобразование строк в числа можно выполнить с помощью функций atoi, atol, atof. Обратные преобразования - с помощью функции sprintf. Функция atoi(s) преобразует строку, содержащую символьное представление целого числа в соответствующее целое число. Признаком конца числа служит первый символ строки, который не может быть интерпретирован как принадлежащий целому числу. Если преобразование не удалось, возвращает 0. Функция atol(s) преобразует строку, содержащую символьное представление длинного целого числа в соответствующее целое число. Функция atof(s) преобразует строку, содержащую символьное представление вещественного числа в соответствующее вещественное число двойной точности. Для использования функций atoi(s)atol(s) и atof(s) к программе следует подключить заголовочный файл < stdlib.h > предложением #include < stlib.h >
Пример. Данные об участнике соревнований (номер участника, рост и вес) содержатся в строке символов. Вывести номер, рост и вес.
/* Преобразование строки в число */ #include< stdio.h> #include< string.h> #include< stdlib.h> #include< conio.h> void main() { char s[]=" 10) Рост – 162 см., вес – 63.4кг"; //Строка int n; // Целое число long h; // Длинное целое double w; //Вещественное число n=atoi(s); //Преобразование в целое h=atol(& s[11]); //Преобразование в длинное целое w=atof(& s[26]); //Преоброзование в вещественное число printf(" Участник # %d Его рост %ld и вес %lf\n", n, h, w); puts(" Исходная строка"); puts(s); puts(" Первая подстрока"); puts(& s[11]); puts(" Вторая подстрока"); puts(& s[26]); getch(); }
Результат выполнения программы:
Участник # 10 Его рост 162 и вес 63.400000 Исходная строка 10) Рост – 162 см., вес – 63.4кг Первая подстрока 162 см., вес – 63.4кг Вторая подстрока Кг
Заметим, что строка определяется адресом ее нулевого символа. Для всей строки s таким адресом является имя строки s. Число 10 в символьном представлении находится в строке s в самом ее начале. Поэтому аргументом функции atoi является строка s. Число 162 в символьном представлении находится в строке s, начиная с позиции 11. Поэтому аргументом функции atol является подстрока строки s, определяемая адресом & s[11]. Число 63.4 в символьном представлении находится в строке s, начиная с позиции 26. Поэтому аргументом функции atof является подстрока строки s, определяемая адресом & s[26].
1.7 Поиск подстроки в строке
Функция strstr(s1, s2) выполняет поиск подстроки s2 в строке s1 (первого вхождения подстроки s2 в строку s1). Обе строки должны завершаться нуль-символами. В случае успешного поиска функция возвращает указатель на найденную подстроку. В случае неудачи – NULL. Пример. Определить, содержится ли строка s2 в строке s1 в качестве подстроки.
#include < stdio.h> #include < string.h> #include < conio.h> void main() { const int n=81; char s1[n], s2[n]; char *p; clrscr(); puts(" s1? "); gets(s1); puts(" s2? "); gets(s2); p=strstr(s1, s2); if(p) { printf(" Подстрока '%s'\n начинается в строке: %s\n", s2, s1); printf(" символом '%c'\nэтим символом начинается подстрока: %s\n", *p, p); } else puts(" NO"); getch(); }
Заметим, что *p – символ в строке s1, с которого начинается s2; p – подстрока, начиная с *p до конца строки s1.
Пример выполнения программы
s1? Скоро ли сессия? Так хочется сдать экзамен по ОАиП! s2? чет Подстрока 'чет' начинается в строке: Скоро ли сессия? Так хочется сдать экзамен по ОАиП! символом 'ч' этим символом начинается подстрока: чется сдать экзамен по ОАиП!
Таблица ASCII кодов, применяемая в системе программирования Borland C++ 3.1 for DOS
Назад 1.8 Сцепление двух строк (конкатенация)
Функция strcat(s1, s2) присоединяет строку s2 в конец строки s1 и возвращает указатель на строку, совпадающий с первым аргументом. При этом сначала из строки s1 удаляется завершающий нуль-символ. В конце новой строки S1 помещается '\0'. Программист должен сам обеспечить достаточную длину строки s1. Примеры. 1) char s1[40]=" Скоро Новый Год! "; char s2[]=" Скоро первая сессия! "; printf(" %s\n", strcat(s1, s2)); Будет получена строка: Скоро Новый Год! Скоро первая сессия! 2) Вторым параметром является текстовая константа: char s3[50]=" Успешной сдачи"; printf(" %s\n\t%s\n", strcat (s3, " 1-ой сессии!!! ", s3)); Будет получено две строки:
Успешной сдачи 1-ой сессии!!! Успешной сдачи 1-ой сессии!!!
3) char s4[35]=" Успехов и здоровья"; char s5[]=" в Новом Году! "; char *p; p=strcat(s4, s5); pintf(" %s\n%s\n", s4, p);
Будет получено две строки:
Успехов и здоровья в Новом Году! Успехов и здоровья в Новом Году! Функция strncat(s1, s2, n) присоединяет n символов строки, на начало которой указывает s2, в конец строки, на начало которой указывает s1 и возвращает указатель на строку, совпадающий с первым аргументом. Сформированная строка s1 ограничивается '\0'. Если n больше длины строки s2, то выполняется постая конкатенация. Если длина строки s2 меньше n, то все сиволы s2 присоединяются к строке s1. 1.9 Определение позиции первого вхождения символа из заданного набора символов Функция strcspn(s1, s2) сопоставляет каждый символ строки s1 со всеми символами строки, на начало которой указывает s2, и возвращает позицию первого вхождения символа строки s2 в строке s1. Символ '0' в сравнении не участвует. Если строка s1 начинается с символа, встречающегося в строке s2, то функция возврвщает значение нуль. Если строка s1 не содержит ни одного символа строки s2, то возвращаемое функцией значение совпадает с длиной строки s1. Примеры.
printf(" %d %d %d\n", strcspn(" asdf", " hjyars"), // s1 начанается с 'a' strcspn(" asdf", " ghtdu"), //в s1 'd' в позиции № 2 strcspn(" asrt", " hj")); // в s1 не символов s2 Получим: 0 2 4 Здесь 0 и 2 – позиции в строке s1, 4 – длина строки s1.
1.10 Cравнение двух строк
Сравнение строк производится посимвольно слева направо. Большей считается та строка, в которой первый несовпадающий символ имеет больший код в кодовой таблице. Функция strcmp(s1, s2) сравнивает строки s1 и s2. Возвращает отрицательное значение, если s1< s2, нулевое, если s1=s2 или положительное значение, если s1> s2. Функция strncmp(s1, s2, n) сравнивает строку s1 и первые n символов строки s2. Возвращает отрицательное значение, если s1< s2, нулевое, если s1=s2 или положительное значение, если s1> s2.
Пример. Ввести две строки. Вывести их в лексикографическом порядке.
#include< stdio.h> #include< string.h> #include< conio.h> void main() { char s1[20]; char s2[20]; puts(" Введите 1-ую строку "); gets(s1); puts(" Введите 2-ую строку "); gets(s2); if(strcmp(s1, s2)< 0) {puts(s1); puts(s2); } else if(strcmp(s1, s2)> 0) {puts(s2); puts(s1); } else puts(" Строки совпадают"); getch(); }
Результаты выполнения программы: Введите 1-ую строку abcdefg Введите 2-ую строку abcdefg Строки совпадают
Введите 1-ую строку bcdert Введите 2-ую строку bccertyu bc c ertyu bc d ert
Введите 1-ую строку rtyu Введите 2-ую строку rtdh rt d h rt y u Пример. Сколько раз построка s1 содержится в строке s?
#include< stdio.h> #include< string.h> #include< conio.h> void main() { char s[20]; char s1[20]; puts(" Введите строку "); gets(s); puts(" Введите подстроку "); gets(s1); int k=0, i=0; char *p=s; int n=strlen(s1); printf(" n=%d %c\n", n, *p); while(strstr(p, s1) & & i< n) { k=k+1; p=p+n+1; printf(" %c\n", *p); } puts(" В строке: "); puts(s); printf(" %d раз встречается %s\n", k, s1); getch();
}
Эта же задача с использованием srtcmp
/*Сколько раз подстрока s1 встречается в строке s? */ #include< stdio.h> #include< string.h> #include< conio.h> void main() { char s[20]; char s1[20]; puts(" Введите строку "); gets(s); puts(" Введите подстроку "); gets(s1); int k=0, i=0; int m=strlen(s); int n=strlen(s1); printf(" m=%d n=%d\n", m, n); while(i< m) { if(strncmp(s1, & s[i], n)==0) { k=k+1; i=i+n; } else i=i+1; } puts(" В строке: "); puts(s); printf(" %d раз(а) встречается %s\n", k, s1); getch();
}
|