С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Delphi Вывести на экран натуральные числа от 1 до 100, которые при делении на 4 дают в остатке 2, и их количество вопрос в теме. помогите, пожалуйста :с https://www.cyberforum.ru/ delphi-beginners/ thread705484.html Проверить, образуют ли элементы массива арифметическую прогрессию Delphi
Пожалуйста пожалуйста решите задачу до завтра(23.11) очень очень надо!!!! Дан целочисленный массив размера N, не содержащий одинаковых чисел. Проверить, образуют ли его элементы арифметическую прогрессию. Если образуют то вывести разность прогрессии, если нет-вывести 0. Прекращайте постить задачи в "О форуме и сайтах". Продумывайте заголовок для своих тем. Устное предупреждение
Delphi Удвоить размер файла Дан файл целых чисел. Удвоить его размер, записав в конец файла все его исходные элементы (в том же порядке). https://www.cyberforum.ru/ delphi-beginners/ thread705430.html Delphi Работа с файлом https://www.cyberforum.ru/ delphi-beginners/ thread705423.html
Задали файл действительных чисел (создать программным путем). Найти сумму его элементов с четными номерами.
Муравейник Delphi
Муравейник. Типы объектов: матка, солдаты, полицейские, рабочие, личинки, вредители. Каждый представитель является отдельным экземпляром класса. Муравейник имеет склад пищи фиксированного размера. Матка создает личинки, из личинок выводятся солдаты, полицейские или рабочие муравьи и ест очень много, солдаты уменьшают число вредителей и много едят, полицейские помогают увеличить число добываемой...
Delphi Constant expression expected Help. При объявлении переменной ругается. var DataModule6: TDataModule6; RC: Integer; { global variable that can be used in other units } CC: Integer; { global variable, but can only be used in this unit } NC, NV, NOPTIMAL, P1, P2, XERR: Integer; TS: Array of Double; R1,R2: double; А именно на https://www.cyberforum.ru/ delphi-beginners/ thread705394.html
Delphi Чтение текстового файла У меня есть текстовый файл, где каждая переменная записывается с новой строки Мне нужно записать каждую строку в массив из 9 вещественных чисел assignfile(f1,'C:\'+nick+'.txt'); reset(f1); i:=1; while not eof(f1) do begin readln(f1,inp); inc(i); https://www.cyberforum.ru/ delphi-beginners/ thread705366.html Тест "Кратковременная память" Delphi
Прошу вашей помощи.Имеется вот такая вот задачка Испытуемому предлагается запомнить и воспроизвести в заданный временной промежуток ряды цифр в прямом и обратном порядке. Результирующая оценка учитывает количество цифр в самом длинном правильно воспроизведенном ряду Я Делфи последний раз открывал лет восемь назад, а задачу сделать надо.Подскажите мне пожалуйста алгоритм, чтобы без наворотов,...
Delphi Заменить все большие буквы, кроме букв, стоящих после точки, маленькими буквами Заменить все большие буквы, кроме букв, стоящих после точки, маленькими буквами. https://www.cyberforum.ru/ delphi-beginners/ thread705358.html Delphi Перетаскивание элементов с панели https://www.cyberforum.ru/ delphi-beginners/ thread705345.html
Есть 2 панели, визуально одна поверх другой. На этой панели есть элементы, нужно перетащить с неё картинку на ту панель, которая ниже, при это картинка тащиться с курсором. Если ничего не делать, то картинку за пределы своей панели не вытащить(уходит за границы и её не видно). При присваивании ей родителем нижней панели почти всё норм, однако, есть проблема: картинку теперь не видно, если тащить...
Delphi наследование классов
Ребят, срочно нужна помощь, дали проект-абсолютно не знаю что делать, кто может, помогите плз!!! Требования: описать абстрактный базовый класс и производные от него и создать параметризованную коллекцию объектов производных классов. Обеспечить читабельный вывод полей классов на экран. Используя механизм виртуальных методов, продемонстрировать единообразную работу с элементами коллекции. ...
Delphi Сортировка естественным слиянием program Project1; {$APPTYPE CONSOLE} uses SysUtils; const N = 10; NameA = 'A.dat'; NameB = 'B.dat'; https://www.cyberforum.ru/ delphi-beginners/ thread705326.html
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
24.11.2012, 16:18 0

Рекурсия с возвратом на бутылках) Подайте идею! - Delphi - Ответ 3747396

24.11.2012, 16:18. Показов 1758. Ответов 7
Метки (Все метки)

Ответ

Вот исправил всё. Немного подправил, чтобы отображение было получше. С деревьями работал очень мало, поэтому быстро не получилось.
Delphi
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type
  T_item = String; // здесь может быть любой тип
  P_Node = ^T_Node;
  T_Node = record
             info: T_item;
             key: integer;
             left, right: P_Node;
           end;
  var root: P_Node; // корень дерева
      fin: textFile;
      n,m,dec:integer;
      binStr,strByte:string;
 
 
// вспомогательная процедура
procedure PrintKey(t: P_Node);
begin
  writeln;
  write(t^.key: 5);
  write('/');
  write(t^.info);
end;
 
