Skip to content

Commit 2d97ed5

Browse files
committed
1.3: restruct for splint
1 parent 368bf11 commit 2d97ed5

File tree

3 files changed

+59
-51
lines changed

3 files changed

+59
-51
lines changed

CHANGELOG

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ https://github.com/zagalskij/HammingCode
33
1.3: zvezdochiot <[email protected]>
44

55
* magic word
6+
* restruct for splint
67

78
1.2: zvezdochiot <[email protected]>
89

src/hammingdec.c

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33

44
void kontrolbit(int *kod, int lengh)
55
{
6-
int i = 0, summ = 0, errorpos = 0;
6+
int i = 0, summ = 0, errorpos = 0, start, g;
77
while(i < lengh)
88
{
99
if((i+1 == 1)||(i+1 == 2)||(i+1 == 4)||(i+1 == 8)||(i+1 == 16)||(i+1 == 32)||(i+1 == 64))
1010
{
11-
int start = i;
11+
start = i;
1212
while(start < lengh)
1313
{
14-
for(int g = 0; g < i + 1; g++)
14+
for(g = 0; g < i + 1; g++)
1515
{
1616
if((start+g != i)&&(start+g < lengh))
1717
summ += kod[start+g];
@@ -64,18 +64,21 @@ int todec(int *byte)
6464

6565
int main(int argc, char *argv[])
6666
{
67+
FILE *f, *t;
68+
int byte[8];
69+
int c = 8;
70+
char mc[7] = {"\0"};
71+
int x, i, kod[71], g;
72+
int tmp[4], flag, schet;
6773
if (argc < 3)
6874
{
6975
printf("Usage: %s input.hmng output.file [8/12/16/32/64]\n", argv[0]);
7076
return 0;
7177
}
72-
FILE *f = fopen(argv[1], "rb");
73-
FILE *t = fopen(argv[2], "w+b");
74-
int byte[8];
78+
f = fopen(argv[1], "rb");
79+
t = fopen(argv[2], "w+b");
7580
printf("coded: %s\n", argv[1]);
7681
printf("file: %s\n", argv[2]);
77-
int c = 8;
78-
char mc[7] = {"\0"};
7982
fread(mc, 6, 1, f);
8083
if (sscanf(mc, "HECC%d", &c) <= 0)
8184
{
@@ -85,12 +88,12 @@ int main(int argc, char *argv[])
8588
printf("decoding length: %d\n\n", c);
8689
if(c == 8)
8790
{
88-
int x, kod[12], g = 0;
91+
g = 0;
8992
x = fgetc(f);
9093
while(x != EOF)
9194
{
9295
tobit(x, byte);
93-
for(int i = 0; i < 8; i++)
96+
for(i = 0; i < 8; i++)
9497
{
9598
if((i != 0)&&(i != 1))
9699
kod[g++] = byte[i];
@@ -99,7 +102,7 @@ int main(int argc, char *argv[])
99102
{
100103
kontrolbit(kod, 12);
101104
g = 0;
102-
for(int i = 0; i < 12; i++)
105+
for(i = 0; i < 12; i++)
103106
{
104107
if((i+1 != 1)&&(i+1 != 2)&&(i+1 != 4)&&(i+1 != 8))
105108
{
@@ -115,7 +118,9 @@ int main(int argc, char *argv[])
115118
else if(c == 12)
116119
{
117120
fprintf(stderr, "WARNING: with coding length %d end of file is not always processed correctly\n\n", c);
118-
int tmp[4], x, kod[17], g = 0, flag = 0, schet = 0;
121+
g = 0;
122+
flag = 0;
123+
schet = 0;
119124
x = fgetc(f);
120125
while(x != EOF)
121126
{
@@ -129,13 +134,13 @@ int main(int argc, char *argv[])
129134
g = 0;
130135
if(flag == 1) //костыль
131136
{
132-
for(int i = 0; i < 4; i++)
137+
for(i = 0; i < 4; i++)
133138
{
134139
byte[g++] = tmp[i];
135140
}
136141
flag = 0;
137142
}
138-
for(int i = 0; i < 17; i++)
143+
for(i = 0; i < 17; i++)
139144
{
140145
if((i+1 != 1)&&(i+1 != 2)&&(i+1 != 4)&&(i+1 != 8)&&(i+1 != 16)&&(i+1 != 32)&&(i+1 != 64))
141146
byte[g++] = kod[i];
@@ -145,7 +150,7 @@ int main(int argc, char *argv[])
145150
g = 0;
146151
if((flag == 0)&&(schet%2 == 0)) //костыль 2
147152
{
148-
for(int i = 12; i < 17; i++)
153+
for(i = 12; i < 17; i++)
149154
{
150155
if(i+1 != 16)
151156
{
@@ -166,12 +171,12 @@ int main(int argc, char *argv[])
166171
else if(c == 16)
167172
{
168173
fprintf(stderr, "WARNING: with coding length %d end of file is not always processed correctly\n\n", c);
169-
int x, kod[21], g = 0;
174+
g = 0;
170175
x = fgetc(f);
171176
while(x != EOF)
172177
{
173178
tobit(x, byte);
174-
for(int i = 0; i < 8; i++)
179+
for(i = 0; i < 8; i++)
175180
{
176181
if(i != 0)
177182
kod[g++] = byte[i];
@@ -180,7 +185,7 @@ int main(int argc, char *argv[])
180185
{
181186
kontrolbit(kod, 21);
182187
g = 0;
183-
for(int i = 0; i < 21; i++)
188+
for(i = 0; i < 21; i++)
184189
{
185190
if((i+1 != 1)&&(i+1 != 2)&&(i+1 != 4)&&(i+1 != 8)&&(i+1 != 16)&&(i+1 != 32)&&(i+1 != 64))
186191
byte[g++] = kod[i];
@@ -197,12 +202,12 @@ int main(int argc, char *argv[])
197202
else if(c == 32)
198203
{
199204
fprintf(stderr, "WARNING: with coding length %d end of file is not always processed correctly\n\n", c);
200-
int x, kod[38], g = 0;
205+
g = 0;
201206
x = fgetc(f);
202207
while(x != EOF)
203208
{
204209
tobit(x, byte);
205-
for(int i = 0; i < 8; i++)
210+
for(i = 0; i < 8; i++)
206211
{
207212
if((i == 6)||(i == 7))
208213
kod[g++] = byte[i];
@@ -211,7 +216,7 @@ int main(int argc, char *argv[])
211216
{
212217
kontrolbit(kod, 38);
213218
g = 0;
214-
for(int i = 0; i < 38; i++)
219+
for(i = 0; i < 38; i++)
215220
{
216221
if((i+1 != 1)&&(i+1 != 2)&&(i+1 != 4)&&(i+1 != 8)&&(i+1 != 16)&&(i+1 != 32)&&(i+1 != 64))
217222
byte[g++] = kod[i];
@@ -228,12 +233,12 @@ int main(int argc, char *argv[])
228233
else if(c == 64)
229234
{
230235
fprintf(stderr, "WARNING: with coding length %d end of file is not always processed correctly\n\n", c);
231-
int x, kod[71], g = 0;
236+
g = 0;
232237
x = fgetc(f);
233238
while(x != EOF)
234239
{
235240
tobit(x, byte);
236-
for(int i = 0; i < 8; i++)
241+
for(i = 0; i < 8; i++)
237242
{
238243
if(i == 7)
239244
kod[g++] = byte[i];
@@ -242,7 +247,7 @@ int main(int argc, char *argv[])
242247
{
243248
kontrolbit(kod, 71);
244249
g = 0;
245-
for(int i = 0; i < 71; i++)
250+
for(i = 0; i < 71; i++)
246251
{
247252
if((i+1 != 1)&&(i+1 != 2)&&(i+1 != 4)&&(i+1 != 8)&&(i+1 != 16)&&(i+1 != 32)&&(i+1 != 64))
248253
byte[g++] = kod[i];

src/hammingenc.c

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33

44
void kontrolbit(int *kod, int lengh)
55
{
6-
int i = 0, summ = 0;
6+
int i = 0, summ = 0, start, g;
77
while(i < lengh)
88
{
99
if((i+1 == 1)||(i+1 == 2)||(i+1 == 4)||(i+1 == 8)||(i+1 == 16)||(i+1 == 32)||(i+1 == 64))
1010
{
11-
int start = i;
11+
start = i;
1212
while(start < lengh)
1313
{
14-
for(int g = 0; g < i + 1; g++)
14+
for(g = 0; g < i + 1; g++)
1515
{
1616
if((kod[start+g] != 2)&&(start+g < lengh))
1717
summ += kod[start+g];
@@ -60,32 +60,33 @@ int todec(int *byte)
6060

6161
int main(int argc, char *argv[])
6262
{
63+
FILE *f, *t;
64+
int byte[8];
65+
int c = 8;
66+
char mc[2];
67+
int x, kod[71], i, g, flag;
6368
if (argc < 3)
6469
{
6570
printf("Usage: %s input.file output.hmng [8/12/16/32/64]\n", argv[0]);
6671
return 0;
6772
}
68-
FILE *f = fopen(argv[1], "rb");
69-
FILE *t = fopen(argv[2], "w+b");
70-
int byte[8];
73+
f = fopen(argv[1], "rb");
74+
t = fopen(argv[2], "w+b");
7175
printf("file: %s\n", argv[1]);
7276
printf("coded: %s\n", argv[2]);
73-
int c = 8;
7477
if (argc > 3) c = atoi(argv[3]);
7578
printf("coding length: %d\n\n", c);
76-
char mc[2];
7779
fwrite("HECC", 4, 1, t);
7880
sprintf(mc, "%d", c);
7981
fwrite(mc, 2, 1, t);
8082
if(c == 8)
8183
{
82-
int x, kod[12];
8384
x = fgetc(f);
8485
while(x != EOF)
8586
{
8687
tobit(x, byte);
87-
int g = 0;
88-
for(int i = 0; i < 12; i++)
88+
g = 0;
89+
for(i = 0; i < 12; i++)
8990
{
9091
if((i != 0)&&(i != 1)&&(i != 3)&&(i != 7))
9192
kod[i] = byte[g++];
@@ -96,7 +97,7 @@ int main(int argc, char *argv[])
9697
g = 0;
9798
while(g < 12)
9899
{
99-
for(int i = 0; i < 8; i++)
100+
for(i = 0; i < 8; i++)
100101
{
101102
if((i == 0)||(i == 1))
102103
byte[i] = 0;
@@ -111,14 +112,15 @@ int main(int argc, char *argv[])
111112
else if(c == 12)
112113
{
113114
fprintf(stderr, "WARNING: with coding length %d end of file is not always processed correctly\n\n", c);
114-
int x, kod[17], g = 0, flag = 0;
115+
g = 0;
116+
flag = 0;
115117
x = fgetc(f);
116118
while(x != EOF)
117119
{
118120
tobit(x, byte);
119121
if(flag == 0)
120122
{
121-
for(int i = 0; i < 8; i++)
123+
for(i = 0; i < 8; i++)
122124
{
123125
if((g != 0)&&(g != 1)&&(g != 3)&&(g != 7)&&(g != 15)&&(g != 31)&&(g != 63))
124126
kod[g++] = byte[i];
@@ -131,7 +133,7 @@ int main(int argc, char *argv[])
131133
}
132134
x = fgetc(f);
133135
tobit(x, byte);
134-
for(int i = 0; i < 4; i++)
136+
for(i = 0; i < 4; i++)
135137
{
136138
if((g != 0)&&(g != 1)&&(g != 3)&&(g != 7)&&(g != 15)&&(g != 31)&&(g != 63))
137139
kod[g++] = byte[i];
@@ -147,7 +149,7 @@ int main(int argc, char *argv[])
147149
}
148150
else if(flag == 1)
149151
{
150-
for(int i = 4; i < 8; i++)
152+
for(i = 4; i < 8; i++)
151153
{
152154
if((g != 0)&&(g != 1)&&(g != 3)&&(g != 7)&&(g != 15)&&(g != 31)&&(g != 63))
153155
kod[g++] = byte[i];
@@ -160,7 +162,7 @@ int main(int argc, char *argv[])
160162
}
161163
x = fgetc(f);
162164
tobit(x, byte);
163-
for(int i = 0; i < 8; i++)
165+
for(i = 0; i < 8; i++)
164166
{
165167
if((g != 0)&&(g != 1)&&(g != 3)&&(g != 7)&&(g != 15)&&(g != 31)&&(g != 63))
166168
kod[g++] = byte[i];
@@ -179,7 +181,7 @@ int main(int argc, char *argv[])
179181
g = 0;
180182
while(g < 17)
181183
{
182-
for(int i = 0; i < 8; i++)
184+
for(i = 0; i < 8; i++)
183185
{
184186
if(i != 7)
185187
byte[i] = 0;
@@ -196,12 +198,12 @@ int main(int argc, char *argv[])
196198
else if(c == 16)
197199
{
198200
fprintf(stderr, "WARNING: with coding length %d end of file is not always processed correctly\n\n", c);
199-
int x, kod[21], g = 0;
201+
g = 0;
200202
x = fgetc(f);
201203
while(x != EOF)
202204
{
203205
tobit(x, byte);
204-
for(int i = 0; i < 8; i++)
206+
for(i = 0; i < 8; i++)
205207
{
206208
if((g != 0)&&(g != 1)&&(g != 3)&&(g != 7)&&(g != 15)&&(g != 31)&&(g != 63))
207209
kod[g++] = byte[i];
@@ -218,7 +220,7 @@ int main(int argc, char *argv[])
218220
g = 0;
219221
while(g < 21)
220222
{
221-
for(int i = 0; i < 8; i++)
223+
for(i = 0; i < 8; i++)
222224
{
223225
if(i == 0)
224226
byte[i] = 0;
@@ -235,12 +237,12 @@ int main(int argc, char *argv[])
235237
else if(c == 32)
236238
{
237239
fprintf(stderr, "WARNING: with coding length %d end of file is not always processed correctly\n\n", c);
238-
int x, kod[38], g = 0;
240+
g = 0;
239241
x = fgetc(f);
240242
while(x != EOF)
241243
{
242244
tobit(x, byte);
243-
for(int i = 0; i < 8; i++)
245+
for(i = 0; i < 8; i++)
244246
{
245247
if((g != 0)&&(g != 1)&&(g != 3)&&(g != 7)&&(g != 15)&&(g != 31)&&(g != 63))
246248
kod[g++] = byte[i];
@@ -257,7 +259,7 @@ int main(int argc, char *argv[])
257259
g = 0;
258260
while(g < 38)
259261
{
260-
for(int i = 0; i < 8; i++)
262+
for(i = 0; i < 8; i++)
261263
{
262264
if((i != 6)&&(i != 7))
263265
byte[i] = 0;
@@ -274,12 +276,12 @@ int main(int argc, char *argv[])
274276
else if(c == 64)
275277
{
276278
fprintf(stderr, "WARNING: with coding length %d end of file is not always processed correctly\n\n", c);
277-
int x, kod[71], g = 0;
279+
g = 0;
278280
x = fgetc(f);
279281
while(x != EOF)
280282
{
281283
tobit(x, byte);
282-
for(int i = 0; i < 8; i++)
284+
for(i = 0; i < 8; i++)
283285
{
284286
if((g != 0)&&(g != 1)&&(g != 3)&&(g != 7)&&(g != 15)&&(g != 31)&&(g != 63))
285287
kod[g++] = byte[i];
@@ -296,7 +298,7 @@ int main(int argc, char *argv[])
296298
g = 0;
297299
while(g < 71)
298300
{
299-
for(int i = 0; i < 8; i++)
301+
for(i = 0; i < 8; i++)
300302
{
301303
if(i != 7)
302304
byte[i] = 0;

0 commit comments

Comments
 (0)