Находка для тех, чьи девушки и супруги работают в сфере услуг: маникюр, брови, ресницы и так далее...
🤔 Вы же наверняка задумывались, как помочь своей половинке зарабатывать больше? Но что делать, если во всех этих маркетингах и процедурах не разбираешься от слова «совсем»?
Мы нашли выход — это сервис VisitTime
Чат-бот для мастеров и специалистов, который упрощает ведение записей:
— Сам записывает клиентов и напоминает им о визите
— Персонализирует скидки, чаевые, кешбек и предоплаты
— Увеличивает доходимость и помогает больше зарабатывать
А еще там первый месяц бесплатно, поэтому лучшее, что вы можете сделать сейчас — установить или показать его своей принцессе
Всё интуитивно понятно и просто, достаточно нажать на этот текст и запустить чат-бота
Смотри задача есть строка, которая заканчивается точкой. Найти какая буква туда чаще всего входит. при этом считать прописные и строчные буквы одинаковыми.
Общий план. 1. считать всю строку по одному символу, пока не встретим точку. 2. для каждого символа узнать что это за символ. 3. в зависимости от того, какая буква прибавить счетчик.
Идем снаружи во внутрь. 1 действие. считать символ из строки можно одним действие read(). ок. легко. Дальше надо считать много раз пока не будет точка. Это значит цикл. Фигня. Имеем:
читаю символ
открываю цикл если символ не точка, то выполняю пункт 2. читаю следующий символ возвращаюсь к проверке условия.
Все первый пункт готов. Теперь углубляемся дальше внутрь.
пункт 2 гласит. "для каждого символа узнать что это за символ."
Ага есть некоторая буква пускай она хранится в ch. надо узнать её порядковый номер в первом массиве. Ага. Узнать номер, это сложновато для компа, значит упрощаем. массив это некоторый набор букв. так. пускай еще один цикл будет. пробегаем по первому массиву от 1 до 26 числа и каждый символ сравниваем с ch. тут сложных действий для компа нет. сравнить он умеет. цикл тоже умеет. Все. получаем
пункт 2. ch
запускаем цикл со счетчиком i от 0 до 26.
если первый массив (i)= сh то выполняемпункт 3, иначе берем следующий элемент.
теперь соединяем эти два кусочка первый и второй пункт. Т.е. на место где было выполнить 2 пункт вставляю свой код.
читаю символ в ch
открываю цикл если символ не точка, то выполняю
запускаем цикл со счетчиком i от 0 до 26.
если первый массив (i)= сh то выполняемпункт 3, иначе берем следующий элемент.
читаю следующий символ возвращаюсь к проверке условия.
теперь продвигаюсь еще дальше внутрь. нужно выполнить пункт 3. он гласит в зависимости от того, какая буква прибавить счетчик.
так как мы вычислили номер буквы то прибавить счетчик легко. Номер буквы у нас был i. получаем
второй_массив(i)=второй_массив(i)+1;
объединяем это с нашим предыдущим кусочком. Получим готовый код ну т.е. схему.
читаю символ в ch
открываю цикл если символ не точка, то выполняю
запускаем цикл со счетчиком i от 0 до 26.
если первый массив (i)= сh то выполняемвторой_массив(i)=второй_массив(i)+1; , иначе берем следующий элемент.
читаю следующий символ возвращаюсь к проверке условия.
Вот такая стратегия должна быть когда мы двигаемся снаружи внутрь. Кстати мы упустили тот факт, что большие и маленькие буквы должны считаются одинаковыми. Это нас должно быть в начале 2 пункта когда мы определяем номер. или в конце 1 пункта. Обучение программированию
KaDeaT, у тебя прямо целые статьи получаются)) я прочитала, но уже вообще ничего не соображаю...как в той сказке :"котелок у девочки не варил"
Цитата (KaDeaT)
Ага есть некоторая буква пускай она хранится в ch. надо узнать её порядковый номер в первом массиве. Ага. Узнать номер, это сложновато для компа, значит упрощаем. массив это некоторый набор букв. так. пускай еще один цикл будет. пробегаем по первому массиву от 1 до 26 числа и каждый символ сравниваем с ch. тут сложных действий для компа нет. сравнить он умеет. цикл тоже умеет. Все. получаем
вот в этом пункте я и...заклилась) Сравнивать...точняк. Попробую переварить и завтра допишу начатое!!!!!!!!!!!!!!
а сейчас спать надо...завтра c утра в инст ехать ЕГЭ2013: РМФ:272 РМИ:281 Дневник:/forum/72-37475-1 МФТИ ФИВТ, 1 курс
Сообщение отредактировал nut - Понедельник, 2013-02-11, 3:04 AM
Теперь вторая стратегия. Изнутри наружу идем. Сначала выполняем самое мелкое действие. Допустим мы уже знаем номер в массиве к которому нужно прибавить 1. пускай он хранится у нас в переменной k.
Как это сделать. Легко.
k второй_массив(k)=второй_массив(k)+1;
Так. идем наружу, там у нас k. т.е. теперь нам нужно научиться определять номер, когда нам дана некоторая буква и сохранять его в k. Пусть буква нам дана в виде переменной s.
поучаем код
s запускаем цикл со счетчиком k от 0 до 26.
если первый массив (k)= s то выполняем второй_массив(k)=второй_массив(k)+1; , иначе берем следующий элемент.
Как видишь мы как бы одели наш прошлый маленький код, куском побольше в котором уже есть для маленького все нужные ему данные.
Теперь снова идем наружу, там у нас s. Т.е. нам нужно получать букву из строки, пока не встретим точку.
Ок. Без проблем.
читаю символ в s
открываю цикл если символ не точка, то выполняю
запускаем цикл со счетчиком k от 0 до 26.
если первый массив (k)= s то выполняем второй_массив(k)=второй_массив(k)+1; , иначе берем следующий элемент.
читаю следующий символ возвращаюсь к проверке условия.
Снова мы одели наш небольшой кусок большим. Но этому коду уже ничего не нужно. Все Значит мы дошли до самого верха. Схема получилась такая же.=) Хотя мы шли наоборот. Обучение программированию
Вот тебе две стратегии я расписал. Теперь разберись, осознай. И потом напиши для себя полный план своей задачи и работай с ним, по любой из стратегий. Поэтому я с самого начала говорил тебе, что писать можно хоть блок схемами, главное научиться алгоритмизировать задачу. Обучение программированию
иначе получается совсем неудобно, не тот формат. Хочется чтобы ты сразу идею уловила. Если бы был реал-тайм разговор, я бы выдавал тебе это отдельными кусками и поправял бы, но в формате форума неудобно так получает и времени больше отнимает, так как я не могу тебя сразу остановить когда ошибку ты делаешь. Приходится ждать ответа с ошибкой, потом исправлять её, а она может быть в самом начале, и ждать снова. =)) Обучение программированию
Нежданик. Проверь себя. Скачай архив и выполни вариант. А1-С3. Даже если уже разбирала этот вариант все равно реши. Хочется уровень реальный знать. Только честно. Выдели 3 часа времени себе, возьми листы чистые и ручку. Все шпоры, подсказки и т.д. убери. Как сделаешь, скинь сюда ответы. Посмотрим, как у тебя обстоят дела, на данный момент. =))) Считай что ты на экзамене. Время засеки сколько ушло на А и сколько на Б и сколько на всю работу, если раньше 3 часов уложишься. http://yadi.sk/d/e1DVDpQv2WZtP Обучение программированию
1. В описании массива ошибка, должно быть так: A:array['A'..'Z'] of integer; если применять такой массив, то не будет необходимости заводить второй и смотреть порядковый номер в кодовой таблице. Здесь важно понять, что индексом массива может быть и упорядоченный ряд символов.
for i:=0 to 9 do {Цикл от 0 до 9 для обнуления массива} a[i]:=0;
begin while ch<> '.' do read(ch); a[ch]:=a[ch]+1; read (ch); end;
стремноватенько как-то...вот в этом я и запутываюсь
2. Цикл должен идти по символьной переменной, а не целой i выглядеть это должно так: for c:='A' to 'Z' do {Цикл от А до Я для обнуления массива} a[c]:=0; С - символьная величина.
Добавлено (2013-02-11, 9:57 AM) --------------------------------------------- Потом в цикле считываем посимвольно до точки все равно в каком цикле ПОКА или ДО И каждый раз увеличиваем счетчик именно того символа, который считали.
while ch<> '.' do read(ch); a[ch]:=a[ch]+1; read (ch); end;
Если все вышесказанное поправить, то этот фрагмент будет работать правильно, только перед циклом нужно считать первый символ. Еще поставить составной оператор begin end
Хочу обратить внимание на тот факт, что прописные и строчные буквы считаются одинаковыми, поэтому следует сначала с помощью UpCase преобразовать в прописные.
Нужно научиться делать хотя бы одну сортировку. Например, пузырьком.
Добавлено (2013-02-11, 10:07 AM) --------------------------------------------- В целом, видно, что была попытка разобрать готовое решение, но очень бросается в глаза ошибка несоответствия типов. В одном и том же массиве индекс массива то целая величина, то символьная. Надо разобраться, что именно и где хранится.
Добавлено (2013-02-11, 10:08 AM) --------------------------------------------- В массиве хранятся целые числа - количество указанных символов, а индексом, или порядковым номером является сам символ. ...чтобы оставаться на одном месте нужно все время двигаться вперед...
Сообщение отредактировал prm2008 - Понедельник, 2013-02-11, 10:11 AM
A:array['A'..'Z'] of integer; если применять такой массив, то не будет необходимости заводить второй и смотреть порядковый номер в кодовой таблице. Здесь важно понять, что индексом массива может быть и упорядоченный ряд символов.
Во кстати, да.=))) Вот что значит профессионал взялся за дело.=)
Цитата (prm2008)
Хочу обратить внимание на тот факт, что прописные и строчные буквы считаются одинаковыми, поэтому следует сначала с помощью UpCase преобразовать в прописные.
Еще можно использовать тот факт, что между кодами символов одинаковое расстояние, и условием сдвигать. Обучение программированию
Еще можно использовать тот факт, что между кодами символов одинаковое расстояние, и условием сдвигать.
Кирилл, тогда опять нужно знать это расстояние между символами или их коды и писать составное условие. В твоем решении в цикле повторяющемся N раз каждый символ проверяется 26 раз. В другом алгоритме цикл N раз и без всяких проверок соотвествующий счетчик увеличивается на 1. ...чтобы оставаться на одном месте нужно все время двигаться вперед...
В твоем решении в цикле повторяющемся N раз каждый символ проверяется 26 раз. В другом алгоритме цикл N раз и без всяких проверок соотвествующий счетчик увеличивается на 1.
Погодите-погодите Любовь Сергеевна. Это не мое решение, я бы делал одним массивом, только вычитал бы сдвиг каждый раз, когда записывал число и пользовался бы upcase. Тоже обошлось бы одним циклом до точки. =))) А это, мы разбираем вариант, который показался удобнее nut, чтобы она потом переделала его в действительно удобный способ. и увидела, сколько трудностей.))) Нельзя мешать человеку ошибаться. Обучение программированию
А теперь фанфары и барабанная дробь на сцене появляется таблица ASCII
А зачем ASCII? Почему сперва не интерпретировать индекс элемента как номер буквы в алфавите?
Нужно ведь что-нибудь такое (правда, я синтаксис не слишком помню и с файлами не знаю, как работать, так что будет строка)?
Код
program onetwothree; var a : array [1..26] of integer; i, m, j : integer; str : string; begin readln(str); for i:=1 to length(str) do begin if str [i]in ['a'..'z','A'..'Z'] then a[ord(lowercase(str[i]))-ord('a')+1]:=a[ord(lowercase(str[i]))-ord('a')+1]+1; if str[i]='.' then break; end; m:=0; for i:=1 to 26 do if a[i]>m then begin m:=a[i]; j:=i; end; writeln(chr(j+ord('a')-1),' ',m); readln; end.
МФТИ (ГУ) - Факультет управления и прикладной математики
На самом деле идиотов в мире мало, но расставлены они так грамотно, что встречаются на каждом шагу.
« Мне на концерте вырвали и насильно скормили глаз. Dethklok рулит!» — Фанат Dethklok
Сообщение отредактировал Nemiroff - Вторник, 2013-02-12, 5:04 AM
Здесь важно понять, что индексом массива может быть и упорядоченный ряд символов.
точно! я недели полторы назад и про строки читала, а сейчас уже подзабыла и запуталась...
Цитата (Nemiroff)
Нежданик. Проверь себя. Скачай архив и выполни вариант. А1-С3.
а я уже делала ДЕМО 2013!) Поэтому выберу какой-нибудь другой вариант...
Извините, что почти не пишу)) У меня просто в эти дни ну абсолютно не было премени... Я постоянно торчу в инсте и вожусь с бумажками. Прямо наказание какое-то Завтра мой обходной лист наконец подпишет декан, я сдам пропуск и надеюсь, что получу аттестат обратно... Тогда буду торчать на форуме) День не знаю какой 2 варианта по русскому+1 сочинение! Повторяла много чего: причастные обороты, запятые, части речи, эти злосчастные ударения пыталась запомнить... ну и 3 задачки С6 по математике
Завтра мой обходной лист наконец подпишет декан, я сдам пропуск и надеюсь, что получу аттестат обратно...
ха-ха, мой сказал, что отличников никуда не пустит ни в какую москву ага, я его еще и спрашивать должна, оказывается Только самые мудрые и самые глупые не поддаются обучению.
Dahka))))), а все, отмучилась! Мне вернули мой аттестат...В четверг пойду заяву на ЕГЭ писать
Цитата (Dahka))))))
ха-ха, мой сказал, что отличников никуда не пустит ни в какую москву
а мне мой молча подписал...У нас очень, очень много народу отчислялось!!! Кто-то в академ, кто-то уходит, кто-то, наоборот, восстанавливается..,В общем, дурдом) ЕГЭ2013: РМФ:272 РМИ:281 Дневник:/forum/72-37475-1 МФТИ ФИВТ, 1 курс