Задать свой вопрос   *более 50 000 пользователей получили ответ на «Решим всё»

Задача 10364 На вход про­грам­ме по­да­ет­ся...

Условие

На вход про­грам­ме по­да­ет­ся по­сле­до­ва­тель­ность сим­во­лов, среди ко­то­рых встре­ча­ют­ся и цифры. Ввод сим­во­лов за­кан­чи­ва­ет­ся точ­кой (в про­грам­ме на языке Бей­сик сим­во­лы можно вво­дить по од­но­му в стро­ке, пока не будет вве­де­на точка). Тре­бу­ет­ся на­пи­сать как можно более эф­фек­тив­ную про­грам­му (ука­жи­те ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер, Borland Pascal 7.0), ко­то­рая со­ста­вит из тех цифр, ко­то­рые встре­ча­ют­ся во вход­ных дан­ных, мак­си­маль­ное число. При со­став­ле­нии ито­го­во­го числа каж­дая цифра может быть ис­поль­зо­ва­на толь­ко один раз. Если во вход­ных дан­ных цифры не встре­ча­ют­ся, то сле­ду­ет вы­ве­сти "-1".

На­при­мер, пусть на вход по­да­ют­ся сле­ду­ю­щие сим­во­лы:
14ф73п439

В дан­ном слу­чае про­грам­ма долж­на вы­ве­сти
97431

информатика 10-11 класс 4319

Решение

Решение на Паскаль:
var
c : char;
a : array [0..9] of boolean;
i : integer;
f : boolean; {флаг, по­ка­зы­ва­ю­щий, что в стро­ке на­шлись цифры}

begin

for i := 0 to 9 do a [i] := false; {об­ну­ля­ем мас­сив}
f := false; {об­ну­ля­ем флаг}
read (c);

while ( c < > '.' ) do {поиск окон­ча­ния введённой стро­ки}
begin
if (ord( c )-48) in [0..9] then

begin
a [(ord( c )-48)] := true; {от­ни­ма­ем 48 для того, чтобы по­лу­чить ис­ко­мое число}
f := true
end;

read (c)
end;


for i := 9 downto 0 do
if a [i]=true then write (i); {вы­во­дим ре­зуль­тат}
if not f then write ('-1') {про­вер­ка на то, на­шлись ли цифры}

end.


Ответ: В решение

Написать комментарий

Меню

Присоединяйся в ВК