このコードはコード ブロックでは機能しますが、学校のオンライン コンパイラでは機能しません。
長さ S のメモリが与えられます。各単一ビットは、0 から S-1 までのインデックスでマークできます。最初はメモリは空で、どこでも 0 です。
最初の行では、3 つの整数 (N、L、S) を入力する必要があります。次の N 行には、与えられた長さ L のデータがあり、最小距離 D=4 のハミング コードでコード化されています。また、正しく受信された場合にハミング コードをコピーするメモリ内の位置を示す正の整数。
間違いがないか確認し、間違いがなければメモリ内のコードをコピーし、1 つでも間違いがあればそれを修正してコピーし、2 つ以上の間違いがあれば何もしません。メモリの最終的な内容を印刷します。
入力例:
1 5 128
0011010111 2
出力例:
00101010000000
(ゼロは 128 個未満なので、すべてを入力することはありません)。:)
入力例 (2):
10 4 100
01111000 15
00110011 62
01110001 36
01101001 61
11100001 60
10101010 1
11111111 47
01101111 85
11111110 2
01010101 44
出力例 (2):
0111110000000001100000000000000000000000000000101110000000001000010000000000000000000000000000000000
私の解決策(最初の例の場合):
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[100], b[5], c[200], N,L,S;
int i,j,k,r;
scanf("%d %d %d", &N, &L, &S);
for(i=0; i<N; i++)
{
int p1,p2,p3,p4;
for(j=1; j<L+7; j++)
{
scanf("%d", &a[j]);
}
p1 = (a[1]+a[3]+a[5]+a[7]+a[9])%2;
p2 = (a[2]+a[3]+a[6]+a[7])%2;
p3 = (a[4]+a[5]+a[6]+a[7])%2;
p4 = (a[8]+a[9]+a[10])%2;
if(p1==0 && p2==0 && p3==0 && p4==1) //first position
{
if(a[1]==0) a[1]=1;
else if(a[1]==1) a[1]=0;
}
if(p1==0 && p2==0 && p3==1 && p4==0) //second position
{
if(a[2]==0) a[2]=1;
else if(a[2]==1) a[2]=0;
}
if(p1==0 && p2==0 && p3==1 && p4==1) //third position
{
if(a[3]==0) a[3]=1;
else if(a[3]==1) a[3]=0;
}
if(p1==0 && p2==1 && p3==0 && p4==0) //fourth position
{
if(a[4]==0) a[4]=1;
else if(a[4]==1) a[4]=0;
}
if(p1==0 && p2==1 && p3==0 && p4==1) //fifth position
{
if(a[5]==0) a[5]=1;
else if(a[5]==1) a[5]=0;
}
if(p1==0 && p2==1 && p3==1 && p4==0) //sixth position
{
if(a[6]==0) a[6]=1;
else if(a[6]==1) a[6]=0;
}
if(p1==0 && p2==1 && p3==1 && p4==1) //seventh position
{
if(a[7]==0) a[7]=1;
else if(a[7]==1) a[7]=0;
}
if(p1==1 && p2==0 && p3==0 && p4==0) //eight position
{
if(a[8]==0) a[8]=1;
else if(a[8]==1) a[8]=0;
}
if(p1==1 && p2==0 && p3==0 && p4==1) //ninth position
{
if(a[9]==0) a[9]=1;
else if(a[9]==1) a[9]=0;
}
b[0]=a[3];
b[1]=a[5];
b[2]=a[6];
b[3]=a[7];
b[4]=a[9];
for(k=0; k<S-L; k++)
{
if(k==2)
{
for(r=0; r<5; r++)
printf("%d", b[r]);
}
else c[i]=0; printf("%d", c[i]);
}
}
return 0;
}