,   CyberForum.ru

- C++

 
 
:  :  - 58,   - 4.78
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
06.11.2010, 18:20     #1
Pascal
1
2
3
4
5
type  celltype = record 
elt: integer; 
next: ^celltype 
end; 
DICTIONARY = array[0..B-1]  of  ^celltype;
?
C++
1
2
3
4
5
6
7
typedef struct spis
{
    char *s;
    spis *next;
};
 
typedef struct spis *dict[maxn];
?
Similar
41792 / 34177 / 6122
: 12.04.2006
: 57,940
06.11.2010, 18:20    
:

C++
C++
C++
C++ ,
C++
MAP C++
, C++
.
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
12.11.2010, 01:19     #21


1
Artishok
del ?
.
, delete []
, ?
.
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
12.11.2010, 01:43  []     #22


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
#include <iostream>
 
 struct spis //ýëåìå*ò õåø-ò*áëèöû óçåë ñïèñê*
 {
    char *val;
    struct spis *next;
};
 
typedef struct spis *dictionary[10];//ê*æäîå dictionary[i]-ðåçóëüò*ò õåø-ôó*êöèè
 
 
int ord(char o)//ïåðåâîä ñèìâîë* â êîä
{
 return (unsigned char) o;
}
 
int hash (char *x)//õåø-ôó*êöèÿ
{
 int i,sum=0;
 for(i=0;i<10;i++)
    sum+=ord(x[i]);//ñóììèðóåì êîäû ñèìâîëîâ
  return sum%10; 
}
 
void makenull(dictionary k)//îá*óëå*èå õåø-ò*áëèöû
{
    for(int i=0;i<10;i++)
    k[i]=0;
}
 
bool member(char *x,dictionary k)//ïðîâåðê* ** **ëè÷èå
{
    spis *cur;
    cur=k[hash(x)];//**÷*ëü*îå ç**÷å*èå ð*â*î ç*ãîëîâêó ñåãìå*ò* êîòîðîìó ïðè**äëåæèò x
    while (cur!=0)//ïîê* *å äîéäåò äî êî*ö* 
    {
        if (cur->val==x)//åñëè åñòü
         return true;//ç**÷èò åñòü
        else //è**÷å
         cur=cur->next;//ïåðåìåù*òüñÿ
    }
    return false;
}
 
void insert(char *x,dictionary k)//âò*âê*
{
    
    int symb;//*îìåð ñåãìå*ò*
    spis *oldhead;
    char *x1=new char[strlen(x)+1];
    strcpy(x1,x);
    if (!member(x1,k)) //åñëè *åò òî
    {
        symb=hash(x1);//ñîçä*åì êîä äëÿ ñòðîêè
        oldhead=k[symb]; //ñò*ðîé ãîëîâå ïðèñâîèòü ç**÷å*èå k-õåøåâñêîãî
        k[symb]=new spis; //*îâûé ýëåìå*ò òèï* spis c êîäîì symb
        k[symb]->val=x1; //ç*ïèñ*òü ç**÷å*èå
        k[symb]->next=oldhead; //óê*ç*òåëü ** ñëåäóþùèé ýëåìå*ò ñäåë*òü ** ñò*ðóþ ãîëîâó
    }
}
 
void del(char *x,dictionary k) //óä*ëå*èå
{
    int symb;//äëÿ õð**å*èÿ êîä* 
    spis *cur;//óê*ç*òåëü ** ýëåìå*ò* òèï* spis
    symb=hash(x);//ïîëó÷*åì êîä äëÿ òîãî ÷òî õîòèì óä*ëèòü
    bool f=true;
    if (k[symb]!=0)//åñëè òî ÷òî ïîëó÷å*î *å *îëü
    {
        if (k[symb]->val==x) //åñëè ñëó÷èëîñü ÷òî ýëåìå*ò óä*ëÿåìûé ãîëîâ*
          k[symb]=k[symb]->next; //ãîëîâîé ñò*ë áûâøèé next
          else //è**÷å
          {
            cur=k[symb];//ïðèñâîèì ç**÷å*èå ýëåìå*ò* ñ êîäîì symb
            while((cur->next!=0)&&(f))//ïîê* ïî ýòîìó êîäó ïî ñïèñêó *å äîéäåò ïîñëåä*åãî èëè *å **éäåò
             if (cur->next->val==x)//åñëè ýëåìå*ò ñëåäóþùèé èìååò ýòî ç**÷å*èå òî
             {
                cur->next=cur->next->next;//ýëåìå*ò ïðåä óê*çûâ*åò óæå *å ** *åãî ** ç* ñëåäóþùèé ç* *èì
                f=false;//öèêë ç*âåðøå*
             }
             else
             cur=cur->next;//Ïåðåìåù*åìñÿ ïî ñïèñêó
          }
    }
}
 
int main()
{
   dictionary d;
   char *s;
   cin>>s;
   insert(s,d);
   makenull(d);
}
6
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
void del(char *x,dictionary k) //óä*ëå*èå
{
    int symb;//äëÿ õð**å*èÿ êîä* 
    spis *cur;//óê*ç*òåëü ** ýëåìå*ò* òèï* spis
    symb=hash(x);//ïîëó÷*åì êîä äëÿ òîãî ÷òî õîòèì óä*ëèòü
    bool f=true;
    if (k[symb]!=0)//åñëè òî ÷òî ïîëó÷å*î *å *îëü
    {
        if (k[symb]->val==x)
         { //åñëè ñëó÷èëîñü ÷òî ýëåìå*ò óä*ëÿåìûé ãîëîâ*
          spis *chuck=k[symb];//äîïîë*èòåëü*îé ïåðåìå**îé ç**÷å*èå "á*ø*è"
          k[symb]=k[symb]->next; //ãîëîâîé ñò*ë áûâøèé next
          delete chuck;//óä*ëåÿì èç ï*ìÿòè
         }
          else //è**÷å
          {
            cur=k[symb];//ïðèñâîèì ç**÷å*èå ýëåìå*ò* ñ êîäîì symb
            while((cur->next!=0)&&(f))//ïîê* ïî ýòîìó êîäó ïî ñïèñêó *å äîéäåò ïîñëåä*åãî èëè *å **éäåò
             if (cur->next->val==x)//åñëè ýëåìå*ò ñëåäóþùèé èìååò ýòî ç**÷å*èå òî
             {
                spis *chuck=cur->next;//ïðèñâ*èâ*åì ïåðåìå**îé ç**÷å*èÿ òîãî êîãî õîòèì óä*ëèòü
                cur->next=cur->next->next;//ýëåìå*ò ïðåä óê*çûâ*åò óæå *å ** *åãî ** ç* ñëåäóþùèé ç* *èì
                delete chuck;
                f=false;//öèêë ç*âåðøå*
             }
             else
             cur=cur->next;//Ïåðåìåù*åìñÿ ïî ñïèñêó
          }
    }
}
delete

- .
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
12.11.2010, 01:58     #23
C++
1
2
3
    char *x1=new char[strlen(x)+1];
    strcpy(x1,x);
    if (!member(x1,k))

member ?

del
,
, , - ( , )

C++
1
2
3
    char *s;
    cin >> s;
    insert(s, d);
s , , , s , s ( )
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
12.11.2010, 02:02  []     #24
accept
member ?
else

1
accept
, , - ( , )
.
makenull .
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
12.11.2010, 02:02     #25
Artishok
else
, ?

Artishok
.
, delete [] chuck->val;
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
12.11.2010, 02:06  []     #26
accept
delete [] chuck.val
delete chuck

accept
, ?
?
C++
1
char *x1=new char[strlen(x)+1];
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
12.11.2010, 02:12     #27
Artishok
- .
, - , - , - -

15
Artishok
- .
, - , - , - -

2
Artishok
delete chuck

?
C++
1
char *x1=new char[strlen(x)+1];
, delete chuck delete [] chuck->val

, , ,
x1, x,
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
12.11.2010, 12:19  []     #28
. .
. .

10 0


53
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
#include <iostream>
 
 struct spis // -  
 {
    char *val;
    struct spis *next;
};
 
typedef struct spis *dictionary[10];// dictionary[i]- -
 
 
int ord(char o)//   
{
    return (unsigned char) o;
}
 
int hash (char *x)//-
{
 int i,sum=0;
 for(i=0;i<10;i++)
    sum+=ord(x[i]);//  
  return sum%10; 
}
 
void makenull(dictionary k)// -
{
    for(int i=0;i<10;i++)
    k[i]=0;
}
 
bool member(char *x,dictionary k)//  
{
    spis *cur;
    cur=k[hash(x)];//       x
    while (cur!=0)//     
    {
        if (cur->val==x)// 
         return true;// 
        else //
         cur=cur->next;//
    }
    return false;
}
 
void insert(char *x,dictionary k)//
{
    
    int symb;// 
    spis *oldhead;
    if (!member(x,k)) //  
    {
        char *x1=new char[strlen(x)+1];
            strcpy(x1,x);
        symb=hash(x1);//   
        oldhead=k[symb]; //    k-
        k[symb]=new spis; //   spis c  symb
        k[symb]->val=x1; // 
        k[symb]->next=oldhead; //       
    }
}
 
void del(char *x,dictionary k) //
{
    int symb;//   
    spis *cur;//    spis
    symb=hash(x);//      
    bool f=true;
    if (k[symb]!=0)//     
    {
        if (k[symb]->val==x)
         { //     
          spis *chuck=k[symb];//   
          k[symb]=k[symb]->next; //   next
                 delete chuck;//  
         }
          else //
          {
            cur=k[symb];//     symb
            while((cur->next!=0)&&(f))//           
             if (cur->next->val==x)//      
             {
                spis *chuck=cur->next;//      
                        cur->next=cur->next->next;//           
                    delete [] chuck->val;
                    delete chuck;
                        f=false;// 
             }
             else
             cur=cur->next;//  
          }
    }
}
 
int main()
{
   dictionary d;
   char *s;
   cin>>s;
   insert(s,d);
   makenull(d);
}
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
12.11.2010, 13:02     #29
, delete chuck
main'
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
12.11.2010, 16:34  []     #30
accept
main'
?
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
12.11.2010, 22:49     #31
C++
1
char *s;
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
12.11.2010, 23:10  []     #32
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
12.11.2010, 23:40     #33
-
( )
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
13.11.2010, 01:55  []     #34
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
#include <iostream.h>
 
#define maxn 100
 
struct spis
{
    char *s;
    struct spis *next;
};
 
typedef struct spis *dict[maxn];
 
//èç ñèìâîë* â êîä
int transform(char c)
{
    return (int) c;
}
 
 
//õåø-ôó*êöèÿ
int hashfunc(char *x)
{
    int sum=0;
    for (int i=0;i<strlen(x);i++)
    sum+=transform(x[i]);
    return sum%maxn;
}
 
//ïðîâåðê* **ëè÷èÿ
bool check(char *x,dict k)
{
    int symb=hashfunc(x);//*îìåð â ò*áëèöå
    spis *elem=k[symb];//ýëåìå*òó òèï* spis ç**÷å*èå ãîëîâû â *îìåðå symb
    while (elem!=0)
    {
        if (elem->s==x)//åñëè **éäå* âåð*óòü true
         return true;
        else
        elem=elem->next;//ïðîäîëæ*òü ïîèñê
    }
    return false;
}
 
