| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 356 人关注过本帖
标题:两个程序用了同一个算法,结果一个没错,一个输出有错。
只看楼主 加入收藏
c821101017
Rank: 2
等 级:论坛游民
帖 子:33
专家分:10
注 册:2011-9-21
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
两个程序用了同一个算法,结果一个没错,一个输出有错。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
int r[5];
/*************多项式相乘模块****************/
void pmul(int k[],int x,int t[],int y,int n[],int z)
{
    int i,j;
    for(i=0;i<z;i++)
        n[i]=0;
    for(i=0;i<x;i++)
        for(j=0;j<y;j++)
            n[i+j]=n[i+j]+k[i]*t[j];
    return;
}
/*************多项式相除模块**************/
void pdiv(int n[],int x,int m[],int y,int r[],int l)
{
    int i,k;
    for(i=x-1;i>=0;i--)
        if(n[i]!=0)
        {
            k=i;
            printf("%d\n",k);
            break;
        }
    while(k>=5)
    {
        for(i=k;i>=k-5;i--)
        {
            n[i]=n[i]^m[y-1-k+i];
        }
        for(i=k;i>=k-5;i--)
            if(n[i]!=0)
            {
                k=i;
//                printf("%d\n",k);
                break;
            }
    }
    for(i=l-1;i>=0;i--)
        r[i]=n[i];
    return;
}
void main()
{
    int i;
    char flag='Y';
    while(flag=='Y')
    {
        int n[15];//整个码长,用于存放多项式相乘后各项的系数.
        int k[10];//信息码系数数组.
        int t[6]={0,0,0,0,0,1};//与信息码多项式相乘的多项式的各项的系数,即x^5.
        FILE *fp;
        fp=fopen("a.txt","w");
        srand(time(0));
        printf("The Cofficient of the information code is: \n");
        for(i=0;i<10;i++)
        {
            k[i]=rand()%2;
            printf("%d",k[i]);
        }
        printf("\n");
        pmul(k,10,t,6,n,15);//多项式相乘模块的调用.
        printf("The Cofficient of the total code is: \n");
        for(i=0;i<15;i++)
        {
            printf("%d",n[i]);
            fprintf(fp,"%d",n[i]);
        }
        fprintf(fp,"\n");
        printf("\n");
        fclose(fp);
        int m[6]={1,0,1,0,1,1};
//        static int r[5];
        pdiv(n,15,m,6,r,5);//多项式相除模块的调用.
        printf("The Cofficient of the array r is: \n");
        for(i=0;i<=4;i++)
            printf("%d",r[i]);
        printf("\n");
        /**********将文件中的数据读出来**********/
        fp=fopen("a.txt","rb");
        printf("The Cofficient that we read from the file is: \n");
//        fscanf(fp,"%s",n);//读出文件中的二进制代码.
        for(i=0;i<15;i++)
        {
            if(fscanf(fp,"%c",&n[i])==EOF)//改为每次读出一个字符.
                break;
            printf("%c",n[i]);//同样以字符格式输出.
        }
        printf("\n");
        for(i=0;i<15;i++)
        {
            n[i]=n[i]-48;//将字符型转换成整形.
            printf("%d",n[i]);
        }
        printf("\n");
        fclose(fp);
        /**********将余多项式中的各项系数赋值给信息多项式中的系数************/
        for(i=0;i<=4;i++)
            n[i]=r[i];
        printf("The Cofficient that we need lastly is: \n");
        for(i=0;i<15;i++)
            printf("%d",n[i]);
        printf("\n\n");
        printf("Do you want to continue?If yes,press Y,if not,press N.\n");
        scanf("%c",&flag);
        getchar();
        if(flag=='Y')
            continue;
        else break;
    }
}
这个程序输出结果是正确的。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int s[5];
void pdiv(int n[],int x,int m[],int y,int s[],int z)
{
    int i,k;
    for(i=x-1;i>=0;i--)
        if(n[i]!=0)
        {
            k=i;
            printf("%d\n",k);
            break;
        }
    while(k>=5)
    {
        for(i=k;i>=k-5;i--)
        {
            n[i]=n[i]^m[y-1-k+i];
        }
        for(i=k;i>=k-5;i--)
            if(n[i]!=0)
            {
                k=i;
        //        printf("%d\n",k);
                break;
            }
    }
    for(i=z-1;i>=0;i--)
        s[i]=n[i];
    return;
}
void main()
{
    int i;
    int n[15];
    int m[6]={1,0,1,0,1,1};
    srand(time(0));
    /***********随机产生接收到的码组**********/
    for(i=0;i<14;i++)
    {
        n[i]=rand()%2;
        printf("%d",n[i]);
    }
    printf("\n");
    int s[5];
    pdiv(n,15,m,6,s,5);
    printf("************\n");
    for(i=0;i<=4;i++)
        printf("%d",s[i]);
    printf("\n");
}
而这个结果输出有误,这两个程序都用到了多项式相除模块。求指教……
2011-09-22 15:29
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:10 
看不明白了!

   唯实惟新 至诚致志
2011-09-22 16:43
c821101017
Rank: 2
等 级:论坛游民
帖 子:33
专家分:10
注 册:2011-9-21
收藏
得分:0 
回复 2楼 qq1023569223
    运行一下就什么都明白了,我是真不知道错在哪了
2011-09-22 16:47
c821101017
Rank: 2
等 级:论坛游民
帖 子:33
专家分:10
注 册:2011-9-21
收藏
得分:0 
    望大家帮我看看,找找错误点……先谢了
2011-09-22 19:10
快速回复:两个程序用了同一个算法,结果一个没错,一个输出有错。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023246 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved