Counting # of single digits with arrays?

T

tman88g

I've been trying to learn arrays, and I was wondering how one would go
about making a program that would take from the user as many single
digit numbers (0 - 9) as the user wants to enter, and then the program
would output the number of times each digit was inputted, (and only the
digits that were inputted). I've been toying around with this all day,
but can't seem to nail it. I've been trying to use an array as a
counter, and then putting it in a loop. Not a whole lot of luck so far,
but I'm probably doing it wrong.. Any ideas?
 
S

Scott McPhillips [MVP]

I've been trying to learn arrays, and I was wondering how one would go
about making a program that would take from the user as many single
digit numbers (0 - 9) as the user wants to enter, and then the program
would output the number of times each digit was inputted, (and only the
digits that were inputted). I've been toying around with this all day,
but can't seem to nail it. I've been trying to use an array as a
counter, and then putting it in a loop. Not a whole lot of luck so far,
but I'm probably doing it wrong.. Any ideas?

Is your problem with the algorithm or with the control flow?

int array[10] = {0};
....get user number 0...9
array[user_number]++;

It sounds like homework, so show what you've got if you need more help.
 
D

doug turnbull

I've been trying to learn arrays, and I was wondering how one would go
about making a program that would take from the user as many single
digit numbers (0 - 9) as the user wants to enter, and then the program
would output the number of times each digit was inputted, (and only the
digits that were inputted). I've been toying around with this all day,
but can't seem to nail it. I've been trying to use an array as a
counter, and then putting it in a loop. Not a whole lot of luck so far,
but I'm probably doing it wrong.. Any ideas?

Maybe you could post your source code. You might be on the right track,
but could have some misconceptions about how to proceed. It sounds like
you might have idea.
 
T

tman88g

Scott said:
I've been trying to learn arrays, and I was wondering how one would go
about making a program that would take from the user as many single
digit numbers (0 - 9) as the user wants to enter, and then the program
would output the number of times each digit was inputted, (and only the
digits that were inputted). I've been toying around with this all day,
but can't seem to nail it. I've been trying to use an array as a
counter, and then putting it in a loop. Not a whole lot of luck so far,
but I'm probably doing it wrong.. Any ideas?

Is your problem with the algorithm or with the control flow?

int array[10] = {0};
...get user number 0...9
array[user_number]++;

It sounds like homework, so show what you've got if you need more help.

The algorithm wasn't the problem, so I guess it was the control flow?
I'm just trying to practice using arrays as I have a test coming soon.
I think I may have my problems figured out all anyways. I will post
everything up if I run into more problems. Thanks
 
P

Phlip

tman88g said:
I've been trying to learn arrays, and I was wondering how one would go
about making a program that would take from the user as many single
digit numbers (0 - 9) as the user wants to enter, and then the program
would output the number of times each digit was inputted, (and only the
digits that were inputted). I've been toying around with this all day,
but can't seem to nail it. I've been trying to use an array as a
counter, and then putting it in a loop. Not a whole lot of luck so far,
but I'm probably doing it wrong.. Any ideas?

A hint:

++array['7' - '0'];

Replace one of those constants with one of your input variables.
 
T

tman88g