// обход сверху вниз        К-Л-П
procedure preorder(t: P_Node);
begin
  if t <> nil then
  begin
    PrintKey(t);  // обработать корневой узел
    preorder(t^.left);// обойти левое поддерево в нисходящем порядке
    preorder(t^.right);//обойти правое поддерево в нисходящем пор-ке
  end;
end;
 
// вставка элемента в дерево (рекурсивная процедура)
procedure InsertInTree(var t: P_Node; k: Integer; str:String);
begin
  if t = nil Then
  // если найдено место для нового узла
  begin
    new(t); // распределяем память
    t^.left := nil; // устанавливаем пустые ссылки для левого и
    t^.right := nil; // правого поддеревьев
    t^.key := k; // заполняем ключевое поле
    t^.info := str;
  end else
  {иначе определяем, в каком поддереве узла t должен располагаться элемент с таким ключом}
  begin
    str:=t^.info+'-->'+IntToStr(k); //записываем путь к вершине
    if k <= t^.key then
    // если новый ключ меньше или равен текущему
    InsertInTree(t^.left, k,str) // вставим в левое поддерево
    else InsertInTree(t^.right, k,str); // а иначе – в правое
  end;
end;
 
function bin2dec(s:string):integer;      //  функция перевода числа из 2 СС в 10
var x,i:integer;
begin
  x:=0;
  for i:=1 to length(s) do
  x:=(x Shl 1)+ord(s[i])-ord('0');
  Result:=x;
end;
 
function dec2bin(x:integer):string;            //из 10 в 2 сс
var s:string;
begin
  s:='';
  while x>0 do
  begin
    s:=chr(ord('0')+(x And 1))+s;
    x:=x Shr 1;
  end;
  Result:=s;
end;
 
Var
  i,j : Integer;
begin
  assignFile(fin,'input.txt'); //связываем файл с именем
  reset(fin);    //открываем для чтения
  readln(fin,n); //считываем количество целых чисел в файле
  readln(fin,m); //и количество бит
  root:=Nil;
  For i:=1 To n Do
  begin
    If eof(fin) then Break;
    readln(fin,binStr); //считываем число в двоичном представлении
    j:=Pos(' ',binStr); //В файле после пробела число в десятичной сс для наглядности
    If j=0 Then j:=Length(binStr)+1;
    If (j-1)>m Then j:=m+1; //Ограничение по количеству бит
    binStr:=Copy(binStr,1,j-1);
 
    dec:=bin2dec(binStr); //переводим в 10ю сс
    strByte:=IntToStr(dec);
    InsertInTree(root, dec,strbyte); //вставляем вершину с заданным ключом и инф полем
  end;
  preorder(root); //root - корень дерева в котором ключи - числа заданные в файле и переведенные в 10ю сс
  //а инф поле - путь к вершине
  closeFile(fin);
  readln;
end.
но видимо из-за того что пробегается много уровней рекурсии(туда +возврат) в инф.поле неверно записывается путь
Как вы говорите "рекурсии(туда +возврат)" здесь нет. Здесь происходит переход либо в левое поддерево, либо в правое. А по нахождении конца - записывается новый элемент. У вас и правда путь записывался неверно, потому, что на каждом уровне дерева к предыдущему пути добавлялся ещё путь к текущему узлу.
Delphi
1
str:=str+t^.info;
Т.е. путь к предыдущему узлу + путь к текущему узлу, который также включает путь к предыдущему узлу.
Кроме того такой красивый путь по нисходящей или восходящей - не получится. Почему покажу на примере:
Код
  363/363
  182/363-->182
    7/363-->182-->7
    2/363-->182-->7-->2
  341/363-->182-->341
  602/363-->602
  558/363-->602-->558
  526/363-->602-->558-->526
  942/363-->602-->942
  954/363-->602-->942-->954
Это отчёт по вводу чисел. Первые 4 идут по убыванию - здесь всё нормально. Следующий идёт сначала в левое поддерево до узла 182. А в этом узле добавляется правый подузел, поскольку новый ключ больше ключа узла. Поэтому путь получается сами видите какой.

Вернуться к обсуждению:
Рекурсия с возвратом на бутылках) Подайте идею! Delphi
1
Заказать работу у эксперта
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2012, 16:18
Готовые ответы и решения:

Подайте идею
Вот задача: Задача Bracket. В сложных математических выражениях приходится иногда ставить много...

Рулетка - Подайте идею пожайлусто
Вот фото: Подайте пожалуйста идею как можно было бы сделать чтоб крутилась рулетка с...

Подайте идею для сайта
вот :

Подайте пожалуйста идею математического проекта
Доброго времени суток. Подкиньте пожалуйста идеи программ, связанные с математикой. Уровня 4го...

7
24.11.2012, 16:18
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.11.2012, 16:18
Помогаю со студенческими работами здесь

Подайте идею, как защитить видео
Есть сервис с видео-материалами, доступ к которым предоставляется только если у человека есть...

Подайте идею как реализовать мысль
Доброго времени суток! вопрос вот такого вида. идет подсчет строковых показателей на Количество...

Подайте идею для исправления знаков препинания
Всем привет. Задача: Создать программу, которая будет исправлять такой текст: Привет , меня...

Рекурсия с возвратом
Помогите пожалуйста,не понимаю, как тут использовать рекурсию. Найти маршрут обхода конем...

0
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­хро­н­н­ы­й счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru