М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
sonka247
sonka247
10.05.2021 17:08 •  Информатика

Сделать программу и блок схему ! на паскале. : определить сколько раз в тексте встречается слово "давши". исходный текст: не давши слово-крепись, а давши - держись

👇
Ответ:
Regina2203021
Regina2203021
10.05.2021
Поставленную задачу можно решать разными Можно озаботиться красотой алгоритма, можно - эффективностью выполнения программы, можно еще много чем. В связи с тем, что в настоящее время компьютеры обладают большой вычислительной мощностью, а задача проста, выберем алгоритм, который имеет минимальную трудоемкость в написании и понятен внешне, хотя, быть может, в чем-то не совсем оптимален с точки зрения вычислительного процесса.
Речь идет об использовании встроенной функции языка Паскаль - функции Pos. Конечно, использование функции PosEx, появившейся в Pascal.ABC, было бы эффективнее, но будем придерживаться классической версии.

Функция Pos позволяет найти позицию первого от начала строки вхождения в эту строку подстроки. Если вхождения нет - функция возвращает ноль. Принимая оставшуюся после найденного вхождения часть строки за новую строку и повторяя поиск, можно найти все вхождения.
Задание не говорит, как организован ввод текста. Дело в том, что в Паскале строка не может содержать переход к новой строке, а текст задан двумя строками. Можно организовать ввод двух строк, можно задать текст строковыми константами, можно организовать ввод из файла. Считая, что смысл задания в поиске вхождений, принимаем задания текста несущественным и задаем текст двумя строковыми константами. Это потребует выполнения алгоритма для каждой строки, следоватеьно, нам потребуется пользовательская функция, к которой мы будем обращаться.

const
  c1='Не давши слово-крепись,';
  c2='А давши - Держись';
  cc='давши'; { искомый контекст }
function Kol(c,ci:string):integer;
  {количество вхождений ci а c }
var
  p,k,l,li:integer;
begin
  k:=0;
  li:=Length(ci);
  l:=Length(c);
  repeat
    p:=Pos(ci,c);
    if p>0 then
    begin
      l:=Length(c);
      Inc(k);
      if p+li<l then c:=Copy(c,p+li,l-(p+li-1))
    end
  until (p=0) or (p+li>=l);
  Kol:=k
end;

begin
  Writeln('Количество вхождений равно ',Kol(c1,cc)+Kol(c2,cc))
end.

Вывод решения:
Количество вхождений равно 2
4,6(99 оценок)
Открыть все ответы
Ответ:
kate816
kate816
10.05.2021
Имеется всего 6 вариантов как назначить бакам целевой мусор. Например, в 1-й бак собираем стекло, во 2-й бак бумагу, в 3-й бак жесть. Другой вариант: в 1-й стекло, 2-й жесть, 3-й бумага. Всего имеется шесть таких вариантов.

Можем тупо перебрать эти варианты сборки из исходных данных, и увидеть который даст меньшую сумму перекладок. Можешь сделать это самостоятельно, а мне лень. 

Идём дальше, и заметим, что сумма перекладок составляет общую сумму всех предметов во всех баках, за минусом тех, которые изначально уже находятся в своих баках. Эта логика верна для любого из шести начальных вариантов.

А что такое предметы, уже находящиеся в своих баках? Это значит, что для данного из шести вариантов наборов баков имеется только одно число в своей строке таблицы, которое указывает на уже лежащий предмет. Например, если баки назначаем так: стекло, бумага, жесть, то из общей суммы всех предметов задачи нужно вычесть числа 52, 83, 75 - то есть лежащие на главной диагонали таблицы. 

Для нахождения решения задачи нам нужно подобрать такую перестановку столбцов заданной таблицы, чтобы сумма чисел, находящихся на главной диагонали была максимальной. При таком варианте общая сумма перекладок предметов будет минимальна.

Руководствуясь этим принципом, нужно найти такую комбинацию выбора трёх чисел из заданной таблицы, чтобы они все три одновременно принадлежали как разным строкам, так и разным столбцам; и при этом сумма выбранных чисел была бы максимальной из всех (а их 6) вариантов выбора.

Мне неохота перебирать все эти комбинации, сделай сам. Но навскидку кажется, что если из первого столбца выберу максимальное число (98), из второго столбца уже выбранную строку (вторую) трогать нельзя, поэтому среди верхнего (58) и нижнего (83) выберу наибольшее, и это 83. Таким образом, вторая и третья строки заняты. Из третьего столбца остаётся, что можно взять только число из первой строки, и это 64.

Сумма 98+83+64 = 245 - это число предметов, которые не нужно перекладывать, они сразу лежат в своих баках.

Общее число предметов в задаче - сумма всех 9 чисел таблцы, у меня получилась 693.

ответом будет число перекладок, равное общему числу предметов, минус которые не надо перекладывать. То есть 693 - 245 = 448.

Думаю что это и есть ответ. Но лучше проверь остальные 5 вариантов назначения баков своим видам мусора, и получишь ещё пять чисел. ответом будет наименьшее из них. Чисто нвскидку мне кажется, что это и будет 448.    
4,5(73 оценок)
Ответ:
AlexandraFox13
AlexandraFox13
10.05.2021

#include <iostream>

int gg(int k, int p, double m)

{

p = (k >= p) ? p : p / k;

return (m * 2 * p);

}

int main()

{

int k, p;

double m;

std::cout << "Сколько котлет можно одновременно положить на сковороду ? ";

std::cin >> k;

std::cout << "Сколько минут жарится одна сторона котлеты ? ";

std::cin >> m;

std::cout << "Сколько котлет вы будете жарить ? ";

std::cin >> p;

std::cout << p << " котлет пожарятся с двух сторон минимум за " << gg(k, p, m) << " минут";

}

4,6(37 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