Last active
May 15, 2018 10:16
-
-
Save asela38/f4e6cfeafbeaf21d406a7578b1b2fc96 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* NumberReader.c | |
* | |
* Created on: May 5, 2009 | |
* Author: Asela | |
* | |
* shows the way to read integers for integer values | |
* ( form INT_MIN+1 to INT_MAX ) | |
*/ | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <limits.h> | |
#define MILLION 1000000 | |
#define BILLION 1000000000 | |
void readNumberOneTo_9(int number); | |
void readNumberOneTo_99(int number); | |
void readNumberOneTo_999(int number); | |
void readNumberOneTo_999999(int number); | |
void readNumberOneTo_999999999(int number); | |
void readNumberOneTo_999999999999(int number); | |
void readSecondPlace(int number); | |
void readNumberEleveToNineTeen(int number); | |
void readNumberTenToNinTeen(int number); | |
int main(int argc , char *argv[] ){ | |
int number; | |
printf("Enter the number you want to read : \n"); | |
scanf ("%d", &number); | |
printf("The way to read %d is : ", number ); | |
//if number is negative put the word negative the the | |
//display and make it positive and read it as a positive | |
//value | |
if( number < 0){ | |
printf("Negative "); | |
number *= -1; | |
} | |
if (number == 0 ) { | |
printf("Zero"); | |
}else if (number < 1000 ) { | |
readNumberOneTo_999(number); | |
}else if (number < MILLION ){ | |
readNumberOneTo_999999(number); | |
}else if (number < BILLION ){ | |
readNumberOneTo_999999999(number); | |
}else if (number <= INT_MAX ){ | |
readNumberOneTo_999999999999(number); | |
} | |
return 0; | |
} | |
//prints the value of a single number 1 to 9 | |
void readNumberOneTo_9(int number){ | |
if(number == 1){ | |
printf("One"); | |
} else if(number == 2){ | |
printf("Two"); | |
}else if(number == 3){ | |
printf("Three"); | |
}else if(number == 4){ | |
printf("Four"); | |
}else if(number == 5){ | |
printf("Five"); | |
}else if(number == 6){ | |
printf("Six"); | |
}else if(number == 7){ | |
printf("Seven"); | |
}else if(number == 8){ | |
printf("Eight"); | |
}else if(number == 9){ | |
printf("Nine"); | |
} | |
} | |
/* | |
* prints values of ten to 19 | |
* this a special case 'case these | |
* numbers have different way of reading | |
*/ | |
void readNumberEleveToNineTeen(int number){ | |
if(number == 10){ | |
printf("Ten "); | |
}else if(number == 11){ | |
printf("Eleven "); | |
}else if(number == 12){ | |
printf("Twelve "); | |
}else { | |
if(number == 13){ | |
printf("Thir"); | |
}else if(number == 15){ | |
printf("Fif"); | |
}else { | |
readNumberOneTo_9( number % 10 ); | |
} | |
printf("teen"); | |
} | |
} | |
//reads numbers between one and 99 | |
void readNumberOneTo_99(int number){ | |
if (number < 10){ | |
readNumberOneTo_9(number); | |
} else if (number < 20) { | |
readNumberEleveToNineTeen(number); | |
}else { | |
readSecondPlace( number / 10 ); | |
if( number % 10 != 0 ){ | |
readNumberOneTo_9( number % 10 ); | |
} | |
} | |
} | |
//reads digit in the second position | |
// that are multiples of 10 | |
void readSecondPlace(int number ){ | |
if(number == 2){ | |
printf("Twen"); | |
}else if(number == 3){ | |
printf("Thir"); | |
}else if(number == 5){ | |
printf("Fif"); | |
}else if(number == 8){ | |
printf("Eigh"); | |
}else { | |
readNumberOneTo_9(number); | |
} | |
printf("ty "); | |
} | |
//reads numbers between one and 099 | |
void readNumberOneTo_999(int number){ | |
if (number < 10){ | |
readNumberOneTo_9(number); | |
} else if (number < 100) { | |
readNumberOneTo_99(number); | |
}else { | |
readNumberOneTo_9( number/100 ); | |
printf(" Hundred"); | |
if( number % 100 != 0){ | |
printf(" and "); | |
readNumberOneTo_99(number % 100); | |
} | |
} | |
} | |
//for numbers greater that 1000 | |
//They have a systematic way of reading | |
//Numbers read as blocs of three digits | |
void readNumberOneTo_999999(int number){ | |
readNumberOneTo_999(number / 1000 ); | |
printf(" Thousand "); | |
readNumberOneTo_999(number % 1000 ); | |
} | |
void readNumberOneTo_999999999(int number){ | |
readNumberOneTo_999(number / MILLION ); | |
printf(" Million "); | |
readNumberOneTo_999999(number % MILLION ); | |
} | |
void readNumberOneTo_999999999999(int number){ | |
readNumberOneTo_999(number / BILLION ); | |
printf(" Billion "); | |
readNumberOneTo_999999999(number % BILLION ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment