Вопрос по информатике:
Помогите, пожалуйста! Мне надо подробное решение.
На вход программе подается
последовательность символов, заканчивающаяся точкой. Требуется написать
программу, которая определяет, есть ли в этой последовательности десятичные
цифры, и выводит наибольшее число, которое можно составить из этих цифр.
Ведущих нулей в числе быть не должно (за исключением числа 0, запись которого
содержит ровно одну цифру). Если цифр нет, программа должна вывести на экран
слово «Нет», а если есть – слово «Да» и в следующей строчке искомое число.
Например, если исходная последовательность была такая:
Day 10, mice 8: "Year" 7 is a mistake 91.
то результат должен быть
следующий:
Да
987110
- 05.03.2018 21:31
- Информатика
- remove_red_eye 16182
- thumb_up 43
Ответы и объяснения 1
var
str, num: string;
begin
readln(str); //str := 'Day 10, mice 8: "Year" 7 is a mistake 91.';
foreach c: char in str do
if (Char.IsDigit(c)) then
num += c;
for j: byte := 1 to length(num) - 2 do
for i: byte := 1 to length(num) - 1 do
if (num[i] < num[i + 1]) then
begin
str[1] := num[i];
num[i] := num[i + 1];
num[i + 1] := str[1];
end;
if (Integer.Parse(num) > 0) then
begin
while (num[num.Length - 1] = '0') do
num.Remove(num.Length - 1);
writeln('Да' + #13 + num);
end
else
writeln('Нет');
end.
- 06.03.2018 17:19
- thumb_up 2
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.