鱼C论坛

 找回密码
 立即注册
查看: 1884|回复: 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
我不是来要答案的啊   上次拿题的代码我也没错最后是因为一个数据范围
而检测程序好像不需要范围
这次 ...
  1. #include <stdio.h>

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

  6. int main(void)
  7. {
  8.         Polynomial polynomial1[100];
  9.         Polynomial polynomial2[100];
  10.         Polynomial result[100];
  11.         int i, j, k;
  12.         int i1, j1, k1;
  13.         char op;

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

  19.                 if(polynomial1[i - 1].item[0] == 0)
  20.                 {
  21.                         break;
  22.                 }
  23.         }

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

  29.                 if(polynomial2[j - 1].item[0] == 0)
  30.                 {
  31.                         break;
  32.                 }
  33.         }

  34.         k = 0;
  35.         i1 = 0;
  36.         j1 = 0;
  37.         while(1)
  38.         {
  39.                 if(i1 == i || j1 == j)
  40.                 {
  41.                         break;
  42.                 }

  43.                 if(polynomial1[i1].item[0] > polynomial2[j1].item[0])
  44.                 {
  45.                         result[k].item[0] = polynomial1[i1].item[0];
  46.                         result[k].item[1] = polynomial1[i1].item[1];
  47.                         k++;
  48.                         i1++;
  49.                 }
  50.                 else if(polynomial1[i1].item[0] == polynomial2[j1].item[0])
  51.                 {
  52.                         result[k].item[0] = polynomial1[i1].item[0];
  53.                         result[k].item[1] = polynomial1[i1].item[1] + polynomial2[j1].item[1];
  54.                         k++;
  55.                         i1++;
  56.                         j1++;
  57.                 }
  58.                 else
  59.                 {
  60.                         result[k].item[0] = polynomial2[j1].item[0];
  61.                         result[k].item[1] = polynomial2[j1].item[1];
  62.                         k++;
  63.                         j1++;
  64.                 }
  65.         }

  66.         k1 = 0;
  67.         op = ' ';
  68.         while(1)
  69.         {
  70.                 if(k1 == k)
  71.                 {
  72.                         break;
  73.                 }

  74.                 if(result[k1].item[1] == 0)
  75.                 {
  76.                         k1++;
  77.                         continue;
  78.                 }

  79.                 if(op != ' ')
  80.                         putchar(op);
  81.                 op = '+';

  82.                 if(result[k1].item[0] == 0)
  83.                 {
  84.                         printf("%d", result[k1].item[1]);
  85.                         k1++;
  86.                         continue;
  87.                 }


  88.                 if(result[k1].item[0] == 1)
  89.                 {
  90.                         printf("%d", result[k1].item[1]);
  91.                         k1++;
  92.                         putchar('x');
  93.                         continue;
  94.                 }

  95.                 printf("%d", result[k1].item[1]);
  96.                 putchar('x');
  97.                 printf("%d", result[k1].item[0]);
  98.                 k1++;
  99.         }
  100.         putchar('\n');

  101.         return 0;
  102. }
复制代码

  1. 6 2
  2. 5 3
  3. 3 12
  4. 1 6
  5. 0 20
  6. 6 2
  7. 5 3
  8. 2 12
  9. 1 6
  10. 0 20
  11. 4x6+6x5+12x3+12x2+12x+40
  12. 请按任意键继续. . .
复制代码


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

程序本来就不应该是通用的,而应该是专用的,我写的代码通过了我的测试,
输入
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
我不是来要答案的啊   上次拿题的代码我也没错最后是因为一个数据范围
而检测程序好像不需要范围
这次 ...
  1. #include <stdio.h>

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

  6. int main(void)
  7. {
  8.         Polynomial polynomial1[100];
  9.         Polynomial polynomial2[100];
  10.         Polynomial result[100];
  11.         int i, j, k;
  12.         int i1, j1, k1;
  13.         char op;

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

  19.                 if(polynomial1[i - 1].item[0] == 0)
  20.                 {
  21.                         break;
  22.                 }
  23.         }

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

  29.                 if(polynomial2[j - 1].item[0] == 0)
  30.                 {
  31.                         break;
  32.                 }
  33.         }

  34.         k = 0;
  35.         i1 = 0;
  36.         j1 = 0;
  37.         while(1)
  38.         {
  39.                 if(i1 == i || j1 == j)
  40.                 {
  41.                         break;
  42.                 }

  43.                 if(polynomial1[i1].item[0] > polynomial2[j1].item[0])
  44.                 {
  45.                         result[k].item[0] = polynomial1[i1].item[0];
  46.                         result[k].item[1] = polynomial1[i1].item[1];
  47.                         k++;
  48.                         i1++;
  49.                 }
  50.                 else if(polynomial1[i1].item[0] == polynomial2[j1].item[0])
  51.                 {
  52.                         result[k].item[0] = polynomial1[i1].item[0];
  53.                         result[k].item[1] = polynomial1[i1].item[1] + polynomial2[j1].item[1];
  54.                         k++;
  55.                         i1++;
  56.                         j1++;
  57.                 }
  58.                 else
  59.                 {
  60.                         result[k].item[0] = polynomial2[j1].item[0];
  61.                         result[k].item[1] = polynomial2[j1].item[1];
  62.                         k++;
  63.                         j1++;
  64.                 }
  65.         }

  66.         k1 = 0;
  67.         op = ' ';
  68.         while(1)
  69.         {
  70.                 if(k1 == k)
  71.                 {
  72.                         break;
  73.                 }

  74.                 if(result[k1].item[1] == 0)
  75.                 {
  76.                         k1++;
  77.                         continue;
  78.                 }

  79.                 if(op != ' ')
  80.                         putchar(op);
  81.                 op = '+';

  82.                 if(result[k1].item[0] == 0)
  83.                 {
  84.                         printf("%d", result[k1].item[1]);
  85.                         k1++;
  86.                         continue;
  87.                 }


  88.                 if(result[k1].item[0] == 1)
  89.                 {
  90.                         printf("%d", result[k1].item[1]);
  91.                         k1++;
  92.                         putchar('x');
  93.                         continue;
  94.                 }

  95.                 printf("%d", result[k1].item[1]);
  96.                 putchar('x');
  97.                 printf("%d", result[k1].item[0]);
  98.                 k1++;
  99.         }
  100.         putchar('\n');

  101.         return 0;
  102. }
复制代码

  1. 6 2
  2. 5 3
  3. 3 12
  4. 1 6
  5. 0 20
  6. 6 2
  7. 5 3
  8. 2 12
  9. 1 6
  10. 0 20
  11. 4x6+6x5+12x3+12x2+12x+40
  12. 请按任意键继续. . .
复制代码


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

程序本来就不应该是通用的,而应该是专用的,我写的代码通过了我的测试,
输入
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-6-4 21:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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