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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
#1

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

11.06.2011, 15:07. Просмотров 501. Ответов 0
Метки нет (Все метки)

Отладчик ругается при вызове функции ссылаясь на то что МУ присвоен неправильный указатель... не получается решить данную проблему. Это часть курсовой работы и идею алгоритма менять нельзя. Уже час парюсь ничего не добился путного... помогите
частые выводы - это ручная отладка, там где "-ок" программа прошла данный отрезок без нареканий...

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     Не хочет передавать ДМУ функции!..:(
Посмотрите здесь:

Можно передавать и вызывать из функции в DLL динамические массивы? - C++
Мне нужно создать перегруженные функции удаления элемента из динамического массива с заданным ключом!Можно передавать в функцию и вызывать...

Что оптимальнее: передавать матрицу как аргумент, или же формировать её внутри функции? - C++
Добрый вечер, уважаемые форумчане! Я столкнулась с таким вопросом в процессе оптимизации моей программы: что оптимальнее, передавать...

программа не хочет видеть код функции - C++
Всем добрый вечер. Пишу на wxDev-C++. Пишу обычную не сложную игру. Столкнулся с проблемой в меню, есть функция в мэйне она...

как передавать структуру в массив? - C++
А заполнять его как обычный массив??? через цикл?

Передавать массив в функцию построчно - C++
Всем привет! Возникла следующая задача: Я вызываю в main() следующую функцию: inv = MergeSort(A, 1, m - 1); Где A - должен быть...

Нужно ли передавать итератор в функцию по ссылке? - C++
Добрый день ! Итератор это тот же обьект но с поведением указателя. Нужно ли его в функцию передавать как ссылку ? void...

Как правильно передавать указатель на функцию? - C++
Класс для очереди typedef unsigned size_t; template&lt;typename T&gt; struct List { T data; struct List&lt;T&gt;* next; ...

Можно ли массив передавать как параметр? - C++
Всем доброго дня! Короче, есть несеолько массивов, скажем два; - arrb и arrc. И есть функция типа int count();. Надо чтобы эта функция...

Как передавать аргументы консольному приложению в Debug? - C++
Я написал программу, не могу найти ошибку и хочу воспользоватся дебаггом. У меян в программу передается 2 аргумента: имя файла и слово, с...

Как передавать динамически данные из одного класса в другой? - C++
Есть такая проблема. Пишу игру с другом. Код выкладывать не буду потому что он большой :cry: Никто даже не захочет его смотреть, просто...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru