e-olymp 2165. Лишние пробелы

Дана строка. Напишите программу, которая удалит из этой строки все лишние пробелы. Пробел будем считать лишним, если:

  • он находится в самом начале строки, до самого первого слова;
  • он находится в конце строки, после самого последнего слова;
  • несколько пробелов расположены между двумя словами (проще говоря, если слова разделены более чем одним пробелом, тогда все пробелы кроме одного — лишние).

Входные данные

Дана строка [latex]s[/latex] (0 ≤ |S| ≤ 255). Строка содержит только латинские буквы и пробелы.

Выходные данные

Требуется вывести строку без лишних пробелов.

Код

Код

Тесты

Ivanov     Maxim
Scott      Fitzgerald
Gertruda      Stal
John      Green

Решение

Первый код написан на string. Вводим строку [latex]s[/latex], которая содержит латинские буквы и пробелы. В цикле рассматриваем все символы строки от начала до конца. В условии после каждого следующего символа ставим пробелы, используем функцию erase, которая удаляет из строки лишние пробелы. Выводим строку.

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

Ideone.com

Ideone.com

 

Related Images:

MLoops 7

Задача

Найдите закономерность и напишите программу, которая выводит аналогичную таблицу для любых чисел [latex]n > 0[/latex] (количество столбцов) и [latex]m > 0[/latex] (количество строк).

Входные данные

Два целых числа: количество столбцов и строк.

Выходные данные

Таблица [latex]m * n[/latex] со следующей закономерностью:

 

Код

 

Тесты

m n
3 4
7 7
11 11

Решение

Вводим количество строк [latex]m[/latex] и количество столбцов [latex]n[/latex]. Программа имеет два цикла — один внутри другого. Внешний цикл считывает номер строки, а внутренний — обеспечивает сдвиг. Строки и столбцы чередуются со смещением назад по 4 элемента.

Код

Ideone.com

Related Images:

MLoop 4

Задача. Вычислите с точностью [latex]\epsilon[/latex] значение функции [latex]f\left( x \right) = \sin x[/latex]. При вычислениях допустимо использовать только арифметические операции.

Код программы

Тесты

Входные данные Входные данные Выходные данные
x e sin(x)
1 0,01 0,841471
3 0,01 0,14112
4 0,001 -0,756802
7 0,0001 0, 656987

Решение

Необходимо использовать формулу Тейлора, а именно ряд Маклорена, чтобы представить функцию

[latex]f(x)[/latex] = [latex]\sin x[/latex]

Эта формула имеет такой вид [latex]\sin x[/latex] = [latex]\sum _ { n=0 }^{ \infty }{ { (-1) }^{ n } } \frac { { x }^{ 2n+1 } }{ (2n+1)! }[/latex].

Подключаем заголовочный файл cmath для использования функции abs(). Построим реккурентную формулу для [latex]x_n[/latex] через  [latex]x_{n-1}[/latex] для [latex]n > 1 \left(x_0=x\right)[/latex]. Для этого найдем отношение последующего члена ряда к предыдущему [latex]k = \frac{x_n}{x_{n-1}} = -\frac{x^2}{2n\cdot(2n + 1)}[/latex].

Используем функцию while, чтобы проверить является ли член ряда  [latex]x_n[/latex] больше [latex]e[/latex].

Ideone.com

 

Related Images:

e-olymp 904. Увеличить на 2

Задача

Задан одномерный массив [latex]A[/latex] целых чисел. Увеличить на [latex]2[/latex]
каждый неотрицательный элемент массива.

Входные данные

В первой строке задано натуральное число [latex]h[/latex] — количество элементов массива [latex]h <= 100.[/latex] Во второй строке через пробел заданы сами элементы массива, значение каждого из которых по модулю не превышает [latex]100.[/latex]

Выходные данные
В единственной строке вывести через пробел[latex]h[/latex] чисел: новые значения элементов массива, в том же порядке, в котором они были заданы.

Код

Тесты

Входные данные Выходные данные
4
1 2 3 4
3 4 5 6
4
1 2 3 -4
3 4 5 -4
4
-1 2 3 4
-1 4 5 6
4
0 2 3 4
2 4 5 6
4
1 2 2 4
3 4 4 6

Решение

Вводим число [latex]n[/latex]. Используем цикл for и вводим число [latex]a[/latex]. Выводим неотрицательное число a, либо без изменений, либо увеличенное на два.

Код

ideone.com

Задача

e-olymp.com

Related Images:

A39

Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.

Код

Тесты

Входные данные Выходные данные
x y
3 2 3
10 5 10
30 20 30
50 30 50

Решение

Пусть даны два действительных числа x, y. Для ввода x и y используем тип double для действительных чисел. Задаем условие, если первое число больше второго, используя оператор if. Выводим первое число x.

Вводим else, если это не так. Выводим оба числа.

Код задачи

Ideone.com

Related Images:

Mif2

Даны действительные числа [latex]x[/latex], [latex]y[/latex], [latex]z[/latex]. Получить [latex]max (x, y, z)[/latex].

 

Тесты

Входные даные Выходные даные
x y z
3 5 9 9
23 32 53 53
73 80 90 90
97 100 110 110
220 298 393 393

Решение

Пусть даны действительные числа [latex]x[/latex], [latex]y[/latex], [latex]z[/latex]. Нужно получить [latex]max(x,y,z)[/latex]. Для этого вводим [latex]x[/latex], [latex]y[/latex], [latex]z[/latex]. Предполагаем, что z хранит максимальное значение. Затем, используя оператор if, сравниваем y, x. Выводим максимальное значение.

Код программы ideone.com

Условие задачи

Related Images:

ML2

Даны действительные числа [latex]x[/latex] и [latex]y[/latex].
Получить[latex]\frac{|x|-|y|}{|x|+|y|}[/latex] .

Код

Тесты

Входные данные Выходные данные
x y
6 4 0,2
6 2 0,5
2 2 0
1 1 0

Решение

Пусть заданы действительные числа x, y. Включаем cmath — заголовочный файл стандартной библиотеки языка программирования C++, разработанный для выполнения простых математических операций. В нашем случае деления одного выражения на другое. Используем тип double для действительных чисел для ввода x, y. Вводим с помощью cin x, y. Выводим с помощью cout математическое выражение, используя abs — функция, которая вычисляет абсолютную величину (модуль) значения x и y.

Код задачи

http://ideone.com

Условие задачи

http://mazurok.com

Related Images:

e-olymp 107. Компакт-диски

Чистые компакт-диски продают в трёх видах упаковок. Упаковка из 100 дисков стоит 100 грн., из 20 дисков — 30 грн., а один диск стоит 2грн. Какую минимальную сумму нужно истратить для покупки [latex]N[/latex] таких дисков?

Входные данные

Единственное число [latex]N[/latex] — количество дисков. Значение [latex]N[/latex] натуральное, не больше 1000.

Выходные данные

Искомая минимальная сумма в гривнах.

Тесты

Вход Выход
123 136
 130  150
 140  160
 23  36
 132  154
 170  200
 148  176

Код

Решение

Пусть задано число N — количество дисков и цена N таких дисков. Используем if-блок, для того, чтобы вычислить минимальную сумму дисков. Присваиваем 100 дискам целочисленные значения N. Увеличиваем цену 100 дисков. Вводим а — упаковка из 20 дисков. Присваиваем числу а целочисленные значения N. С помощью if-блока увеличиваем цену 20-ти дисков. Вводим b — один диск. Увеличиваем цену одного диска.

Решение принято на сайте e-olymp.com.

Выполнить код программы можно здесь.

Related Images: