Задание 3. Дан фрагмент из повести Чингиза Айтматова "Белый пароход": «…Сначала был куплен портфель. Черный дерматиновый портфель с блестящим металлическим замочком-защелкой под скобу. С накладным кармашком для мелочей. Словом, необыкновенный самый обыкновенный школьный портфель. С этого все и началось…» Данная книга была выпущена в 1982 году. Данный фрагмент текста был напечатан на странице 3.
Укажите, что является ссылкой для данного фрагмента.
s2 - Заданное слово
Идея проста: мы проходим по заданной строке и копируем подстроку, начиная с символа i, с количеством символов, равным количеством символов заданного слова. Например:
Символьная строка:
34строка3254строка
Заданное слово:
строка
Мы просто берём и проходим циклом
34строка3254строка
34строка3254строка
34строка3254строка
...
и т.д. до самого конца. Если рассматриваемая нами подстрока равна заданному слову, то мы увеличиваем счётчик k на 1, после завершения цикла мы просто возвращаем значение нашего счётчика - количество вхождений заданного слова в строку.
P.S. Мы идём циклом не от 1 до length(s), а от 1 + l1 - l2. К примеру в нашей строке
нет смысла рассматривать подстроку, начиная отсюда
34строка3254строка
т.к. символов в ней явно меньше чем в самом заданном слове, следовательно, дальше оно нам уже не попадётся:)
Исходный код в приложении.
#include <iostream>
#include <cmath>
#include <locale.h>
using namespace std;
int main(int argc, char **argv)
{
setlocale(0, "Russian");
int a, b, c;
double p, res;
cout << "Введите длины сторон треугольника:"<<endl;
cin >> a >> b >> c;
if (a + b > c && a + c > b && b + c > a) {
p = (a + b + c) / 2.0;
res = sqrt(p * (p - a) * (p - b) * (p - c));
cout << "Площадь треугольника: "<< res <<endl;
}
else
cout << "Невозможно вычислить площадь!" <<endl;
return 0;
}