gpt4 book ai didi

c - 我的程序没有给我正确的答案... C

转载 作者:行者123 更新时间:2023-11-30 20:57:10 25 4
gpt4 key购买 nike

希望你能帮帮我。我已经写好了所有内容并进行了编译,但我没有得到我想要的答案。

用户输入 1 和 0 的代码,然后我的程序会找到正确的序列,例如......

如果用户输入1000110错误位应该是6正确的代码应该是1100110。

我最初使用的是 char,但它总是在末尾打印出随机的东西,而不是 1 和 0。

谁能帮帮我吗?

如果需要的话我会进一步解释......

*编辑我添加了我的原始代码。我尝试过,但没有成功。看起来,使用下面的代码,用户输入的 1 和 0 没有被放入数组中,或者它们只是无法正确打印......我不知道该怎么办。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

char *code = NULL;
int length, parity,slength;
void param(){
printf("Enter the maximum length:");
scanf("%d",&length);
printf("Enter the parity (0=even, 1=odd):");
scanf("%d",&parity);
code = (char*)malloc(length *sizeof(char));
return;
}
void check(){
int error,p,q=0,j,k,l,u=0,b=0,h,total;
char *hCode = NULL;
char *fCode = NULL;
hCode = (char*)malloc(length *sizeof(char));
fCode = (char*)malloc(length *sizeof(char));
printf("Enter the Hamming code:");
scanf("%lengths",&code);
slength = strlen(code);
// printf("%d",&slength);
// int z;
// for(z=0;z<slength;z++){
// printf("%s\n",&code[z]);
// }
for (p=slength+1;p>=0;p--){
hCode[p] = code[q];
q++;
}
for (j=1;j<=log2(length);j*=2){
int bit;
for (k=j;k<=length;k+=j*2)
for (l=0;l<j||k+l<=length;l++){
if(k+1!=k){
bit^=hCode[k+l];
fCode[k+1] = hCode[k+1];
}
fCode[j] = bit;
}
}
for (u=1;u<=slength+1;u++){
if (hCode[u]!=fCode[u]){
error = u;
b=u;
printf("There is an error in bit: %d\n",error);
}
}
if (b==0)
printf("There is no bit error\n");
b=0;
printf("The corrected Hamming code is: ");
for (h=slength;h>0;h--){
printf("%c",&fCode[h]);
}
printf("\n");
return;
}

int main(){
int choice;
while (choice !=3){
printf("\n");
printf(" Error detection/correction:\n");
printf("------------------------------\n");
printf("1) Enter parameters\n");
printf("2) Check Hamming code\n");
printf("3) Exit\n");
printf("\nEnter selection: ");
scanf("%d",&choice);
printf("\n");
if (choice == 1)
param();
else if (choice == 2)
check();
else{
printf("\n");
printf("Goodbye. Have a nice day");
}
}
return 1;
}

最佳答案

scanf("%lengthd",code); 不会将数组读入 code;它甚至不是有效的 scanf 语法。您应该循环读取字符:

for (p=0;p<length;p++){
code[p] = getc() - '0';
}

附注还有一些其他问题。例如,sizeof(code)/sizeof(int)不能获取数组的大小,而仅获取sizeof(int*)/sizeof( int)。您可能只需要length

关于c - 我的程序没有给我正确的答案... C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com