Нужно переделать из паскаля в С++ var f: text; s: string; i, lect, pract, lab: byte; begin assign(f,'lessons.txt'); reset(f); lect := 0; pract := 0; lab := 0; while not Eof(f) do begin readln(f,s); i := pos('лекц.',s); if i <> 0 then lect := lect + 1 else begin i := pos('практ.',s); if i <> 0 then pract := pract + 1 else begin i := pos('лаб.',s); if i <> 0 then lab := lab + 1 end; end; end; close(f); writeln('Лекций: ', lect); writeln('Практических: ', pract); writeln('Лабораторных: ', lab); end.
Надо расположить по возрастанию, то есть первое меньше второго, второе меньше третьего. Поэтому под цифрами 1 и 2 надо поставить "больше": если цифры поменяются местами, то станет "меньше", что нам и надо. Порядок убывания нам не нужен - нужно возрастание, поэтому в 3 пункте "не расположены". Ну а "к пункту" можно только "вернутся")
1)Начало.
2) Сравни первое и второе числа; если первое больше второго , то поменяй их местами.
3)Сравни второе и третье числа; если второе больше третьего, то поменяй их местами.
4)Если теперь три числа не расположены в порядке убывания, то исполни пункт 5) этого алгоритма; иначе вернись к пункту 2).
5)Конец.
Я руками за 5 дней делаю 5 коробок, и на 6-ой день покупаю духовку.
Руками и духовкой я делаю 2 коробки в день, за 5 дней - 10 коробок.
На 6-ой день я покупаю вторую духовку.
Руками и 2-мя духовками я за 5 дней делаю 15 коробок, и на 6-ой день покупаю 3-ью духовку.
И так далее. Чтобы купить очередную духовку, я работаю 5 дней, а на 6-ой день ее покупаю, и у меня печенья не остается совсем.
То есть, после покупки каждой духовки я начинаю всё с нуля.
Главное - понять, когда нужно остановиться покупать духовки и начать уже копить печенье на складе.
Итак, подведем итоги:
1) На покупку каждой духовки мы тратим 6 суток и начинаем с нуля.
2) Имея n духовок, мы делаем 584 коробок печенья за
trunc(584/(n+1)) + 1 дней, где trunc(x) = [x] - это целая часть x.
3) Всего мы тратим времени T(n) = 6n + trunc(584/(n+1)) + 1 --> min
Минимум функции trunc(584/(n+1)) совпадает с минимумом 584/(n+1)
T(n) = 6n + 584/(n+1) + 1 --> min
T'(n) = 6 - 584/(n+1)^2 = (6(n+1)^2 - 584) / (n+1)^2 = 0
6(n+1)^2 - 584 = 0
(n+1)^2 = 584/6 = 97,33
n + 1 = √97,33 ~ 9,86 = 10
n = 9
Значит, нужно ограничиться покупкой 9 духовок.
За 6*9 = 54 дня мы их купим, и за 584/10 ~ 59 дней мы соберем нужное количество коробок на складе.
Всего мы истратим 54 + 59 = 113 дней.