Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Separate digits in C++

  1. Feb 9, 2006 #1

    ranger

    User Avatar
    Gold Member

    If I take a six digit number and store it in one variable, how can I place spaces between each digit at the output. This would be so much easier if each digit were stored in separate variables.


    --thanks
     
  2. jcsd
  3. Feb 9, 2006 #2
    If your number is not already in a string then first store it as a string using your favorite method (sprintf, string streams, anything you like). Then copy this string to another that is twice as long. Copy it one digit at a time and append a space after each digit.

    Alternatively, process the number directly. It is an unsigned integer, right? So do "digit = number % 10", store the digit to a string (going right to left) as a character, add a space character between each one, divide "number /= 10" before proceeding with the next digit. Repeat 6 times.
     
  4. Feb 9, 2006 #3

    chroot

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    If you're not required to use C++, consider using another language instead. Python, for example, can do such things quite easily.

    In Python:

    Code (Text):
    from string import join, zfill

    n = 12345
    print join( zfill(n, 6), ' ' )
    - Warren
     
  5. Feb 10, 2006 #4
    You can make your own function that prints integers with a space between each digit (and the possible minus sign), like this:
    Code (Text):
    void rangers_integer_print(int n)
    {
      stringstream s;
      char c;

      s << n;  

      while (s.get(c))  
         cout << c << " ";
    }

    Here is a little test program using the function (I ran it and it seems to work fine)
    Code (Text):
    #include <iostream>
    #include <sstream>

    using namespace std;

    void rangers_integer_print(int n)
    {
      stringstream s;
      char c;

      s << n;

      while (s.get(c))  
         cout << c << " ";
    }

    void main()
    {
      int n;

      cout << endl << "enter number: ";
      cin >> n;  

      rangers_integer_print(n);
    }
     
  6. Feb 16, 2006 #5

    ranger

    User Avatar
    Gold Member

    Here is the program...(using 5 digits)


    Code (Text):

    #include <iostream.h>

    main()
    {

        int num;              //user input
        int a,b,c,d,e,f,g,h;  //used for integer division and modulus operations

        cout <<"Enter a five digit number." <<endl;
        cin >> num;

       
       
        a = num/10000;           //  
            b = num%10000;         //            
            c = b/1000;              //            
        d = b%1000;              //            
        e = d/100;               //Integer and Modulus Operations
        f = d%100;              //            
        g = f/10;                //            
        h = f%10;              //  

        cout <<endl;
        cout <<a<<"   "<<c<<"   "<<e<<"   "<<g<<"   "<<h<<" ";
        cout <<endl;

        return 0;

    }
    I wrote this program using Visual C++ 6.0. When I run the program it works fine. But when I run the program using Turbo C++ I keep getting a negative number or some other number for the output when I enter high numbers ex-98765 i get -3 -2 -3 0 -7 as the out for Turbo C++. It works fine for lower number - 12345.

    Any idea why this happens?

    --thanks.
     
  7. Feb 16, 2006 #6
    The old Turbo-C++ integer size must be 16 bits while the MS compiler uses 32 bits. Using "unsigned int" will help a little, using "unsigned long int" will help even more.
     
  8. Feb 16, 2006 #7

    chroot

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    I also suggest using a for loop.

    - Warren
     
  9. Apr 15, 2011 #8
    if you use long int in turbo c++ it will give you the right answers instead of negative answer the reason is that int can not store a a high value of integers into it it has a limit so long int can help u


    hope the answer satisfies you
    regards
    Engineer Asim Arshad
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Separate digits in C++
  1. Separate digits in C++ (Replies: 22)

  2. C++ Digit algorithm (Replies: 10)

  3. Digit Check in C++ (Replies: 9)

Loading...