我的成长

在这里,希望可以与大家一起探讨编程哦。虽然我还是属于菜鸟级别的。

8分数计算

题目编号 8
时间限制 1000 毫秒
内存限制 32768 K字节

问题描述

实现分数的加减乘除运算。 

输入

输入包含多行,每行第一个字符是一个运算符+、-、*或者/。然后是第一个分数的分子和分母,然后是第二个分数的分子和坟分母。他们之间用一个空格隔开。分数的分子和分母都是整数。

输出

对应于每行输入,输出一行,包含两个整数,分别是输入的两个分数经过指定的计算后的分数的分子和分母。结果要约到最简。若结果为负数,则分子为负分母为正;若结果为正,则分子分母都是正的。如果分母是1或者分子是0,则只输出分子部分,分母部分省略。

输入样例

+ 1 2 1 3
- 1 2 1 3
* 1 2 1 3

输出样例

5 6
1 6
1 6
#include <cstdlib>
#include 
<iostream>

using namespace std;
struct faction{
       
int cris;
       
int nume;
       };
int disvisor(int m,int n){
    
int r = 0;
    
while(n != 0){
        r 
= m % n;
        m 
= n;
        n 
= r % n;
        }
    
return m;   
    }
struct faction operate(char ch,struct faction num1,struct faction num2){
          
struct faction num;
          
switch(ch){
                     
case'+':
                             num.cris 
= num1.cris * num2.nume + num1.nume * num2.cris;
                             num.nume 
= num1.nume * num2.nume;
                             
break;
                     
case'-':
                             num.cris 
= num1.cris * num2.nume - num1.nume * num2.cris;
                             num.nume 
= num1.nume * num2.nume;
                             
break;
                     
case'*':
                             num.cris 
= num1.cris * num2.cris;
                             num.nume 
= num1.nume * num2.nume;
                             
break;
                     
case'/':
                             num.cris 
= num1.cris * num2.nume;
                             num.nume 
= num1.nume * num2.cris;
                             
break;
                             }
          
return num;
          }
int main(int argc, char *argv[])
{
    
char oper;
    
struct faction num1,num2,num3;
    
int dis;
    
while(cin >> oper >> num1.cris >> num1.nume >>num2.cris >>num2.nume){
              num3 
= operate(oper,num1,num2);
              dis 
= disvisor(num3.cris,num3.nume);
              num3.cris 
/= dis;
              num3.nume 
/= dis;
              
if(num3.nume < 0){
                           num3.nume 
*= -1;
                           num3.cris 
*= -1;
                           }
              
if(num3.cris == 0 ||num3.nume ==1)
                           cout 
<< num3.cris << endl;
              
else
                           cout 
<< num3.cris <<" "<<num3.nume <<endl;

   
    
    }
    system(
"PAUSE");
    
return EXIT_SUCCESS;
}

posted on 2006-10-28 16:40 林慧 阅读(137) 评论(0)  编辑 收藏 引用 所属分类: C++

只有注册用户登录后才能发表评论。