Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.08.2023, 10:52
Krypton Krypton вне форума
Прохожий
 
Регистрация: 20.08.2023
Сообщения: 3
Версия Delphi: FPC 3.04
Репутация: 10
По умолчанию Решаю задачу из Кордемского

Здравствуйте!

Решаю задачу из сборника Кордемского "Математическая смекалка".

Я-то решил её на бумаге, но хотелось бы пойти дальше...

Сама задача тут: https://ibb.co/Gp59ZdZ

Исходник консольной проги на FreePascal - во вложении.

Суть проблемы:
я сделал прогу, которая разбивает (исходное) число на цифры,
возводит каждую цифру в квадрат,
складывает результаты,
и получает новое число.
Которое заносится в массив.

И так итерируем 30 раз.

Потом, массив с этими итерационными результатами проверяем на наличие цикла.

То есть, получаем массив такой:
256 65 61 37 58 89 145 42 20 4 16 37 58 89 145 42 20 4 16 37 58 89 145 42 20 4 16 37 58 89 145

...
И почему-то проверка, в отладчике FPC, даёт нужное число (если исходное - 256, то результат должен быть 145).
А без отладчика, в "свободном полёте" - 0 получается.

Пожалуйста, подскажите, что я делаю не так?
Или я не вижу рядом открытой двери?

Спасибо!
Вложения
Тип файла: zip 1.zip (1.1 Кбайт, 4 просмотров)

Последний раз редактировалось Krypton, 20.08.2023 в 13:15.
Ответить с цитированием
  #2  
Старый 21.08.2023, 18:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Так, на первый взгляд, все нормально.
А при компиляции не выводится никаких варнингов типа неинициализированная переменная или что-то подобное?
Просто под отладчиком память переменных может чиститься, а без отладчика - нет.
Ответить с цитированием
  #3  
Старый 21.08.2023, 19:21
Krypton Krypton вне форума
Прохожий
 
Регистрация: 20.08.2023
Сообщения: 3
Версия Delphi: FPC 3.04
Репутация: 10
По умолчанию

нет, вообще ничего не пишет в сообщениях компилятора.
Ответить с цитированием
  #4  
Старый 22.08.2023, 07:58
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

может баг FPC?
Вот переписал твой алгоритм на Delphi XE3 (сорри, но твой код написан просто через жопу).
Что под дебагером, что без - результат одинаковый.

Код:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

function GetNextNumber(SrcNumber : Integer) : Integer;
begin
  Result := 0;
  Repeat
    Result := Result + Sqr((SrcNumber mod 10));
    SrcNumber := SrcNumber div 10;
  Until (SrcNumber = 0);
end;

const
  Iterations = 30;

var
  I : Integer;
  InitNumber : Integer;
  RepeatCount : Integer;
  NumbersArray : Array Of Integer;

begin
  try
    InitNumber := 256;
    SetLength(NumbersArray,Iterations+1);
    NumbersArray[0] := InitNumber;
    For I := 1 To Iterations Do
      NumbersArray[i] := GetNextNumber(NumbersArray[I-1]);
    RepeatCount := 0;
    For I := High(NumbersArray)-1 DownTo Low(NumbersArray) Do
      If NumbersArray[i] = NumbersArray[High(NumbersArray)] Then Inc(RepeatCount);

    WriteLn('Initial number: ',InitNumber);
    WriteLn('Number of iterations: ',Iterations);
    WriteLn('Array:');
    For I := Low(NumbersArray) To High(NumbersArray) Do
      Write(NumbersArray[i],' ');
    WriteLn;
    WriteLn('Iteration line count (0 means that row of iteration is too short): ',RepeatCount);

    WriteLn;
    WriteLn('Press ENTER to close the window...');
    ReadLn;
  except
    on E: Exception do
      begin
        Writeln(E.ClassName, ': ', E.Message);
        WriteLn('Press ENTER to close the window...');
        ReadLn;
      end;
  end;
end.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Krypton (22.08.2023)
  #5  
Старый 22.08.2023, 10:08
Krypton Krypton вне форума
Прохожий
 
Регистрация: 20.08.2023
Сообщения: 3
Версия Delphi: FPC 3.04
Репутация: 10
По умолчанию

спасибо, ща попробую.

Да, я согласен. Я только по хобби программирую. Рукожоп ещё тот

UPD

ДА! Под D7 оно тоже работает! Благодарствую, lmikle :-)

Последний раз редактировалось Krypton, 22.08.2023 в 10:15.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter