Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.07.2020
Сообщений: 2

Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека

21.07.2020, 17:21. Показов 934. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var
A:array[1..50] of integer;
i,g,code,k,m,t,o,n:integer;
st:string;
procedure krut(m:integer);
var
g,g1:integer;
begin
 If m>0 then begin
  for g:=1 to 10 do begin
   A[m+1]:=A[m+1]+1;
   If A[m+1]>9 then break;
   
   for g1:=1 to 50 do begin
    if A[g1]=-1 then break;
    st:=st+A[g1];
    val(st,t,code);
    If t>=m then begin
                    st:='';
                    o:=t mod m;
                    if o>0 then str(o,st);
                 end;
                 
   end;
   if st='' then begin
    k:=k+1;
    krut(m+1);
   end;
  end;
  A[m+1]:=-1;
  krut(m-1);
 end;
end;
begin
for i:=1 to 50 do
 A[i]:=-1;
 
n:=1;
A[1]:=1;
krut(1)
end.
Помогите проблему решить выдает Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2020, 17:21
Ответы с готовыми решениями:

Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека
Программа должна создавать массив из квадратов со стороной в 5 пикселей и случайного цвета (координаты верхней левой точки рандомные, если...

Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека
program a1; var s:integer; k:longint; procedure f(n:longint); begin if (0<=n) and (n<=1000000000) then begin ...

Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека
Помогите пожалуйста исправить!!! Писал простенький тригонометрический калькулятор. Я так понимаю ошибка из-за рекурсии в модуле, но я не...

4
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2020, 17:48
Может условие задачи напишете, а то ошибку убрал, а что программа должна делать, фиг знает.
0
0 / 0 / 0
Регистрация: 21.07.2020
Сообщений: 2
21.07.2020, 17:51  [ТС]
Назовём натуральное число C крутым, если в его десятичной записи первая цифра слева не равна нулю и нацело делится на 1, первые две цифры образуют двузначное число, делящееся нацело на 2, первые три цифры образуют трёхзначное число, делящееся нацело на 3, и т. д., наконец, само число C нацело делится на k, где k – количество цифр в записи C. Например, число 7620543270 – крутое (проверьте). Найти самое большое крутое число. Сколько всего существует крутых чисел, включая однозначные?
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
21.07.2020, 18:42
А зачем нужна ваша программа?
Ведь она не выдаёт ни каких результатов!
И ещё очень странно смотрятся val-ы и str-ы…

Глубина же рекурсии у меня достигла 7926 прежде чем программа „подвисла“.
Такая глубина — это нормально?

Добавлено через 17 минут
Тупой перебор:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function круто(n : Integer) : Boolean;
begin
  Result := False;
  var s := IntToStr(n);
  for var d := 1 to s.Length do
    if Copy(s,1,d).ToInteger mod d > 0 then
      Exit;
  
  Result := True;
end;
 
begin
  var(n,count) := (0,0);
  repeat
    n += 1;
    
    if круто(n) then
      begin
        count+=1;
        $'{count} : {n}'.Println;
      end;
  until n<0;
end.
Ограничено типом переменной n.

Добавлено через 19 минут
Развиваем тему:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var count := 0;
var L := New List<integer>;
 
function круто(k : Integer; L : List<integer>) : List<integer>;
begin
  Result := New List<integer>;
  
  foreach var u in L do
    for var d := 0 to 9 do
      begin
        var n := u * 10 + d;
        if n mod k = 0 then
          begin
            count += 1;
            Result.Add(n);
            $'{count} : {n}'.Println;
          end;
      end;
end;
 
begin
  // от 1 до 9 - точно крутые
  for var i := 1 to 9 do
    begin
      count += 1;
      L.Add(i);
      $'{count} : {i}'.Println;
    end;
  // -----
  var k := 1;
  repeat
    k += 1;
    L := круто(k, L);
  until k = 9; // 10^9 - максимум типа integer
end.
Используем списки и добавляем разряды к найденным числам на предыдущей итерации.

Добавлено через 4 минуты
Увеличиваем до восьмибайтных беззнаковых:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var count := 0;
var L := New List<uint64>;
 
function круто(k : Integer; L : List<uint64>) : List<uint64>;
begin
  Result := New List<uint64>;
  
  foreach var u in L do
    for var d := 0 to 9 do
      begin
        var n : uint64 := u * 10 + d;
        if n mod k = 0 then
          begin
            count += 1;
            Result.Add(n);
            $'{count} : {n}'.Println;
          end;
      end;
end;
 
begin
  // от 1 до 9 - точно крутые
  for var i := 1 to 9 do
    begin
      count += 1;
      L.Add(i);
      $'{count} : {i}'.Println;
    end;
  // -----
  var k := 1;
  repeat
    k += 1;
    L := круто(k, L);
  until k = 19; // 10^19 - максимум типа uint64
end.
Добавлено через 3 минуты
А закончится всё вот таким результатом: 20456 : 3608528850368400786036725

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var count := 0;
var L := New List<biginteger>;
 
function круто(k : Integer; L : List<biginteger>) : List<biginteger>;
begin
  Result := New List<biginteger>;
  
  foreach var u in L do
    for var d := 0 to 9 do
      begin
        var n : biginteger := u * 10 + d;
        if n mod k = 0 then
          begin
            count += 1;
            Result.Add(n);
            $'{count} : {n}'.Println;
          end;
      end;
end;
 
begin
  // от 1 до 9 - точно крутые
  for var i := 1 to 9 do
    begin
      count += 1;
      L.Add(i);
      $'{count} : {i}'.Println;
    end;
  // -----
  var k := 1;
  repeat
    k += 1;
    L := круто(k, L);
  until k = 100;
end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
22.07.2020, 13:54
Pascal
34
35
  until L.Count = 0;
end.
При этом для k=1 размер списка получается 9.
Для k=2 — 150.
А максимальное количество элементов списка 2492 при k=9 и 10.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2020, 13:54
Помогаю со студенческими работами здесь

Программа завершена из-за переполнения программного стека
В общем задача найти сумму 1/1!+1/2!+...+1/n! при n&gt;10 Программу написал, все процедуры проверил, по отдельности работают, а когда...

Быстрая сортировка: "Программа завершена из-за переполнения программного стека"
Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека. Не могу понять, в чем дело....

"Программа завершена из-за переполнения программного стека" при работе рекурсивной функции
Здравствуйте Задание:Вычислить рекурсивно функцию вида у=COS(X)+COS(X^2)+COS(X^3)+...+COS( X^N) Ошибка:Ошибка времени...

Деревья, ошибка времени выполнения: StackOverflowException
Помогите,пожалуйста. выдаёт ошибку: &quot;Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения...

Ошибка переполнения стека
Уважаемые форумчане! Такая проблема. Необходимо поработать в PascalABC.NET с двумя достаточно большими массивами: - один на 2500...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru