| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1389 人关注过本帖
标题:看看这个多项式加法怎么出错了呢
只看楼主 加入收藏
cscscscs
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-3-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
看看这个多项式加法怎么出错了呢
不要嫌我写的不好啊
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct {
    int data[100];
    int length;
}sqlist;

void display(int *p)
{
    int i=0;
    while(p[i]!=0)
        printf("[ %d %d ] ",p[i++],p[i++]);
    printf("\n");
}

void init(sqlist *&L)
{
    int i;
    L=(sqlist*)malloc(sizeof(sqlist));
    for(i=0;i<100;i++)
        L->data[i]=0;
    L->length=0;
}

void add(sqlist *&L)
{
    int num,index;

    while(1) {
        scanf("%d",&num);
        scanf("%d",&index);
        if(index<0)
            break;
        else
            L->data[index]+=num;
    }
    
    while(1) {
        scanf("%d",&num);
        scanf("%d",&index);
        if(index<0)
            break;
        else
            L->data[index]+=num;
    }
    
}

void save(sqlist *L,int *&p)
{
    int i,j;
    p=(int*) malloc( 202*sizeof(int) );
    for(j=0;j<100;j+=2) {
        for(i=99;i>=0;i--) {
            if(L->data[i]!=0) {
                p[j]=L->data[i];
                p[j+1]=i;
            }}}    
}



int main()
{
    int i,n;
    sqlist *L;
    scanf("%d",&n);
    int *parr[100];
    for(i=0;i<n;i++) {
        init(L);
        add(L);
        save(L,parr[i]);
    }
    for(i=0;i<n;i++)
        display(parr[i]);
        free(parr[i]);
    return 0;
}
搜索更多相关主题的帖子: 多项式 
2016-03-24 12:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:7 
要先学会怎么提问

a. 你想实现什么功能
b. 代码
c. 编译失败,贴出编译器给出的错误信息
d. 运行结果不符合你的预期,贴出 你的输入实际输出期待输出
2016-03-24 12:48
cscscscs
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-3-24
收藏
得分:0 
回复 2楼 rjsp
我调试发现save那个函数有错,但是不知道怎么改
编译通过了,但是结果有误



输出
输出包括n行,每行为1组多项式相加的结果。
在每一行的输出结果中,多项式的每一项用“[x y]”形式的字符串表示,x是该项的系数、y 是该项的幂数。要求按照每一项的幂从高到低排列,即先输出幂数高的项、再输出幂数低的项。
系数为零的项不要输出。

样例输入
2
-1 17 2 20 5 9 -7 7 10 4 22 2 -15 0 16 5 0 -1
2 19 7 7 3 17 4 4 15 10 -10 5 13 2 -7 0 8 -8
-1 17 2 23 22 2 6 8 -4 7 -18 0 1 5 21 4 0 -1
12 7 -7 5 3 17 23 4 15 10 -10 5 13 5 2 19 9 -7
样例输出
[ 2 20 ] [ 2 19 ] [ 2 17 ] [ 15 10 ] [ 5 9 ] [ 6 5 ] [ 14 4 ] [ 35 2 ] [ -22 0 ]
[ 2 23 ] [ 2 19 ] [ 2 17 ] [ 15 10 ] [ 6 8 ] [ 8 7 ] [ -3 5 ] [ 44 4 ] [ 22 2 ] [ -18 0 ]
提示
第一组样例数据的第二行末尾的8 -8,因为幂次-8为负数,所以这一行数据结束,8 -8不要参与计算。
2016-03-24 13:54
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:7 
想要实现啥功能没看明白,先改了编译错误:
#include<stdio.h>
#include<stdlib.h>
typedef struct {
    int data[100];
    int length;
}sqlist;

void display(int *p)
{
    int i = 0;
    while (p[i] != 0)
        printf("[ %d %d ] ", p[i++], p[i++]);
    printf("\n");
}

void init(sqlist *L)
{
    int i;
    L = (sqlist*)malloc(sizeof(sqlist));
    for (i = 0; i<100; i++)
        L->data[i] = 0;
    L->length = 0;
}

void add(sqlist *L)
{
    int num, index;

    while (1) {
        scanf("%d", &num);
        scanf("%d", &index);
        if (index<0)
            break;
        else
            L->data[index] += num;
    }

    while (1) {
        scanf("%d", &num);
        scanf("%d", &index);
        if (index<0)
            break;
        else
            L->data[index] += num;
    }

}

void save(sqlist *L, int *p)
{
    int i, j;
    p = (int*)malloc(202 * sizeof(int));
    for (j = 0; j<100; j += 2) {
        for (i = 99; i >= 0; i--) {
            if (L->data[i] != 0) {
                p[j] = L->data[i];
                p[j + 1] = i;
            }
        }
    }
}



int main()
{
    int i, n;
    sqlist *L = NULL;
    scanf("%d", &n);
    int *parr[100];
    for (i = 0; i<n; i++) {
        init(L);
        add(L);
        save(L, parr[i]);
    }
    for (i = 0; i<n; i++)
        display(parr[i]);
    free(parr[i]);
    return 0;
}
2016-03-24 14:22
cscscscs
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-3-24
收藏
得分:0 
回复 4楼 grmmylbs
就是输入n组数据,每组数据是两个多项式,依次输入系数指数,直到指数为负数,将多项式相加,最后输出n个合并后的多项式
2016-03-24 14:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
不看你的代碼錯在哪,你選用鏈表來做就是給自己找麻煩。

授人以渔,不授人以鱼。
2016-03-24 15:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
一個多項式,頂多就100的次冪,不會成千上萬,這麽少的數據量使用鏈表結構,第一檢索和處理速度慢,第二耗內存,都不知道爲什麽網上流傳都是用鏈表做的,優勢在哪裏?

授人以渔,不授人以鱼。
2016-03-24 16:13
快速回复:看看这个多项式加法怎么出错了呢
数据加载中...
 
   



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

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