/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 臧鹏
* 完成日期: 2012 年 9月 16日
* 版 本 号: 001
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:分数的加法运算编程
编程思路:分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个分数分母的最小公倍数,通分后,再求两个分子的和,最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其化简成最简分数的形式1/2),即用分子分母的最大公约数分别除分子和分母。请用四个对话框顺序输入分子和分母,在控制台上输出其运算结果。
* 程序输出:
* 程序头部的注释结束
*/
public class Demo01 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
fracAdd(1,5,7,20);//结果为:11/20
fracSub(1,5,7,20);//分数相减
fracMul(1,5,7,20);//分数相乘
fractDiv(1,5,7,20);//分数相除
}
static void fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){
//以下代码能够在控制台上显示结果
//需要调用求最大公约数的函数
//需要调用求最小公倍数的函数
int denominator;
int numerator;
if(first_denominator==second_denominator) //分母相同时加分子
{
denominator=first_denominator;
numerator=first_numerator+second_numrator;
}
else //否则同分比较分子
{
denominator=first_denominator*second_denominator;
numerator=first_numerator*second_denominator+first_denominator*second_numrator;
}
int gcd = gcd(numerator,denominator);
denominator = denominator / gcd;
numerator = numerator / gcd;
System.out.println("输出的结果是"+numerator+"/"+denominator);
return ;
}
static void fracSub(int first_numerator,int first_denominator,int second_numrator,int second_denominator){
//以下代码能够在控制台上显示结果
//需要调用求最大公约数的函数
int denominator;
int numerator;
if(first_denominator==second_denominator) //分母相同时加分子
{
denominator=first_denominator;
numerator=first_numerator-second_numrator;
}
else //否则同分比较分子
{
denominator=first_denominator*second_denominator;
numerator=first_numerator*second_denominator-first_denominator*second_numrator;
}
int gcd = gcd(numerator,denominator);
denominator = denominator / gcd;
numerator = numerator / gcd;
System.out.println("输出的结果是"+numerator+"/"+denominator);
return ;
}
static void fracMul(int first_numerator,int first_denominator,int second_numerator,int second_denominator){
//以下代码能够在控制台上显示结果
//需要调用求最大公约数的函数
int denominator;
int numerator;
denominator=first_denominator*second_denominator;
numerator=first_numerator*second_numerator;
int gcd = gcd(numerator,denominator);
denominator = denominator / gcd;
numerator = numerator / gcd;
System.out.println("输出的结果是"+numerator+"/"+denominator);
return ;
}
static void fractDiv(int first_numerator,int first_denominator,int second_numerator,int second_denominator){
//以下代码能够在控制台上显示结果
//需要调用求最大公约数的函数
int denominator;
int numerator;
numerator = first_numerator*second_denominator;
denominator = first_denominator*second_numerator;
int gcd = gcd(numerator,denominator);
denominator = denominator / gcd;
numerator = numerator / gcd;
System.out.println("输出的结果是"+numerator+"/"+denominator);
return ;
}
static int gcd(int x,int y){
int r;
while( y!= 0)
{
r = x%y;
x = y;
y = r;
}
return x;
}
}
