Форум программистов, компьютерный форум CyberForum.ru

запись структуры в бинарное дерево - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Список сортировка http://www.cyberforum.ru/cpp-beginners/thread36851.html
Помогите отсортировать этот список пожалуйста #include <vcl.h> #include<iostream.h> #include<conio.h> struct node { int value; node *next; };
C++ Отсортировать столбцы матрицы методом пузырька Помогите, пожалуйста, найти ошибку. Дана матрица n*n. Каждый столбец матрицы с номером 2i по убыванию элементов, а с номаром 2i+1 по возрастанию элементов методом пузырька. #include <iostream> #include <fstream> #include <iomanip> using namespace std; ifstream in ("input.txt"); ofstream out ("output.txt"); http://www.cyberforum.ru/cpp-beginners/thread36844.html
C++ Как написать массив?
Нужно написать программу, в которой массив сможет принимать любые типы данных, например: float, char, int. Помогите пожалуйста.. :) У меня получились вот такие наброски: #include <conio.h> #include <iostream.h> #include <time.h> main() {
код реализации класса вектор C++
привет!!!!!!! поделитесь пожалусто кодом реализации класса вектор!!!!!! пожалусто........ нужно к завтрашнему(((99:help::'(
C++ решение судоку http://www.cyberforum.ru/cpp-beginners/thread36819.html
Судоку размера n называется квадрат со стороной n2, разделенный на n2 средних квадратов со стороной n, каждый из которых разделен на n2 маленьких квадратов. В каждом маленьком квадрате записано число от 1 до n2. Судоку называется правильным, если в каждом столбце, каждой строке и каждом среднем квадрате встречаются все числа от 1 до n2. Недавно Вася нарисовал Судоку размера n. Ваша задача –...
C++ программка с динамическими массивами 1. Ввести размер массива; 2.Сформировать массив с помощью операции new или библиотечных функций malloc (calloc); 3.Заполнить массив (можно с помощью датчика случайных чисел); 4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы); 5.Напечатать массив(ы)-результат(ы); 6.Удалить динамические массивы с помощью операции delete или библиотечной функции free. Сформировать... подробнее

Показать сообщение отдельно
аkо
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 5

запись структуры в бинарное дерево - C++

27.05.2009, 23:11. Просмотров 426. Ответов 0
Метки (Все метки)

Вот мой код, но он почему-то не строит дерево, причина скорее всего в этом куске функции:
if (strcmp(word, a->name)==0)
{
a->pnumb++;
strncpy(a->alboms[a->pnumb], &s[20],20);
(a->alboms[a->pnumb])[19]='\0';
a->god_vip[a->pnumb]=atoi(&s[40]);
}
но где именно не могу понять, помогите, пожалуйста!!!

#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct node
{
char name[10];
int god_vip[4];
char alboms[10][20];
int pnumb;
char janr[10];
node *left;
node *right;
};

node *crnode(char s[75])
{
node *newnode=new (node);
newnode->pnumb=1;
strncpy(newnode->name ,&s[0],10);
newnode->name[10]='\0';
strncpy(newnode->janr,&s[10],10);
newnode->janr[10]='\0';
strncpy(newnode->alboms[1], &s[20],20);
newnode->alboms[1][19]='\0';
newnode->god_vip[newnode->pnumb]=atoi(&s[40]);
newnode->left=NULL;
newnode->right=NULL;
return (newnode);
}
node *add_tree(node *a,char s[75])
{
char word[10];
if (a==NULL)
{
a=crnode(s);
}
else
{
strncpy (word,s,10);
word[9]='\0';
if (strcmp(word,a->name)<0)
{
if (a->left==NULL)
{
a->left=crnode(s);
}else{
add_tree(a->left,s);
}
}
if (strcmp(word, a->name)>0)
{
if (a->right==NULL)
{
a->right=crnode(s);
}else{
add_tree(a->right,s);
}
}
if (strcmp(word, a->name)==0)
{
a->pnumb++;
strncpy(a->alboms[a->pnumb], &s[20],20);
(a->alboms[a->pnumb])[19]='\0';
a->god_vip[a->pnumb]=atoi(&s[40]);
}
}
return(a);

}
void PrintNode(node *a)
{
int i;
if (a!=NULL)
{
cout << "NUMBER:" << a->number << endl ;
cout << "FAMILIJAAA:" << a->soname << endl;
for (i=1;i<=a->pnumb;i++)
{
cout << "\n" << a->narush[i] << "- " << a->shtraf[i] <<"\n__________________________\n";
}
cout << endl;
};
}



int main()
{
node *a=NULL, *b=NULL;
FILE *input, *output;
if((input=fopen("D:\\input.txt","r"))==NULL)
{cout<<"Oshibka faila"<<endl; return(1);}
if((output=fopen("D:\\output.txt","w"))==NULL)
{cout<<"Oshibka faila"<<endl; return(1);}
const dl=75;
char s[dl];
while(fgets(s,dl,input))
{
a=add_tree(a,s);
}
PrintNode(a);
fclose(input);
return 0;
}

заранее спасибо!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru