Step 1 (S-38596)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/13028/step/1

Step 1 (S-38596) 1.png

[00:00 - 00:17] привет сегодня мы изучаем стройте стройте вещь полезная встречается почти всегда в реальных задач он не мог с ними уже работали например писали какие то конкретные против двойных кавычках когда выводили в самом 1 занятии


Step 1 (S-38596) 2.png

[00:17 - 00:33] сегодня научимся делать более сложная вещь в 1 очередь подключим библиотеку назвать тренинг тренинг по английски эта нить на которую как бы нанизываются отдельные символы в русском языке для всего этого есть 1 слово строка в английском таких слов несколько


[00:33 - 00:50] тренинг это последовательность символов а line это последовательность символов которое заканчивается переводом строки ну что тут немножко похожа на абзац итак мы подключить библиотеку теперь создадим переменную типа string стринг с я можно сразу положить какой нибудь значение


Step 1 (S-38596) 3.png

[00:50 - 01:06] записано в двойных кавычках но мы этого делать не будем читать как обычно с помощью центра выводить с помощью south пусть например пользователь нам представился а мы хотим с ним поздороваться напишем hello в кавычках


Step 1 (S-38596) 4.png

[01:06 - 01:23] и можно писать + имя + от сложения строк строки просто слипаются между собой посмотрим например на зовут вася а пишем а то и получаем хэлло вася чтение строк с помощью цен читать по словам например


Step 1 (S-38596) 5.png

Step 1 (S-38596) 6.png

[01:23 - 01:39] если мы сделаем 2 строки s 1 s 2 из читаемых с помощью ценен мы попробуем вывести их через пробел то получится такая штука что мы сможем вводить наши 2 слова как угодно как числа


Step 1 (S-38596) 7.png

[01:39 - 01:55] расставляя пробелы над ним несколькими или даже переводами строк например abc куча пустых строк 3 от вас 1 попал абзаца 2 доела часто возникает необходимость считать строку целиком


Step 1 (S-38596) 8.png

Step 1 (S-38596) 9.png

[01:55 - 02:10] то есть не отдельные слова а все до символ перевода строки по сути абзац для этого есть специальная функция который называется дед лайн английский плане напоминает мне 1 параметр это потоку с которого читать


Step 1 (S-38596) 10.png

[02:10 - 02:25] у нас она 11 с 1 и 2 параметр куда читать строка мы выведем что получилось выводятся все по прежнему sultan нас есть всего 1 способ это сделать


Step 1 (S-38596) 11.png

[02:25 - 02:42] сколько бы мы пробел в не вели чтоб мы не делали все что то перевод строки то нажатии энтера оказывается в 1 строке компьютер все хранится как числа в том числе и строки ну на самом деле строка представляется в виде набора чисел


[02:42 - 02:57] у каждого отдельного символа есть свой код код число которое по таблички с поставляются с этим символ отдельно символ хранится в переменной типа char сокращение от чарли всему по английски


[02:57 - 03:12] можно например читать строку и в эту переменную положить нулевой символ той с которой стоит 1 нашей строки раз остроте точно такая же как вектора начинается с 0


[03:12 - 03:32] узнать длину строки можно с помощью метода size обращаться к отдельным элементам можно также как и вектор 20 квадратных скобочках отличие от строке ничего нельзя менять то есть взять и поменять конкретно символ нельзя ну посмотрим что вы видите у нас если мы хотим вывести чар


[03:32 - 03:46] от строка появилась 1 буква я здорово что это означает когда мы вводим чар то выводится символ соответствующий этому числу можно узнать код эту символа


Step 1 (S-38596) 12.png

[03:46 - 04:06] с каким числом на самом деле по аналогии с переводом вещественных чисел в целы мы можем воспользоваться словом int в круглых скобочках приведение типа мы приводим тип char к типу int и вводиться будет число к нашему символу


[04:06 - 04:23] например код символа 97 эта маленькая латинская буква с гнать эту ни в коем случае не нужно известно что нужно помнить что у нас все буквы расположены по алфавиту то есть если бы поймет какой то код то буквы б код на единицу больше


Step 1 (S-38596) 13.png

[04:23 - 04:42] буквы ц на 2 больше ну и так далее точно также где то отдельно лежат цифры у цифра 0 какой то код уединиться на 1 больше удвоить на 2 больше ну и понятно как со всеми остальными мечтами посмотрим конкретно задачу пусть мы хотим заработать кучу денег на курс акций которое то падают то растут


Step 1 (S-38596) 14.png

[04:42 - 04:56] когда акции будут стоить дешево покупать а когда будут стоить дорого будем продавать но пусть вас есть сайт мы каким то образом скачали страничку и смотрим актимель то есть ее содержимое и там где то среди всего этого мусора лежит


[04:56 - 05:14] цена акции то что мы хотим достать 1 наша задача читать строку и выделить из нее только цифра ну будем считать что там 1 число и если мы слепим все цифры которые мы встретились в 1 число это и будет цена акций поехали читай мы строку


