[ create a new paste ] login | about

Link: http://codepad.org/2hQEUBRz    [ raw code | output | fork ]

silkworm - C++, pasted on Nov 25:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>

using namespace std;

bool testcharacter(string input);
bool checkZero(string input);
bool checkSpace(string input);

int main()
{
    string numStr;// for user entered number

    // names for use in output
    string onesName[] = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
    string teensName[] = { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
    string tensName[] = { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };
    string illion_preName[] = { "m", "b", "tr", "quadr", "quint", "sext"};
   

    char repeat = 'y';
	bool t;   // check minus number
	bool cp =true;
	
    do// as long as user wishes to enter number for naming
    {
       
		// input number
		do
		{
			cout << "Number = ";
			fflush(stdin);
			getline(cin,numStr);
			

		}while(!testcharacter(numStr) || !checkSpace(numStr));

       
		// long long int = 2^63 ~ e20
        if( numStr.size() > 24 )
        {
            cout << "The number's too big! Please try again." << endl;
            continue;
        }
		

		// minus number
		if (numStr[0] =='-')
		{
			t = false;
			numStr = numStr.erase(0,1);
		}

		// delete prefix - zero
		while(numStr[0] == '0' && numStr.size()>1)
		{
			numStr = numStr.erase(0,1);
		}

		// if input is zero.
		if (checkZero(numStr) == true && numStr[0] !='-')
		{
			cout<<"zero ";		
			t = true;
		}

		// oop it's minus number, right?
        if (t==false)
		{
			cout<<"minus ";
			t = true;
			
		}

		// pad the string with leading '0' until size = multiple of 3
        while( numStr.size()%3 != 0 )
            numStr = '0' + numStr;

        // for each group of 3 digits from most to least significant
        for( unsigned int i = 0; i < numStr.size(); i += 3 )
        {
			cp = true; // flag to set if number is 10000000000....
			
			if((numStr[i+0]=='0') && (numStr[i+1]=='0') && (numStr[i+2] == '0'))
			{
				cp = false;
			}

			else 
			{
				// treat the hundreds place
				if( numStr[i + 0] > '0' )
				{
					cout << onesName[ numStr[i + 0] - '0' - 1 ] << " hundred ";	
				}
           
				// treat tens and ones digits for non-teens case
				if( numStr[i + 1] == '0' || numStr[i + 1] > '1' )
				{
					if( numStr[i + 1] > '1' ) 
					{
						cout << tensName[ numStr[i + 1] - '0' - 2 ] << " "; 
					}
					if( numStr[i + 2] > '0' ) 
					{
						cout << onesName[ numStr[i + 2] - '0' - 1 ] << " "; 
					}
				}
			
				// treat teens case
				if(numStr[i+1] =='1')
				{
					cout << teensName[ numStr[i + 2] - '0' ] << " ";
				}
			}

            // take 3 digits each time.
            unsigned int j = ( numStr.size() - i )/3;

			// treat thousand.
			if( j == 2 && cp==true)
			{
				cout << "thousand, ";				
			}

			// treat more ..illion
            else if( j > 2 && cp == true)
            {
                cout << illion_preName[ j - 3 ]; //prefix
                cout << "illion, "; // suffix
            }		
        }
		
        cout << endl << "Repeat? (y/n): ";
        cin >> repeat;
    }while( repeat == 'y' );
    cout << endl;
    return 0;
}

// check any whitespace in String.
bool checkSpace(string input)
{
	bool ret = true;
	for(unsigned int i=0;i<input.size();i++)
	{
		if(input[i]==' ')
		{
			ret = false;break;
		}
	}
	return ret;
}

// check if wrong input format.
bool testcharacter(string input)
{
	bool ret = true;
	for(unsigned int i=0;i<input.size();i++)
	{
		if(!isdigit(input[i]) && input[0]!='-')
		{
			ret = false; break;
		}
	}
	return ret;
}

// check if input zero
bool checkZero(string input)
{
	bool ret = true;
	for(unsigned int i=0;i<input.size();i++)
	{
		if(input[i] != '0')
		{
			ret = false;
			break;
		}
		else ret = true;
	}
	return ret;
}


Output:
1
2
3
4
Line 19: error: stdafx.h: No such file or directory
cc1plus: warnings being treated as errors
In function 'int main()':
Line 25: warning: 't' may be used uninitialized in this function


Create a new paste based on this one


Comments: