Форум: Форум C++Разное
Новые темы: 00
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Рекурсия из массива

Сообщения:  [1-6] 

 
 автор: GeorgeIV   (28.06.2009 в 17:32)   письмо автору
 
   для: Trianon (...)   (28.06.2009 в 09:21)
 

Но тут, по моему, проходит только первый уровень. И как вообще может вывестись "--" по данному алгоритму я не вижу
и массив не соответствует выводимому

  Ответить  
 
 автор: Trianon (...)   (28.06.2009 в 09:21)
 
   для: Quies   (23.06.2009 в 11:31)
 

проблема в некорректном вызове,
и в нулевом элементе, который невесть с чего является родителем самому себе.
int vtree(int parent)
{
  static int array[]={0,0,0,0,0,1,4,3,6,6,7,7,4,3,5,8,9,11},
                  size = sizeof(array)/sizeof(array[0]);
  for(int x=1; x<size; x++)
    if(array[x]==parent) 
       cout << "-" << x <<endl, 
       vtree(x);
}

  Ответить  
 
 автор: GeorgeIV   (25.06.2009 в 10:56)   письмо автору
 
   для: Quies   (24.06.2009 в 11:59)
 

ну пробуй, но я не вижу по алгоритму, как оно дальше х=0 сдвинется

  Ответить  
 
 автор: Quies   (24.06.2009 в 11:59)   письмо автору
 
   для: GeorgeIV   (23.06.2009 в 17:42)
 

Да, нет он обходит, по крайне мере первую ветку нормально, но не может во время затормозится- входит в бесконечный цикл. Причина ошибки похоже не в этом.
Связь должна быть такая: у переведённого массива есть ключи и значения. Под ключами собственно ключ элемента, под значениями ссылка на родительский элемент. Из этого и нужно построить дерево.

  Ответить  
 
 автор: GeorgeIV   (23.06.2009 в 17:42)   письмо автору
 
   для: Quies   (23.06.2009 в 11:31)
 

естественно, у тебя вседа array[0] = 0 и parent=0 и дальше оно никогда не сдвинется

и вообще непонятна связь приведенного массива и желаемого результата

  Ответить  
 
 автор: Quies   (23.06.2009 в 11:31)   письмо автору
 
 

Помогите с программой.
Ни как не получается сделать рекурсивный вывод, программа входит в бесконечный цикл.



#include <cstdlib>
#include <iostream>

using namespace std;

int vtree(int parent)
{

int array[]={0,0,0,0,0,1,4,3,6,6,7,7,4,3,5,8,9,11};

int size = sizeof(array)/sizeof(array[0]);


for(int x=0;x<size;x++){

if(array[x]==parent) {

cout << "-" << x <<endl;

 vtree(array[x]);

}

}

return 0;
}

int main(int argc, char *argv[])
{



cout << "-- 0 --" << endl;

vtree(0);


int paus;
cin >> paus;

return 0;
}



Нужно вывести дерево элементов массива. Значение массива, есть ссылка на родительский элемент.

должно получится нечто, такое:

-- 0 --
-1
--6
---9
----17
---10
-2
-3
--8
---16
--14
-4
--13
--7
---11
----18
---12
-5
--15

  Ответить  

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования