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.
type MCo = array[1..200] of longint; {строка массива - до 200 столбцов} DV = ^MCo; {указатель на строку массива} MR = array[1..150] of DV; {массив указателей на строки}
var a: MR; {Создается массив указателей на строки} n,m:longint;
procedure ShiftCycle(row: longint; k: longint); var i, j, e: longint; begin for i := 1 to k do begin e := a[row]^[m]; for j := m - 1 downto 1 do a[row]^[j + 1] := a[row]^[j]; a[row]^[1] := e end; end;
var i, j, e: longint;
begin ClrScr; writeln('Введите число строк и столбцов массива'); readln(n,m); writeln('Введите элементы массива'); for i := 1 to n do begin getmem(a[i], m * sizeof(longint)); {Фактическое выделение памяти под i-ю строку строку массива} writeln('Строка ',i,':'); for j := 1 to m do read(a[i]^[j]) end; writeln; for i := 1 to n do begin ShiftCycle(i, i); for j := 1 to m do write(a[i]^[j]:4); writeln; freemem(a[i], m * sizeof(longint)) {Освобождение памяти из-под i-й строки массива} end end.
5
Объяснение:
-1 это последний элемент списка, -2 предпоследний, и т.д