void insert(char *x,dict k)//âñò*âëÿåì â ãîëîâó ñïèñê*
{
    if (!check(x,k))
    {
        //k[res] è åñòü ãîëîâ* ñïèñê*
        int res=hashfunc(x);//êóä* âñò*âëÿòü *îâóþ ñòðîêó
        spis *elem=new spis;//ñîçä*åì *îâûé ýëåìå*ò âñò*âëå*èÿ
        elem->s=x;//ç*ïèñûâ*åì â *åãî ä***ûå
        elem->next=k[res];//*îâûé ýëåìå*ò óê*çûâ*åò ** ñò*ðóþ ãîëîâó
        k[res]=elem;//ãîëîâ* *îâûé ýëåìå*ò
    }
}
 
char del(char *x,dict k)//óä*ëå*èå ýëåìå*ò èç ñïèñê*
{
    char ret[8]="no elem";
    char ret1[15]="elemet deleted";
    if (check(x,k))
      return *ret;
      else
      {
        int symb=hashfunc(x);
        if(k[symb]->s==x)//åñëè ýëåìå*ò ëê*ç*ëñÿ ãîëîâîé
         {
            
            spis *cur=k[symb];//ïðèñâîèì ç**÷å*èå ãîëîâû
            k[symb]=k[symb]->next;//ãîëîâ* ñëåäóþùèé ýëåìå*ò
            delete cur;//óä*ëÿåòñÿ âñå ÷òî ñîäåðæ*ë â ñåáå ýëåìå*ò(âêëþ÷*ÿ ä***ûå)
            return *ret1;
         }
         else
          {
            spis *cur=k[symb];//ïðèñâîèì ç**÷å*èå ãîëîâû ÷òîáû * ïîòåðÿòü å¸ èç âèäó
            while (cur->next!=0)//ïîê* *å ýëåìå*ò ñ óê*ç*òåëåì ** 0 è ôë*ã
            {
                if (cur->next->s=x)//åñëè **éäåò ýëåìå*ò ñ óê*ç*òåëåì ** òîò ýëåìå*ò êîòîðûé **äî óä*ëèòü
                {
                     spis *tmp=cur->next;//ç**÷å*èå óä*ëÿåìîãî ýëåìå*ò
                     cur->next=cur->next->next;//ïðîèã*îðèðóåì óä*ëÿåì ýëåìå*ò
                     delete tmp;//óä*ëå*èå âñåãî ÷òî ñâÿç**î ñ ïðåäìåòîì(âêëþ÷*ÿ ä***ûå â *åì)
                     return *ret1;
                }
            }
          }
      }
}
 
void clear(dict k)//èçìå*èë *åì*îãî ôó*êöèþ.òîé ì*å ïîê*ç*ëîñü *åäîñò*òî÷*î
{
    for (int i=0;i<maxn;i++)
    {
        if (k[i]!=0)//åñëè â ç**÷å*èè åñòü õîòü ÷òî-òî
        while (k[i]!=0)//ïîê* *å 0
        {
            spis *temp=k[i];//ïåðåìå***ÿ óä*ëå*èÿ
            k[i]=k[i]->next;//ïåðåìåùå***ÿ
            delete k[i];//âû÷èùå*èå
        }
    }
        
}
. ?
-

10
...
This application has requested the runtime to terminate it in an unsual way.Please contact the application's support team for more information

.cpp
.lib. ? . .o .exe

4
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
13.11.2010, 02:14     #35
Artishok
. ?
,

C++
1
2
3
4
5
//   
int transform(char c)
{
        return (int) c;
}
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
13.11.2010, 02:19  []     #36
.
.
?
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
13.11.2010, 02:22     #37
?
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
13.11.2010, 02:27  []     #38
transform

1
" "

40
..
accept
4838 / 3237 / 165
: 10.12.2008
: 10,682
13.11.2010, 02:28     #39

, ,
MoreAnswers
37091 / 29110 / 5898
: 17.06.2006
: 43,301
13.11.2010, 02:28    
:

C++
C++
C++ ( )
C++
C++



:
Artishok
   Artishok
277 / 276 / 32
: 27.12.2009
: 1,767
13.11.2010, 02:28  []     #40
..

30


Yandex
13.11.2010, 02:28    

: 06:15. GMT +3.
- , ,
-
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
@Mail.ru