| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖
标题:一道小题目 。。帮忙解惑。除法
只看楼主 加入收藏
cj0608
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
一道小题目 。。帮忙解惑。除法
编写一程序计算两个整分数的和。程序运行结果应具有如下所示的形式:
输入第一个分数:1/2
输入第一个分数:2/5
两分数和为:9/10
(提示:输入分数时,可采用提示符链接形式,如输入a/b:cin>>a>dummy>>b;)
来人帮忙编个哈,在这先谢谢了。还有我主要是那个提示不懂。不知道是什么意思。
搜索更多相关主题的帖子: 解惑 除法 
2009-08-13 16:23
xufen340
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1351
注 册:2009-8-7
收藏
得分:4 
#include<iostream>
using namespace std;
const int max=100;
typedef struct{
    char upnum[max];
    char downnum[max];
    int upnumlength;
    int downnumlength;
} fraction;
fraction getnum(char* parray);
fraction getresult(fraction f1,fraction f2);
int main()
{
    char num1[max];
    char num2[max];
    cin>>num1>>num2;
    fraction mynum1=getnum(num1);
    fraction mynum2=getnum(num2);
    fraction result=getresult(mynum1,mynum2);
    int i;
    for(i=0;i<result.upnumlength;i++) cout<<result.upnum[i];
    cout<<"/";
    for(i=0;i<result.downnumlength;i++) cout<<result.downnum[i];
int y;
cin>>y;
}
 
//返回分子分母
fraction getnum(char* parray)
{
    fraction mynum;
    mynum.downnumlength=0;
    mynum.upnumlength=0;
    int i=0;
    int numlength=strlen(parray);
    while(parray[i]!='/'){
        mynum.upnum[i]=parray[i];//取分子
        i++;
        mynum.upnumlength++;
    }
    mynum.upnum[i]='\0';
    int j=0;  
    i++;
    while(i<numlength){
        mynum.downnum[j]=parray[i];//取分母
        i++;
        j++;
        mynum.downnumlength++;
    }
    mynum.downnum[j]='\0';
    return mynum;
}
 
//分母加法换算
fraction getresult(fraction f1,fraction f2)
{
   int upnum1,upnum2;
   int downnum1,downnum2;
   int downnum,upnum;
   fraction result;
   upnum1=atoi(f1.upnum);
   downnum1=atoi(f1.downnum);
   upnum2=atoi(f2.upnum);
   downnum2=atoi(f2.downnum);
   if(downnum1%downnum2==0){
       downnum=downnum1;
       upnum=upnum1+upnum2;
   }else if(downnum2%downnum1==0){
       downnum=downnum2;
       upnum=upnum1+upnum2;
   }else {//这里有个求最大公倍数先空着,一时想不出
       downnum=downnum2*downnum1;
       upnum=upnum1*downnum2+upnum2*downnum1;
   }
   itoa(downnum,result.downnum,10);
   itoa(upnum,result.upnum,10);
   result.downnumlength=strlen(result.downnum);
   result.upnumlength=strlen(result.upnum);
   return result;
}
 
 
     
        
2009-08-13 21:42
hyfl
Rank: 7Rank: 7Rank: 7
来 自:火星
等 级:黑侠
帖 子:113
专家分:552
注 册:2008-11-20
收藏
得分:4 
提示的意思就是,在控制台下你输入:a/b
输入的是3个字符,而程序需要的只是分子a和分母b的值。所以声明一个额外的变量dummy存放字符'/'。
cin>>a>>dummy>>b;
输入:2/5
那么a=2,dummy的值为/,b=5

“一切高手都是从菜鸟炼成的!”1099285180@
2009-08-17 14:19
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:4 
以下是引用hyfl在2009-8-17 14:19的发言:提示的意思就是,在控制台下你输入:a/b输入的是3个字符,而程序需要的只是分子a和分母b的值。所以声明一个额外的变量dummy存放字符'/'。cin>>a>>dummy>>b;输入:2/5那么a=2,dummy的值为/,b=5
输入应为 2 / 5

或者

2
/
5

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2009-08-17 14:36
快速回复:一道小题目 。。帮忙解惑。除法
数据加载中...
 
   



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

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