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

Ошибки компилятора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дано натуральное n. Вычислить y=cos1cos2cos3cos4...cosn http://www.cyberforum.ru/cpp-beginners/thread1064140.html
1. Дано натуральное n. Вычислить y=cos1cos2cos3cos4...cosn 2. Вычислить произведение натуральных чисел, кратных 5, от i до n. К каждой задаче нужно написать по три программы, используя разные виды...
C++ Вычислить значение выражения есть формула (a)*(b) ,где вместо (a) и (b) может быть та же формулa, то есть ((a)*(b))*((a)*((a)*(b))), и она может быть бесконечно велика. И вот эту вот формулу (a)*(b) нужно поменять на формулу... http://www.cyberforum.ru/cpp-beginners/thread1064134.html
C++ Нахождение двухстрочных комментариев
#include<iostream> #include<string> using namespace std; int main() { char str; cout<<"fragment koda please"<<endl; cin.getline(str,99); char* cbegin=strstr(str, "/*"); ...
C++ Функция сортировки вектора и списка
Добрый день, помогите пожалуйста) Суть задания в том, что нужно написать функцию сортировки (Одну!) сразу для вектора и списка без использования итераторов, т.е. в main'е требуется передать в функцию...
C++ Найти трехзначные числа от 100 до n, равные сумме кубов своих цифр http://www.cyberforum.ru/cpp-beginners/thread1064113.html
Найти трехзначные числа от 100 до n, равные сумме кубов своих цифр. (написать три программы с использованием всех видов цикла)
C++ Неправильно работает функция void FreeTop( Tree *&tree ) { if( tree->d == NULL )delete tree; else FreeTop( tree->d ); } это моя функция освобождения памяти самого верхнего узла дерева. но почему то когда... подробнее

Показать сообщение отдельно
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
06.01.2014, 14:51  [ТС]
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
struct Tree
{
       char s[ 10000 ];
       struct Tree *d;
};
 
 void show(struct Tree **tree) //Функция обхода
{
    if (*tree!=NULL) //Пока не встретится пустое звено
    {
       show((*tree)->d); //Рекурсивная функция для вывода левого поддерева
       printf( "%s\n", (*tree)->s ); //Отображаем корень дерева
    }
}
void Insert( struct Tree **tree, char newstring[] )
{
     if( *tree == NULL )
     {
         *tree = (struct Tree *) malloc( sizeof( struct Tree ) );
         strcpy( (*tree)->s, newstring );
         (*tree)->d = NULL;
     }
     else
     {
         if ( (*tree)->d != NULL )Insert( (*tree)->d, newstring );
         else 
         {
              (*tree)->d = (struct Tree *) malloc( sizeof( struct Tree ) );
              (*tree)->d->d = NULL; 
              strcpy( (*tree)->d->s, newstring );
         }
     }
}
 
void Delete( struct Tree **tree, char delstring[], int found )
{
     if( ( strcmp( (*tree)->s, delstring ) == 0 || found ) && (*tree)->d != NULL )
     {
         strcpy( (*tree)->s, (*tree)->d->s );
         Delete( (*tree)->d, delstring, 1 );
     }
}
 
int Prefix( struct Tree **tree, char prefstring[] )
{
    if( *tree != NULL )
    {
        int prefix = 1, len = strlen( prefstring );
        int i = 0;
        while( i < len )
        {
             if( (*tree)->s[ i ] != prefstring[ i ] )
             {
                 prefix = 0;
                 break;
             }
             i++;
        }
        return prefix + Prefix( (*tree)->d, prefstring );
    }
    else return 0;
}
 
int Prisystvie( struct Tree **tree, char string[] )
{
     if( *tree != NULL )
     {
         if( strcmp( (*tree)->s, string ) == 0 )
         return 1;
         else return Prisystvie( (*tree)->d, string );
     }
     else return 0;
}
 
void FreeTop( struct Tree **tree )
{
     if( (*tree)->d == NULL )
     {
        free( *tree );
        *tree = NULL;
     }
     else FreeTop( (*tree)->d );
}
 
int main()
{
    struct Tree *tree = NULL;
    int n;
    scanf( "%d", &n );
    
    char cmd[ 7 ], string[ 10000 ];
    
    int i = 0;
    while( i < n )
    {
         scanf( "%s %s", &cmd, &string);
         
         if( strcmp( cmd, "INSERT" ) == 0 )
         {
             if( !Prisystvie( &tree, string ) )
             Insert( &tree, string );
             
             show(tree);
         }
         if( strcmp( cmd, "DELETE" ) == 0 )
         {
             if( Prisystvie( &tree, string ) )
             {
                 Delete( &tree, string, 0 );
                 FreeTop( &tree );
             }
         }
         if( strcmp( cmd, "PREFIX" ) == 0 )
         {
             printf( "%d\n", Prefix( &tree, string ) );
         }
         i++;
    }
    
    while( tree != NULL )
    FreeTop( &tree );
    
    return 0;   
}
ввожу:
2
INSERT asd

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