1 Востаннє редагувалося Programmer (09.12.2013 21:45:53)

Тема: Допоможіть... У програмуванні не довго

Суть в тому, що мені потрібно згенерувати бінарне дерево... (дані зчитати з файлу)
Багато чого прочитав але так і нічого не зрозумів як це можливо реалізувати...
P.S. Забув реалізація тільки на мові С.

2

Re: Допоможіть... У програмуванні не довго

P.S. Забув реалізація тільки на мові С.

3

Re: Допоможіть... У програмуванні не довго

Тут

Подякували: Programmer1

4

Re: Допоможіть... У програмуванні не довго

Багато прочитали, а правила форуму забули?

Прихований текст

http://s018.сайт-злодій/i504/1305/4e/128b3beefcef.jpg

5

Re: Допоможіть... У програмуванні не довго

Розумієте я не знаю як почати код з тим бінарним деревом якби мене б хтось підштовхнув ...

6

Re: Допоможіть... У програмуванні не довго

Пишете структуру, що містить дані і два посилання на такі самі структури.

7

Re: Допоможіть... У програмуванні не довго

Ось завдання :

    Згенерувати масив із 100 випадкових чисел і записати його у файл.
    Згенерувати для нього бінарне дерево парних і непарних чисел.
в мене не виходить з тим бінарним деревом!!
Ось код :

#include "stdafx.h"
#include "stdio.h"
#include<iostream>
#include "stdlib.h"
#include "time.h"

using namespace std;

struct treeNode
{
    struct treeNode *leftPtr;
    int data;
    struct treeNode *rightPtr;
};
typedef struct treeNode TREENODE;
typedef TREENODE *TREENODEPTR;



int main(array<System::String ^> ^args)
{
    FILE *file;
    if ((file = fopen("GGG.txt","w")) == NULL)
        {
            printf("The file can not be opened\n");
            exit(0);
        }
    else
        {
            srand((unsigned int)time(NULL));
            int *a = new int[100](); 
            for ( unsigned int i = 0; i < 100; i++)
                {
                    a[i] = rand();                            
                    fprintf (file, " %d\n\n" , a[i]); 
//----------------------------------------------------------------------------------------------
                    fscanf(file, "%d", a[i]);
                    //void insertNode(TREENODEPTR *,int);
                    void print_Tree(Tree * p,int level)
//-------------------------------------------------------------------------------------------
            delete [] a;
        }
    fclose(file);
    system("PAUSE");
    return 0;
}
/*
void insertNode(TREENODEPTR *treePtr, int value)
{
    if (*treePtr==NULL)
    {
    //    *treePtr = malloc (sizeof(TREENODE));
        if (*treePtr != NULL)
    {
        (*treePtr) ->data = value;
        (*treePtr) ->leftPtr = NULL;
        (*treePtr) ->rightPtr = NULL;
    }
    else
        printf("%d NO NO NO!!!\n", value);
    }
    else 
        if (value < (*treePtr) -> data)
            insertNode(&((*treePtr) -> leftPtr), value);
        else
            if (value > (*treePtr) -> data)
            insertNode(&((*treePtr) -> rightPtr), value);
            else
                printf("dup");
}
*/

void print_Tree(Tree * p,int level)
{
    FILE *file = fopen("GGG.txt","r");

    if(p)
    {
        print_Tree(p->left,level + 1);
        for(int i = 0;i< level;i++) cout<<"   ";
        cout << p->key << endl;
        print_Tree(p->right,level + 1);
    }
}

8

Re: Допоможіть... У програмуванні не довго

По-перше, по-людськи напишіть, що значить "не виходить". Яка помилка, в якому рядку, що виводить, що не виводить, а що ви очікували і т.д.
По-друге, поясніть, що значить "бінарне дерево парних і непарних чисел". Наприклад, якщо в нас є числа {1 2 3 4} - яке з них буде дерево? Що в корені, які листочки?
По-третє, не мішайте за можливістю C та C++. Або printf/scanf, або оператори >> та <<, але не одночасно.
По-четверте, я зовсім не розумію, нащо вам генерувати випадкові числа, які ви одразу затираєте прочитаними з файла.

9

Re: Допоможіть... У програмуванні не довго

дійсно якщо ви "недавно в програмуванні" не мішайте можливості С, C++,  C++/CLI