I am having trouble with an exercise of finding how many times a number appears in an array and display the value and the count of times it appears in the list. The array can be the size of 100.
xjim72 0 Newbie Poster
Let me be more detailed. I have the program enter a list of numbers all integers and positive. The program then list the numbers in accending order and the number of times that number is in the list. Thanks.
Ancient Dragon 5,243 Achieved Level 70 Team Colleague Featured Poster
1. put all the numbers in an array and short it.
2. create a 2d array, the first dimension contains the number and the second dimension contains a count of the number of times the number appears. The program will have to iterate through the original array (#1 above) and maintain each array in #2.
c++ <map> will facilitate #2 above, but I'm not familiar enough with it to demonstrate its use.
xjim72 0 Newbie Poster
Well here is what I have so far but the results are not great.
I get repeat info and it prints out -999.
Any ideas?
// Description: Program that reads in a set of positive integers
// and out puts how many times a number appears in the list.
#include<iostream>
#include<iomanip>
using namespace std;
//function prototypes
void initialize (int numbers[], int listSize);
void readNum (int numbers[], int& listSize);
void selectSort (int numbers[], int listSize);
int main()
{
int Numbers [100];
int count= 0;
int listsize = 100;
int temp;
initialize (Numbers, listsize);
cout <<"Enter a maximum of 100 positive integers ending with -999"<<endl;
readNum (Numbers, listsize);
cout <<endl;
cout <<fixed<<showpoint<<setw(7)<<"Number"<<setw(9)<<"Count"<<endl;
selectSort(Numbers, listsize);
for (int t=0; t< listsize; t++)
{
temp = Numbers[t];
for (int i=0; i < listsize;i++)
{
if (Numbers == temp)
count ++;
}
cout <<setw(5)<<Numbers[t]<<setw(9)<<count<<endl;
count = 0;
}
return 0;
}
void initialize (int numbers[], int listSize)
{
int index;
int Num = 0;
for (index=0; index < 100; index++)
numbers[index] = 0;
}
void readNum (int numbers[], int&listSize)
{
int index =0;
int num =0;
listSize=0;
while (num != -999)
{
cin >>num;
numbers[index] = num;
index++;
listSize++;
}
}
void selectSort (int numbers[], int listSize)
{
int index, minIndex, smallestIndex, temp;
for (index=0; index < listSize - 1;index++)
{
smallestIndex = index;
for (minIndex = index + 1; minIndex < listSize; minIndex++)
if (numbers[minIndex] < numbers[smallestIndex])
smallestIndex = minIndex;
temp = numbers[smallestIndex];
numbers[smallestIndex] = numbers[index];
numbers[index] = temp;
}
}
// Name: James Cabrera
// File: Ex11_Cabrera.cpp
// Date: 2-9-06
// Description: Program that reads in a set of positive integers
// and out puts how many times a number appears in the list.
#include<iostream>
#include<iomanip>
using namespace std;
//function prototypes
void initialize (int numbers[], int listSize);
void readNum (int numbers[], int& listSize);
void selectSort (int numbers[], int listSize);
int main()
{
int Numbers [100];
int count= 0;
int listsize = 100;
int temp;
initialize (Numbers, listsize);
cout <<"Enter a maximum of 100 positive integers ending with -999"<<endl;
readNum (Numbers, listsize);
cout <<endl;
cout <<fixed<<showpoint<<setw(7)<<"Number"<<setw(9)<<"Count"<<endl;
selectSort(Numbers, listsize);
for (int t=0; t< listsize; t++)
{
temp = Numbers[t];
for (int i=0; i < listsize;i++)
{
if (Numbers[i] == temp)
count ++;
}
cout <<setw(5)<<Numbers[t]<<setw(9)<<count<<endl;
count = 0;
}
return 0;
}
void initialize (int numbers[], int listSize)
{
int index;
int Num = 0;
for (index=0; index < 100; index++)
numbers[index] = 0;
}
void readNum (int numbers[], int&listSize)
{
int index =0;
int num =0;
listSize=0;
while (num != -999)
{
cin >>num;
numbers[index] = num;
index++;
listSize++;
}
}
void selectSort (int numbers[], int listSize)
{
int index, minIndex, smallestIndex, temp;
for (index=0; index < listSize - 1;index++)
{
smallestIndex = index;
for (minIndex = index + 1; minIndex < listSize; minIndex++)
if (numbers[minIndex] < numbers[smallestIndex])
smallestIndex = minIndex;
temp = numbers[smallestIndex];
numbers[smallestIndex] = numbers[index];
numbers[index] = temp;
}
}
Edited by happygeek because: fixed formatting
Ancient Dragon 5,243 Achieved Level 70 Team Colleague Featured Poster
suggestion: read the 100 numbers from a file instead of entering them from the keyboard.
#include<iostream>
#include<iomanip>
using namespace std;
//function prototypes
void initialize (int numbers[], int listSize);
void readNum (int numbers[], int& listSize);
void selectSort (int numbers[], int listSize);
int main()
{
int Numbers [100];
int count= 0;
int listsize = 100;
int temp;
initialize (Numbers, listsize);
cout <<"Enter a maximum of 100 positive integers ending with -999"<<endl;
readNum (Numbers, listsize);
cout <<endl;
cout <<fixed<<showpoint<<setw(7)<<"Number"<<setw(9)<<"Count"<<endl;
selectSort(Numbers, listsize);
temp = Numbers[0];
count = 1;
for (int t=1; t< listsize; t++)
{
if(Numbers[t] == temp)
count++;
else
{
cout << "temp = " << temp << " total = " << count;
temp = Numbers[t];
count = 1;
}
}
// display count of final number
cout << "temp = " << temp << " total = " << count;
return 0;
}
void initialize (int numbers[], int listSize)
{
int index;
int Num = 0;
for (index=0; index < 100; index++)
use listSize in above loop
numbers[index] = 0;
}
void readNum (int numbers[], int&listSize)
{
int index =0;
int num =0;
listSize=0;
You don't need variable index. use listSize instead
while (num != -999)
{
cin >>num;
numbers[index] = num;
index++;
listSize++;
}
}
void selectSort (int numbers[], int listSize)
{
int index, minIndex, smallestIndex, temp;
for (index=0; index < listSize - 1;index++)
{
smallestIndex = index;
for (minIndex = index + 1; minIndex < listSize; minIndex++)
if (numbers[minIndex] < numbers[smallestIndex])
smallestIndex = minIndex;
temp = numbers[smallestIndex];
numbers[smallestIndex] = numbers[index];
numbers[index] = temp;
}
}
dwks 149 Posting Whiz in Training
You have to decrement listSize if you don't want it to print -999. eg
cout <<"Enter a maximum of 100 positive integers ending with -999"<<endl;
readNum (Numbers, listsize);
[b]listSize--;[/b]
cout <<endl;
cout <<fixed<<showpoint<<setw(7)<<"Number"<<setw(9)<<"Count"<<endl;
I get repeat info
Show the output.
suggestion: read the 100 numbers from a file instead of entering them from the keyboard.
Or store the numbers in a file and use your OS's redirection capabilities:
C:\>count_numbers <numbers.txt
xjim72 0 Newbie Poster
Thanks guys. Your ideas worked.
You have to decrement listSize if you don't want it to print -999. eg
cout <<"Enter a maximum of 100 positive integers ending with -999"<<endl; readNum (Numbers, listsize); [b]listSize--;[/b] cout <<endl; cout <<fixed<<showpoint<<setw(7)<<"Number"<<setw(9)<<"Count"<<endl;
Show the output.
Or store the numbers in a file and use your OS's redirection capabilities:
C:\>count_numbers <numbers.txt
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.