Символьный тип данных, ряды - Pascal ABC
Формулировка задачи:
9-значне число закодоване у вигляді 18-символьного рядка, на кожному парному місці якого записана цифра, а на непарному - положення цієї цифри в початковому числі. Знайти в початковому числі найдовшу частину, де цифри розташовані в порядку зростання.
Решение задачи: «Символьный тип данных, ряды»
textual
Листинг программы
type cifra=record //тип цифра с полями zn:byte; //значение nm:byte; //место в числе end; var s:string; m:set of byte; a:array[1..10] of cifra; c:cifra; i,j,x,mx,imx:byte; begin //составим исходную строку randomize; s:=''; m:=[]; for i:=1 to 18 do if odd(i) then begin repeat x:=1+random(9); //номера цифр все разные until not(x in m); m:=m+[x]; s:=s+chr(x+48); end else s:=s+chr(random(10)+48); //значения любые writeln('Исходная строка:'); writeln(s); for i:=1 to 9 do begin a[i].nm:=strtoint(s[2*i-1]); a[i].zn:=strtoint(s[2*i]); end; writeln('Цифры исходного числа:'); for i:=1 to 9 do write(a[i].zn); writeln; writeln('Их положение в исходном числе'); for i:=1 to 9 do write(a[i].nm); writeln; //отсортируем цифры по порядку номеров for i:=1 to 8 do for j:=i+1 to 9 do if a[i].nm>a[j].nm then begin c:=a[i]; a[i]:=a[j]; a[j]:=c; end; writeln('Исходное число'); for i:=1 to 9 do write(a[i].zn); writeln; i:=1; x:=1; mx:=1; imx:=1; a[10].zn:=0;//добавим лишний 0 в конец для удобства for i:=2 to 10 do if a[i].zn>a[i-1].zn then inc(x) else begin if x>mx then begin mx:=x; imx:=i-x; end; x:=1; end; writeln('Самая длинная часть где цифры расположены по возрастанию'); writeln('начинается с позиции ',imx,' количество цифр=',mx); end.
Объяснение кода листинга программы
- Объявляются переменные: s: строка; m: множество байтов; a: массив 10 элементов типа cifra; c: cifra; i, j, x, mx, imx: байт;
- Задаются значения переменным i и j равными 1.
- Задаются начальные значения переменным m и s равными пустой строке.
- С помощью цикла for генерируются случайные нечетные числа от 1 до 18 и добавляются в строку s.
- С помощью цикла for числа из строки s преобразуются в типы byte и сохраняются в массиве a.
- Выводятся исходные числа.
- Цифры исходного числа сортируются по возрастанию их номеров в исходном числе.
- Находится самая длинная часть числа, где цифры расположены по возрастанию.
- Выводится самая длинная часть числа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д