ughh, the same problem has been resurfacing. Everything compiles and
executes, but I get some debug error. "Run-Time Check Failure #2 -
Stack around the variable 'numArray' was corrupted." I was getting some
other run-time error message before, so I wasn't sure what I was doing
wrong. All I have left that I want to figure out is how to output only
the count of the digits that are entered, but I think I have the basic
idea covered. Here is my code, (don't be too hard)...

#include <iostream>
using namespace std;

void printNumDigits(int Array[])
{
cout << "\nThere are " << Array[0] << " 0's. " << endl;
cout << "There are " << Array[1] << " 1's. " << endl;
cout << "There are " << Array[2] << " 2's. " << endl;
cout << "There are " << Array[3] << " 3's. " << endl;
cout << "There are " << Array[4] << " 4's. " << endl;
cout << "There are " << Array[5] << " 5's. " << endl;
cout << "There are " << Array[6] << " 6's. " << endl;
cout << "There are " << Array[7] << " 7's. " << endl;
cout << "There are " << Array[8] << " 8's. " << endl;
cout << "There are " << Array[9] << " 9's. " << endl << endl;
}

int main()
{
int num;
int numArray[10] = {0};

do
{
cout << "Enter an one-digit number, or 10 to quit: ";
cin >> num;

numArray[num]++;

} while ( num <= 9 );


if ( num = 10 )
{
printNumDigits(numArray);
}

else if ( num > 10 )
{
cout << "One-digit numbers only! " << endl << endl;
}

return 0;
}




Scott said:
I've been trying to learn arrays, and I was wondering how one would go
about making a program that would take from the user as many single
digit numbers (0 - 9) as the user wants to enter, and then the program
would output the number of times each digit was inputted, (and only the
digits that were inputted). I've been toying around with this all day,
but can't seem to nail it. I've been trying to use an array as a
counter, and then putting it in a loop. Not a whole lot of luck so far,
but I'm probably doing it wrong.. Any ideas?

Is your problem with the algorithm or with the control flow?

int array[10] = {0};
...get user number 0...9
array[user_number]++;

It sounds like homework, so show what you've got if you need more help.

The algorithm wasn't the problem, so I guess it was the control flow?
I'm just trying to practice using arrays as I have a test coming soon.
I think I may have my problems figured out all anyways. I will post
everything up if I run into more problems. Thanks
 
T

tman88g

As soon as I ask around for possible solutions, I end up solving the
problem myself. It figures... Thanks for the help anyways guys.


Scott said:
(e-mail address removed) wrote:
I've been trying to learn arrays, and I was wondering how one would go
about making a program that would take from the user as many single
digit numbers (0 - 9) as the user wants to enter, and then the program
would output the number of times each digit was inputted, (and only the
digits that were inputted). I've been toying around with this all day,
but can't seem to nail it. I've been trying to use an array as a
counter, and then putting it in a loop. Not a whole lot of luck so far,
but I'm probably doing it wrong.. Any ideas?


Is your problem with the algorithm or with the control flow?

int array[10] = {0};
...get user number 0...9
array[user_number]++;

It sounds like homework, so show what you've got if you need more help.

The algorithm wasn't the problem, so I guess it was the control flow?
I'm just trying to practice using arrays as I have a test coming soon.
I think I may have my problems figured out all anyways. I will post
everything up if I run into more problems. Thanks
 
J

Jim Langston

As soon as I ask around for possible solutions, I end up solving the
problem myself. It figures... Thanks for the help anyways guys.

You did figure to use == isntead of = in your if statement right?
Scott McPhillips [MVP] wrote:
(e-mail address removed) wrote:
I've been trying to learn arrays, and I was wondering how one
would go
about making a program that would take from the user as many single
digit numbers (0 - 9) as the user wants to enter, and then the
program
would output the number of times each digit was inputted, (and only
the
digits that were inputted). I've been toying around with this all
day,
but can't seem to nail it. I've been trying to use an array as a
counter, and then putting it in a loop. Not a whole lot of luck so
far,
but I'm probably doing it wrong.. Any ideas?


Is your problem with the algorithm or with the control flow?

int array[10] = {0};
...get user number 0...9
array[user_number]++;

It sounds like homework, so show what you've got if you need more
help.

--
Scott McPhillips [VC++ MVP]

The algorithm wasn't the problem, so I guess it was the control flow?
I'm just trying to practice using arrays as I have a test coming soon.
I think I may have my problems figured out all anyways. I will post
everything up if I run into more problems. Thanks
 
J

Jim Langston

Scott McPhillips [MVP] wrote:
(e-mail address removed) wrote:
I've been trying to learn arrays, and I was wondering how one
would go
about making a program that would take from the user as many single
digit numbers (0 - 9) as the user wants to enter, and then the
program
would output the number of times each digit was inputted, (and only
the
digits that were inputted). I've been toying around with this all
day,
but can't seem to nail it. I've been trying to use an array as a
counter, and then putting it in a loop. Not a whole lot of luck so
far,
but I'm probably doing it wrong.. Any ideas?


Is your problem with the algorithm or with the control flow?

int array[10] = {0};
...get user number 0...9
array[user_number]++;

It sounds like homework, so show what you've got if you need more
help.

--
Scott McPhillips [VC++ MVP]

The algorithm wasn't the problem, so I guess it was the control flow?
I'm just trying to practice using arrays as I have a test coming soon.
I think I may have my problems figured out all anyways. I will post
everything up if I run into more problems. Thanks


As soon as I ask around for possible solutions, I end up solving the
problem myself. It figures... Thanks for the help anyways guys.

Please don't top post in this newsgroup. Okay, now that you got it, I would
of done it a bit different.

I would of had the user input a whole string, then go through the stream
adding up the digits. What if you wanted to see how many of any character
they put int?

Pseudo code:

std::string Line;
std::cout << "Enter a line:: ";
std::cin >> Line;

unsigned int Characters[256] = (0);
// Exercise for the reader, use a std::vector instead and preallocate 256
spaces

for ( int i = 0; i < Line.length(); ++i )
{
Characters[Line]++;
}

for ( int i = 0; i < 256; ++i )
{
if ( Characters > 0 )
{
if ( i >= 32 && i < 128 )
std::cout << "You entered " << Characters << " " <<
static_cast<char>( i ) << "'s" << std::endl;
else
std::cout << "You entered " << Character << " chars with the ASCII
value " << i << std::endl;
}
}
 
S

Scott McPhillips [MVP]

int num;
int numArray[10] = {0};

do
{
cout << "Enter an one-digit number, or 10 to quit: ";
cin >> num;

numArray[num]++;

} while ( num <= 9 );

You've got a bug here that will cause an out-of-bounds access error. If
the user enters 10 your code attempts to increment numArray[10], which
does not exist.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,540
Members
45,025
Latest member
KetoRushACVFitness

Latest Threads

Top