[05:14 - 05:32] пока что она нас 1 с помощью дед лайн бегать по всей строке можно с помощью цикла for так же как мы делали цвета раме самый простой способ это а у то цель двоеточие с автоматически будет определяться тип переменной ц


Step 1 (S-38596) 15.png

[05:32 - 05:50] нашем случае это будет и мы будем последовательно смотреть на все символы в строке с что можно сделать с ним если символ цифра о что мы хотим проверить как отделаться если код символа больше либо равен коду цифра 0


[05:50 - 06:10] когда мы хотим получить код какого то символа мы пишем его одинарных кавычках итак нас кот больше чем кот 0 и меньше чем код девятки все цифры попадает в диапазон если это правда то печатаем очередной символ


[06:10 - 06:29] так вот нас какой то мусор мусор мусор и число после него тоже может идти что угодно ждать работ наша программа остается только число а теперь представим себе ситуацию вполне реально что например вы скачали какой нибудь


Step 1 (S-38596) 16.png

Step 1 (S-38596) 17.png

[06:29 - 06:45] страничку и хотите выделить сам конкретных компаний а там их 100 штук и вам нужно найти какую нибудь например мы хотим торговать акциями компании рога и копыта которые там имеет такое обозначение на бирже ркп то что нужно сделать


Step 1 (S-38596) 18.png

[06:45 - 07:03] нужно читать кучу строк и выбрать только подходящий из них то есть которая содержит в себе под строку с именем компании пусть там число n это количество строчек который нам нужно обработать


Step 1 (S-38596) 19.png

[07:03 - 07:18] мы будем бегать по всем строчкам обычным forum это уже хорошо умеет и на каждом шаге цикла считывать очередной строку


[07:18 - 07:36] вот она у нас уже есть от предыдущей программы этот кусочек нам тоже понадобятся есть придешь программа по выделению цифр и осталось только научиться проверять что это строка содержит ровно название нашей компании это можно сделать с помощью


Step 1 (S-38596) 20.png

[07:36 - 07:51] метода find у строчек есть куча всяких прикольных методов уже написанных за нас который здорово облегчит нам жизнь частности find позволяет найти по строку строки например вы хотите проверить что ваше длинное стратегии сколько слово перейти от слов final


Step 1 (S-38596) 21.png

[07:51 - 08:06] я самая нашлось то find вернет то есть на место горожане подставятся число равное номеру 1 вхождения подстроки строку если же не нашлось


[08:06 - 08:25] fight вернет - единица тем образом как вам проверить вообще где нибудь в строке стоит название нашей компании или нет поискать название компании finder и если результат не равен - единица то есть оно где то нашлось то делать собственно то есть все наши действия


[08:25 - 08:41] попробуем пусть у нас есть 2 строки какая нибудь 1 компания которая не подходят


Step 1 (S-38596) 22.png

Step 1 (S-38596) 23.png

[08:41 - 08:56] опа смотреть мы ввели 2 и ждали что программа сейчас читает нас меня строки осталось только 1 и кончилась сейчас я расскажу почему так происходит когда мы читаем числа с помощью цена


Step 1 (S-38596) 24.png

[08:56 - 09:13] то наш курсорчик куда мы сейчас смотрим какие символы обрабатываем останавливаться сразу как только число кончилось после этого мы делаем дед лайн нет line читает до перевода строки а перевод строки появляется сразу потому что мы остановились ровно после числа


[09:13 - 09:30] как избавиться от проблемы после считывания числа сделать еще 1 дед лайн который считает просто пустую строку тогда наш 1 осмысленно дед лайн в цикле как раз будет читать то что нужно проверить что проблема решилась


[09:30 - 09:45] итак а какая нибудь компания нам не нужно и чего нибудь содержащее в качестве подстроки название интересно нам компанией работать


Step 1 (S-38596) 25.png

Step 1 (S-38596) 26.png

[09:45 - 10:04] посмотрим еще 1 задачу пусть на нашем сайте название компании может быть написано маленькими буквами или большими буквами или с большой буквы или вообще как угодно вперемешку мы хотим четко понимать что это именно наш название find не найдет такую подстрахую если она будет написано большими буквами


[10:04 - 10:18] то есть он строго проверяет соответствие регистра букв таким образом наша задача свелась к тому что и строки не важно какой нужно сделать строку стоишь например и с больших букв то есть


[10:18 - 10:36] если символ маленькая буква то нужно превратить его в соответствующий большую букву а все остальные символ оставить без изменений как будем поступать отдельный символов в строке мы менять не можем поэтому нам придется делать новую строку в которой мы постепенно будем накапливать


Step 1 (S-38596) 27.png

[10:36 - 10:51] изменение в начале она будет пустой строкой это просто кавычки кавычки затем с помощью нашего любимого цикла for some то будем ходить по всей строке


[10:51 - 11:07] и делал следующий день если очередной символ эта маленькая латинская буква как отправить его код больше либо равен коду символа а и меньше либо равен коду последнего символов алфавита z


