Символьный тип данных, ряды - 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.

Объяснение кода листинга программы

  1. Объявляются переменные: s: строка; m: множество байтов; a: массив 10 элементов типа cifra; c: cifra; i, j, x, mx, imx: байт;
  2. Задаются значения переменным i и j равными 1.
  3. Задаются начальные значения переменным m и s равными пустой строке.
  4. С помощью цикла for генерируются случайные нечетные числа от 1 до 18 и добавляются в строку s.
  5. С помощью цикла for числа из строки s преобразуются в типы byte и сохраняются в массиве a.
  6. Выводятся исходные числа.
  7. Цифры исходного числа сортируются по возрастанию их номеров в исходном числе.
  8. Находится самая длинная часть числа, где цифры расположены по возрастанию.
  9. Выводится самая длинная часть числа.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы