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

Не хочет передавать ДМУ функции!..:( - C++

Восстановить пароль Регистрация
 
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
11.06.2011, 15:07     Не хочет передавать ДМУ функции!..:( #1
Отладчик ругается при вызове функции ссылаясь на то что МУ присвоен неправильный указатель... не получается решить данную проблему. Это часть курсовой работы и идею алгоритма менять нельзя. Уже час парюсь ничего не добился путного... помогите
частые выводы - это ручная отладка, там где "-ок" программа прошла данный отрезок без нареканий...

C++
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
#include <stdio.h>
#include <string.h>
int N=4;
struct tree{
    int n;      // Значений в поддереве
    char **s; 
    tree *l,*r;
    void creat(){r=l=NULL; n=NULL; s=new char*[N]; for(int i=0;i<N;i++) s[i]="null"; } //создание пустой вершины
void create(char** s0,int n0){ //создание вершины со значением - не хочет принимать МУ... отладчик ругается на неправильный указатель
    r->l=NULL;
    n=n0;
    s=s0;
}};
void exteud(tree *p) //функция при переполнении МУ на строки  в концевой вершине порождает 2 потомка и делит МУ на 2 части
{
    for(int i=0;i<N;i++)
        printf_s("%s\t",p->s[i]);// -ок
    p->l=new tree;
    p->l->create(p->s,p->n); //перенос значений вершины в потомка  <------вот тут неправильно передает МУ
    p->r=new tree;
    p->r->creat();//создание пустого правого потомка
    p->l->n=p->r->n=N/2;//разделить на 2 части 
    for(int i=0;i<N/2;i++)
        p->r->s[i]=p->l->s[i+N/2]; //переписывание половины в правую концевую
    }
void insert(tree *p,char *c){ //включение строки
        if(p->l==NULL) //конечная
        {
            printf("%s\t",c);// -ок
            char *ss;
            ss=new char[strlen(c)];
            strcpy(ss,c);
            printf("%s\t",ss);//-ок
            p->s[p->n]=ss;//присваиваем МУ
            printf_s("%s\t", p->s[p->n]);// -ок
            p->n++;
            if(p->n==N)
            exteud(p); //проверка на переполнение
            return;
        }
        p->n++;
            insert(p->l,c);
            insert(p->r,c);
    }
void main(){
        tree *ph=new tree;
        char c[50];
        int rt;
        int m;
        int lvl=0;
        ph->creat();
        FILE *fd=fopen("asd.txt","r");
        while(!feof(fd))
        {
            fscanf(fd,"%s",c);
            insert(ph,c);   
        }
}


Добавлено через 16 часов 48 минут
Уже второй день мучаюсь... все делаю как в учебнике сказано, как показано в примерах, но ничего не выходит =(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2011, 15:07     Не хочет передавать ДМУ функции!..:(
Посмотрите здесь:

C++ Как передавать аргументы консольному приложению в Debug?
Можно передавать и вызывать из функции в DLL динамические массивы? C++
C++ Как передавать ссылку на структуру в map?
C++ программа не хочет видеть код функции
как передавать структуру в массив? C++
Что оптимальнее: передавать матрицу как аргумент, или же формировать её внутри функции? C++
C++ Можно ли массив передавать как параметр?
C++ Передавать массив в функцию построчно

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 07:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru