1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
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...