鱼C论坛

 找回密码
 立即注册
查看: 1920|回复: 8

[已解决]大神们我又来问问题了

[复制链接]
发表于 2017-4-25 21:27:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本小白特爱学习
真的
这道题我一星期没做出来了  茶不思饭不想   都饿瘦了
好了不bb了  上面都是假的

1多项式加法(5分)
题目内容:
一个多项式可以表达为x的各次幂与系数乘积的和,比如:
2x6+3x5+12x3+6x+20
现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。
程序要处理的幂最大为100。

输入格式:
总共要输入两个多项式,每个多项式的输入格式如下:
每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。
注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。

输出格式:
从最高幂开始依次降到0幂,如:
2x6+3x5+12x3-6x+20
注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。

输入样例:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20

输出样例:
4x6+6x5+12x3+12x2+12x+40

题就是这样的,主要是想了解这题该怎么解   求个详细(特别详细的那种.)的解题方法
谢谢各位大神了  有劳了
最佳答案
2017-4-26 23:19:15
小小小菜鸟. 发表于 2017-4-26 22:10
我不是来要答案的啊   上次拿题的代码我也没错最后是因为一个数据范围
而检测程序好像不需要范围
这次 ...
#include <stdio.h>

typedef struct
{
        int item[2]; // 第0个表示幂次,第1个表示该幂次的系数
} Polynomial;

int main(void)
{
        Polynomial polynomial1[100];
        Polynomial polynomial2[100];
        Polynomial result[100];
        int i, j, k;
        int i1, j1, k1;
        char op;

        i = 0;
        while(1)
        {
                scanf("%d %d", &polynomial1[i].item[0], &polynomial1[i].item[1]);
                i++;

                if(polynomial1[i - 1].item[0] == 0)
                {
                        break;
                }
        }

        j = 0;
        while(1)
        {
                scanf("%d %d", &polynomial2[j].item[0], &polynomial2[j].item[1]);
                j++;

                if(polynomial2[j - 1].item[0] == 0)
                {
                        break;
                }
        }

        k = 0;
        i1 = 0;
        j1 = 0;
        while(1)
        {
                if(i1 == i || j1 == j)
                {
                        break;
                }

                if(polynomial1[i1].item[0] > polynomial2[j1].item[0])
                {
                        result[k].item[0] = polynomial1[i1].item[0];
                        result[k].item[1] = polynomial1[i1].item[1];
                        k++;
                        i1++;
                }
                else if(polynomial1[i1].item[0] == polynomial2[j1].item[0])
                {
                        result[k].item[0] = polynomial1[i1].item[0];
                        result[k].item[1] = polynomial1[i1].item[1] + polynomial2[j1].item[1];
                        k++;
                        i1++;
                        j1++;
                }
                else
                {
                        result[k].item[0] = polynomial2[j1].item[0];
                        result[k].item[1] = polynomial2[j1].item[1];
                        k++;
                        j1++;
                }
        }

        k1 = 0;
        op = ' ';
        while(1)
        {
                if(k1 == k)
                {
                        break;
                }

                if(result[k1].item[1] == 0)
                {
                        k1++;
                        continue;
                }

                if(op != ' ')
                        putchar(op);
                op = '+';

                if(result[k1].item[0] == 0)
                {
                        printf("%d", result[k1].item[1]);
                        k1++;
                        continue;
                }


                if(result[k1].item[0] == 1)
                {
                        printf("%d", result[k1].item[1]);
                        k1++;
                        putchar('x');
                        continue;
                }

                printf("%d", result[k1].item[1]);
                putchar('x');
                printf("%d", result[k1].item[0]);
                k1++;
        }
        putchar('\n');

        return 0;
}
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
4x6+6x5+12x3+12x2+12x+40
请按任意键继续. . .

这是我写的,不要指望这段代码可以通过那个测试,因为我也不知道哪里错了

程序本来就不应该是通用的,而应该是专用的,我写的代码通过了我的测试,
输入
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20

输出
4x6+6x5+12x3+12x2+12x+40

这样就行了,如果你非要说我写的代码错了,可以,告诉我,哪里错了,我有兴趣的话,会改正,但是
无标题.png
我看不懂这样的报告,结果错误?究竟输入了什么,导致的结果错误?
不告诉我这个,我没办法调试我的程序(程序是调试出来的)

我真的不建议你继续跟着这个网站学习,这样只会浪费你的时间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-4-25 21:30:45 | 显示全部楼层
大神们都睡觉了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-25 23:15:31 | 显示全部楼层
这道题是哪里的?
可以截一下图吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-26 10:03:00 | 显示全部楼层
人造人 发表于 2017-4-25 23:15
这道题是哪里的?
可以截一下图吗

版主又是你啊   还是上次那个网站上的题
http://www.icourse163.org/learn/ ... /ojhw?id=1002601963
第七周数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-26 16:43:27 | 显示全部楼层
小小小菜鸟. 发表于 2017-4-26 10:03
版主又是你啊   还是上次那个网站上的题
http://www.icourse163.org/learn/ZJU-199001#/learn/ojhw?id=1 ...

http://blog.csdn.net/codeforcer/article/details/53284493
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-26 22:10:18 | 显示全部楼层
人造人 发表于 2017-4-26 16:43
http://blog.csdn.net/codeforcer/article/details/53284493

我不是来要答案的啊   上次拿题的代码我也没错最后是因为一个数据范围
而检测程序好像不需要范围
这次问题其实最主要的是想知道该怎么做
就是弄懂这道题这样
不过还是谢谢版主了  辛苦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-26 23:19:15 | 显示全部楼层    本楼为最佳答案   
小小小菜鸟. 发表于 2017-4-26 22:10
我不是来要答案的啊   上次拿题的代码我也没错最后是因为一个数据范围
而检测程序好像不需要范围
这次 ...
#include <stdio.h>

typedef struct
{
        int item[2]; // 第0个表示幂次,第1个表示该幂次的系数
} Polynomial;

int main(void)
{
        Polynomial polynomial1[100];
        Polynomial polynomial2[100];
        Polynomial result[100];
        int i, j, k;
        int i1, j1, k1;
        char op;

        i = 0;
        while(1)
        {
                scanf("%d %d", &polynomial1[i].item[0], &polynomial1[i].item[1]);
                i++;

                if(polynomial1[i - 1].item[0] == 0)
                {
                        break;
                }
        }

        j = 0;
        while(1)
        {
                scanf("%d %d", &polynomial2[j].item[0], &polynomial2[j].item[1]);
                j++;

                if(polynomial2[j - 1].item[0] == 0)
                {
                        break;
                }
        }

        k = 0;
        i1 = 0;
        j1 = 0;
        while(1)
        {
                if(i1 == i || j1 == j)
                {
                        break;
                }

                if(polynomial1[i1].item[0] > polynomial2[j1].item[0])
                {
                        result[k].item[0] = polynomial1[i1].item[0];
                        result[k].item[1] = polynomial1[i1].item[1];
                        k++;
                        i1++;
                }
                else if(polynomial1[i1].item[0] == polynomial2[j1].item[0])
                {
                        result[k].item[0] = polynomial1[i1].item[0];
                        result[k].item[1] = polynomial1[i1].item[1] + polynomial2[j1].item[1];
                        k++;
                        i1++;
                        j1++;
                }
                else
                {
                        result[k].item[0] = polynomial2[j1].item[0];
                        result[k].item[1] = polynomial2[j1].item[1];
                        k++;
                        j1++;
                }
        }

        k1 = 0;
        op = ' ';
        while(1)
        {
                if(k1 == k)
                {
                        break;
                }

                if(result[k1].item[1] == 0)
                {
                        k1++;
                        continue;
                }

                if(op != ' ')
                        putchar(op);
                op = '+';

                if(result[k1].item[0] == 0)
                {
                        printf("%d", result[k1].item[1]);
                        k1++;
                        continue;
                }


                if(result[k1].item[0] == 1)
                {
                        printf("%d", result[k1].item[1]);
                        k1++;
                        putchar('x');
                        continue;
                }

                printf("%d", result[k1].item[1]);
                putchar('x');
                printf("%d", result[k1].item[0]);
                k1++;
        }
        putchar('\n');

        return 0;
}
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
4x6+6x5+12x3+12x2+12x+40
请按任意键继续. . .

这是我写的,不要指望这段代码可以通过那个测试,因为我也不知道哪里错了

程序本来就不应该是通用的,而应该是专用的,我写的代码通过了我的测试,
输入
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20

输出
4x6+6x5+12x3+12x2+12x+40

这样就行了,如果你非要说我写的代码错了,可以,告诉我,哪里错了,我有兴趣的话,会改正,但是
无标题.png
我看不懂这样的报告,结果错误?究竟输入了什么,导致的结果错误?
不告诉我这个,我没办法调试我的程序(程序是调试出来的)

我真的不建议你继续跟着这个网站学习,这样只会浪费你的时间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-30 17:40:51 | 显示全部楼层
人造人 发表于 2017-4-26 23:19
这是我写的,不要指望这段代码可以通过那个测试,因为我也不知道哪里错了

程序本来就不应该是 ...

应该没有考虑输入数是0  负数等情况才错的吧
我就是做做这个网站上的题    弄懂题该怎么写代码这样子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 18:37:54 | 显示全部楼层
小小小菜鸟. 发表于 2017-4-30 17:40
应该没有考虑输入数是0  负数等情况才错的吧
我就是做做这个网站上的题    弄懂题该怎么写代码这样子

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 06:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表