Exitcode 201 - Free Pascal (2334)

Узнай цену своей работы

Формулировка задачи:

наверно уже избитая тема(сорри если уже было что то похожее). Не могли бы вы помочь найти ошибку в задаче. условие: Дано целое число N. Пусть М -Число записанное теми же цифрами, что и N, но в порядке возрастания, Найдите сумму N+M. Вот мое решение:
Type
 IntArray = array of LongInt;
Function GetNamber(x: IntArray): LongInt;
 Var
  i, n: LongInt;
 begin
  n:=0;
  For i:=Length(x)-1 DownTo 0 Do
   Begin
    n:=10*n+(x[i]);
   end;
  GetNamber:=n;
 end;
Function GetDigits (n: LongInt): IntArray;
 Var
  x: IntArray;
 Begin
  While (n<>0) do
   begin
    SetLength(x, Length(x)+1);
    x[Length(x)-1] := n mod 10;
    n:= n div 10;
   end;
  GetDigits:=x;
 end;
Var
 n, i, t, res, j: LongInt;
 x, a: IntArray;
Begin
 Readln(n);
 x:=GetDigits(n);
 For i:=0 to Length(x)-1 do
  begin
   For J:=0 to Length(x)-1 do
    begin
     If (x[j]>x[j+1]) then
      begin
       t:=x[j];
       x[j]:=x[j+1];
       x[j+1]:=t;
      end;
    end;
  end;
 For I:=0 to Length(x)-1 do
  begin
   write(x[i], ' ');
  end;
  Readln;
End.
Программа при запуске выдает "Exitcode201"(это вроде бы выход за пределы массива). не могу найти ошибку. Если не сложно объясните в результате чего вообще возникает данная ошибка(не первый раз сталкиваюсь). p.s.:Язык free Pascal

Решение задачи: «Exitcode 201»

textual
Листинг программы
uses crt;
var n,m,a,p,k,i:longint;
begin
clrscr;
repeat
writeln('Введите натуральное число до 2 147 483 647');
readln(n);
until(n>0)and(n<2147483647);
a:=n;m:=0;
for i:=0 to 9 do{начиная с 0 ищем в числе цифры по возрастанию}
 begin
  p:=n;{запоминаем число}
  while p>0 do
   begin
    k:=p mod 10;{ищем цифру 0..9}
    if k=i then m:=m*10+k;{если есть, домножаем число на 10 и + цифра}
    p:=p div 10;{сокращаем число на 10 и повторяем пока не проверим все цифры}
   end;
 end;
writeln('M=',m);
write('N+M=',n+m);
readln

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

Код на языке Free Pascal выполняет следующие действия:

  1. Запрашивает у пользователя натуральное число до 2 147 483 647 и сохраняет его в переменную n.
  2. Проверяет, что введенное число больше 0 и меньше 2 147 483 647.
  3. Инициализирует переменные a, m, p, k и i значением n.
  4. Начиная с 0, ищет в числе цифры по возрастанию.
  5. Пока число p больше 0, выполняет следующие действия: a. Находит цифру от 0 до 9 в числе p и сохраняет ее в переменную k. b. Если k равно i, то прибавляет цифру к m и умножает на 10. c. Сокращает число p на 10.
  6. Выводит значение переменной m.
  7. Выводит сумму n и m.
  8. Запрашивает у пользователя ввод.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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