<em>// PascalABC.NET 3.2, сборка 1488 от 21.06.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
function LexRepeat(Self:string):(string,integer); extensionmethod;
begin
Writeln(Self);
var aw:=Self.MatchValues('\b\w+\b').ToArray;
if aw.Count>1 then
Result:=(aw[0],aw[1:].Where(w->LowerCase(w)=LowerCase(aw[0])).Count)
else Result:=(aw[0],0)
end;
begin
ReadLines('Pushkin2.txt').Select(s->s.LexRepeat)
.Where(x->x[1]>0).Foreach(x->Writeln('*** ',x[0],' - ',x[1]+1,' ***'))
end.
<u>Пример работы программы</u>
Александр Пушкин
К***
Я помню чудное мгновенье:
Передо мной явилась ты,
Как мимолетное виденье,
Как гений чистой красоты.
В томленьях грусти безнадежной,
В тревогах шумной суеты,
Звучал мне долго голос нежный
И снились милые черты.
Шли годы. Бурь порыв мятежный
Рассеял прежние мечты,
И я забыл твой голос нежный,
Твои небесные черты.
В глуши, во мраке заточенья
Тянулись тихо дни мои
Без божества, без вдохновенья,
*** Без - 2 ***
Без слез, без жизни, без любви.
*** Без - 3 ***
Душе настало пробужденье:
И вот опять явилась ты,
Как мимолетное виденье,
Как гений чистой красоты.
И сердце бьется в упоенье,
И для него воскресли вновь
И божество, и вдохновенье,
*** И - 2 ***
И жизнь, и слезы, и любовь.
*** И - 3 ***
<u>Во вложении - исходный файл Puskin2.txt</u>
1) 12(в16с/c) =1*16 +2 = 18 (в 10c/c)
12( в 8с/с) = 1*8+2 =10 (в 10с/с)
10 (в 2 с/с) = 2 ( в 10с/с)
18+10*2 = 38 (в 10с/с)
38(в10с/с) = 46(в 8с/с) = 100 110 (в 2с/с) = 26 (в 16с/с)
2) ошибка в записи 4) , в 7с/с нет цифры 7 ( а есть 0 1 2 3 4 5 6 )
<span>//пример использования функции strlen
#include <iostream>
#include <cstring> // для strlen
<span>int main()
</span>{<span>
char input[256];</span><span>
std::cout << "Введите строку: ";</span><span>
std::cin >> input;</span><span>
std::cout << "Строка " << input << " содержит " << strlen(input) << " символов\n";</span><span>
return 0;</span><span>
}</span></span>
Перевод числа Х из 10-тичной системы в n-ичную осуществляется путем деления с остатком числа Х на n, затем Х1 = Х/n на n и тд (до тех пор, пока Хi больше 0) и записыванием остатков деления в обратном порядке. В нашем случае:
Х = 10, n = 2, \% - операция получения остатка от деления, / - операция получения целой части от деления.
1) 10 \% 2 = 0; 10 / 2 = 5
2) 5 \% 2 = 1; 5 / 2 = 2
3) 2 \% 2 = 0; 2 / 2 = 1
4) 1 \% 2 = 1; 1 / 2 = 0 => конец. Выпишем остатки в обратном порядке (т.е. из шагов 4), 3), 2) и 1)):
10 (в 10-ной) = 1010 (в 2-ной)
Проверка:
1010 (в 2-ной) = 1*2^3 + 0*2^2 + 1*2^2 + 0*2^0 = 8 + 0 + 2 + 0 = 10 (в 10-ной)