| | |
Basic arithemetic on rational numbers
Please support our C advertiser: Programming Forums - DaniWeb Sister Site
Thread Solved |
•
•
Join Date: Apr 2009
Posts: 6
Reputation:
Solved Threads: 1
0
#5 Oct 27th, 2009
/*A PROGRAM PERFORMING BASIC ARITHMETIC ON RATIONAL NUMBERS*/
/*BY ISAGARA K ROBERT*/
/*26th october 2009*/
/*THIS WAS MY ASSIGNMENT(COMPUTER SCIENCE YEAR II) TO MR PAUL BAGYENDA ON BASIC ARITHMETIC OPERATION ON RATIONAL NUMBERS*/
#include <stdio.h>
#include <stdlib.h>
typedef struct rational_t {
int numer;
int denom;
} rational_t;
/*modify this for me*/
static int gcd(int a, int b)
{ int c;
while(a>0)
{
if(a<b)
{ c=a;
a=b;
b=c;
}
else
a=a%b;
}
return b;
}
/* r_init: creates rational number representing numer/denom and returns it*/
rational_t r_init(int numer, int denom)
{
rational_t fraction;
int GcD=gcd(numer,denom);
fraction.numer= numer/GcD;
fraction.denom= denom/GcD;
return fraction;
}
/* r_add: Returns a rational_t representing x+y */
rational_t r_add(rational_t x, rational_t y)
{
rational_t result;
result.numer=(x.numer*y.denom+ x.denom* y.numer);
result.denom=(x.denom*y.denom);
return result;
}
/* r_sub: Returns a rational_t representing x-y */
rational_t r_sub(rational_t x, rational_t y)
{
rational_t result;
result.numer=(x.numer*y.denom - x.denom* y.numer);
result.denom=(x.denom*y.denom);
return result;
}
/* r_mul: Returns a rational_t representing x*y */
rational_t r_mul(rational_t x, rational_t y)
{ rational_t result;
result.numer=(x.numer*y.numer);
result.denom=(x.denom*y.denom);
return result;
}
/* r_div: Returns a rational_t representing x/y */
rational_t r_div(rational_t x, rational_t y)
{
rational_t result;
result.numer=(x.numer*y.denom);
result.denom=(x.denom*y.numer);
return result;
}
/* r_toreal: Returns a double representing x */
double r_toreal(rational_t x)
{
}
/* r_print: prints rational as x/y (using printf */
void r_print(rational_t x)
{
int p=gcd(x.numer,x.denom);
printf("%d/%d",x.numer/p,x.denom/p);
}
int main(void)
{
printf("Rational arithmetic test program\n");
do {
int u,v, oper;
rational_t x, y, z;
here:
printf("x - numerator: ");
scanf("%d", &u);
if(u==0){
printf("Enter interger greater than Zero\n");
goto here;}
There1:
printf("x - denominator: ");
scanf("%d", &v);
if(v==0){
printf("Zero is undefined for a fraction ,Enter valve above Zero\n");
goto There1;
}
x = r_init(u,v);
here2:
printf("y - numerator: ");
scanf("%d", &u);
if(u==0){
printf("Enter interger greater than Zero\n");
goto here2;}
Thereback:
printf("y - denominator: ");
scanf("%d", &v);
if(v==0){
printf("Zero is undefined for a fraction ,Enter valve above Zero\n");
goto Thereback;
}
y = r_init(u,v);
printf("x is: ");
r_print(x);
printf("\n");
printf("y is: ");
r_print(y);
printf("\n");
printf("Operation (1=add,2=Sub,3=Mul,4=Div,0=End): ");
scanf("%d", &oper);
switch (oper) {
case 1:
z = r_add(x,y);
break;
case 2:
z = r_sub(x,y);
break;
case 3:
z = r_mul(x,y);
break;
case 4:
z = r_div(x,y);
break;
case 0:
return 0;
default:
printf("Unknown operation!\n");
break;
}
printf("z is: ");
r_print(z);
printf("\n");
} while(1);
return 0;
}
/*BY ISAGARA K ROBERT*/
/*26th october 2009*/
/*THIS WAS MY ASSIGNMENT(COMPUTER SCIENCE YEAR II) TO MR PAUL BAGYENDA ON BASIC ARITHMETIC OPERATION ON RATIONAL NUMBERS*/
#include <stdio.h>
#include <stdlib.h>
typedef struct rational_t {
int numer;
int denom;
} rational_t;
/*modify this for me*/
static int gcd(int a, int b)
{ int c;
while(a>0)
{
if(a<b)
{ c=a;
a=b;
b=c;
}
else
a=a%b;
}
return b;
}
/* r_init: creates rational number representing numer/denom and returns it*/
rational_t r_init(int numer, int denom)
{
rational_t fraction;
int GcD=gcd(numer,denom);
fraction.numer= numer/GcD;
fraction.denom= denom/GcD;
return fraction;
}
/* r_add: Returns a rational_t representing x+y */
rational_t r_add(rational_t x, rational_t y)
{
rational_t result;
result.numer=(x.numer*y.denom+ x.denom* y.numer);
result.denom=(x.denom*y.denom);
return result;
}
/* r_sub: Returns a rational_t representing x-y */
rational_t r_sub(rational_t x, rational_t y)
{
rational_t result;
result.numer=(x.numer*y.denom - x.denom* y.numer);
result.denom=(x.denom*y.denom);
return result;
}
/* r_mul: Returns a rational_t representing x*y */
rational_t r_mul(rational_t x, rational_t y)
{ rational_t result;
result.numer=(x.numer*y.numer);
result.denom=(x.denom*y.denom);
return result;
}
/* r_div: Returns a rational_t representing x/y */
rational_t r_div(rational_t x, rational_t y)
{
rational_t result;
result.numer=(x.numer*y.denom);
result.denom=(x.denom*y.numer);
return result;
}
/* r_toreal: Returns a double representing x */
double r_toreal(rational_t x)
{
}
/* r_print: prints rational as x/y (using printf */
void r_print(rational_t x)
{
int p=gcd(x.numer,x.denom);
printf("%d/%d",x.numer/p,x.denom/p);
}
int main(void)
{
printf("Rational arithmetic test program\n");
do {
int u,v, oper;
rational_t x, y, z;
here:
printf("x - numerator: ");
scanf("%d", &u);
if(u==0){
printf("Enter interger greater than Zero\n");
goto here;}
There1:
printf("x - denominator: ");
scanf("%d", &v);
if(v==0){
printf("Zero is undefined for a fraction ,Enter valve above Zero\n");
goto There1;
}
x = r_init(u,v);
here2:
printf("y - numerator: ");
scanf("%d", &u);
if(u==0){
printf("Enter interger greater than Zero\n");
goto here2;}
Thereback:
printf("y - denominator: ");
scanf("%d", &v);
if(v==0){
printf("Zero is undefined for a fraction ,Enter valve above Zero\n");
goto Thereback;
}
y = r_init(u,v);
printf("x is: ");
r_print(x);
printf("\n");
printf("y is: ");
r_print(y);
printf("\n");
printf("Operation (1=add,2=Sub,3=Mul,4=Div,0=End): ");
scanf("%d", &oper);
switch (oper) {
case 1:
z = r_add(x,y);
break;
case 2:
z = r_sub(x,y);
break;
case 3:
z = r_mul(x,y);
break;
case 4:
z = r_div(x,y);
break;
case 0:
return 0;
default:
printf("Unknown operation!\n");
break;
}
printf("z is: ");
r_print(z);
printf("\n");
} while(1);
return 0;
}
![]() |
Similar Threads
- Basic Unique Random Numbers (C++)
- Need help with a Reduce Fraction as part of a Rational Class (C++)
- rational class (C++)
- Help with Rational Numbers in C++ (C++)
- Dead end with basic code (C)
Other Threads in the C Forum
- Previous Thread: RE: reading .wav file and putting ito inot the array
- Next Thread: file opening problem!!!!!
Views: 228 | Replies: 4
| Thread Tools | Search this Thread |
Tag cloud for C
adobe ansi api array arrays bash binarysearch centimeter char convert copyanyfile copypdffile cprogramme createcopyoffile createprocess() csyntax directory drawing dynamic executable fflush file fork frequency getlasterror givemetehcodez global graphics gtkgcurlcompiling hardware highest homework i/o inches infiniteloop initialization interest km lazy linked linkedlist linux linuxsegmentationfault list locate logical_drives match matrix meter microsoft motherboard multi mysql open opendocumentformat opensource owf pattern pdf performance pointer pointers posix power problem probleminc program programming pyramidusingturboccodes read recursion recv repetition scanf scheduling segmentationfault send shape socketprograming spoonfeeding stack standard strchr string strings structures student suggestions system systemcall test testautomation unix user visualstudio voidmain() wab win32 win32api windows.h