[11:07 - 11:23] такой ситуации нам нужно превратить маленькую букву в большую букву как это делается сдаем переменной которая обозначает номер буквы в алфавите чтоб узнать от номер можно из кода символа вычесть


[11:23 - 11:39] код буква а получить число от 0 до 25 делать это вот так поскольку нас все честно то все будет работать и после этого к строке с 2 мы прибавляем символ


[11:39 - 11:55] такой большая буква а + в алфавите все 2 прибавилось хорошее буду стараться если нам встретилась во всех остальных случаях


[11:55 - 12:13] просто добавляем тоже там был программы стал большой сложно давать я подпишу комментарии чтобы не запутаться этот for предназначен для перевода


[12:13 - 12:32] регистром lcr дальше давать по ходу исправлять ошибки надо вспомнить для чего это это у нас предназначена для поиска подходящей строки


[12:32 - 12:48] мы все буквы сделали большими соответственно меня то что мы ищем нам ошибок и еще мы в новой строки я не стар мы бегать можно тоже по новой строки то в принципе тоже будет работать


[12:48 - 13:05] так теперь ваша программа должна научить работать независимо от регистра букв вот наша 1 не очень хорошей компании и вот набранная как попал название


Step 1 (S-38596) 28.png

[13:05 - 13:24] все обошлось для строк си + + сделано куча методов которые могут быть полезны для решения разных задач со многими из них вы познакомиться практическом занятии сейчас я покажу еще несколько чтоб было понятней как с ними работать найдем такую задачку пусть у нас есть


Step 1 (S-38596) 29.png

[13:24 - 13:39] строка содержащая в себе предложение которое заканчивается точкой восклицательным знаком или вопросительным знаком то есть сначала узнаем к на какой позиции находится 1 знак препинания


Step 1 (S-38596) 30.png

Step 1 (S-38596) 31.png

[13:39 - 13:57] считанную строку и печатаем 1 вхождение знаков препинания как это можно сделать можно 3 раза дерева поискать файлом


Step 1 (S-38596) 32.png

Step 1 (S-38596) 33.png

[13:57 - 14:15] точка восклицательный знак вопросительный но есть более прикольно котором зайца find first of найти 1 из перечисленных в статье символов вот 3 на интересных нам символ попробую еще для многих


Step 1 (S-38596) 34.png

[14:15 - 14:32] но это наверно больше 10 должно получиться число будет похоже на правду да 11 то есть на 11 месте примиряться с 0 встречается 1 символ из перечисленных в параметре ростов режим более сложную задачку


Step 1 (S-38596) 35.png

Step 1 (S-38596) 36.png

Step 1 (S-38596) 37.png

[14:32 - 14:49] пусть нам нужно вырезать 2 предложение в тексте и вывести его то есть вот нас в 1 строку написано весь текст мы хотим достать у него только 2 предложение как мы будем это делать 2 предложение начинается после 1 знака препинания


[14:49 - 15:05] то есть позиция 1 знака препинания нас записано теперь нужно найти следующий за ним знак препинания это делать опять же с помощью метода в ростов к параметру него тоже что мы ищем


Step 1 (S-38596) 38.png

[15:05 - 15:23] и еще 1 параметр начиная с какого места мы будем искать связь + 1 то есть начиная со следующей позиции этот параметр также есть функция find то есть если вам просто нужно искать например все вхождения то вы сможете циклом while пробежаться


[15:23 - 15:38] у меня параметры запомню где у нас было 2 рождение и теперь нужно печатать все символы начиная с февраля заканчивается


[15:38 - 15:52] с 1 знак препинания до 2 знака препинания можно сделать это спам что платформ а можно воспользоваться методом вылезающим под строкой строки такое тоже есть называется substr substring под строка


[15:52 - 16:09] параметр у него и откуда начиная с какой силой было резать и сколько символ знака - пожалуйста давайте посмотрим что получилось если что то получилось не так то поправьте


Step 1 (S-38596) 39.png

[16:09 - 16:24] ведем 1 предложение какое то 2 и например 3 действительно было что то похоже на 2 предложение но зацепило несколько символов то есть


[16:24 - 16:39] вот эту самую точку перво 1 знак препинания и пробелы после него мы хотим сделать все красиво и не хотим чтобы они у нас выводились тогда отрезать от строку нужно начинать все с + 2 это


Step 1 (S-38596) 40.png

[16:39 - 16:54] уберет точка пробел но и символов нужно резать на 2 меньше чтоб у нас не зацепил с другой стороны что нибудь


Step 1 (S-38596) 41.png

[16:54 - 17:10] да теперь вылезла красил на этом закончим с примерами и перейдем к практике сегодняшняя практика немного отличается от всех остальных во многих задачах есть подсказки то есть каким методом нужно воспользоваться его описания описание параметров


Step 1 (S-38596) 42.png

[17:10 - 17:17] вообще говоря все они похоже на то чем мы уже научились пользоваться так что проблем быть не должно пока