954,124 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

number of times each number in array occurs?

Hi everyone! I need to write program that will find the average of 20 element array and also display the number of each number in the array occurs.
I have sorted average number but straggle with "number of occurrences". Please help!!!!

#include<stdio.h>
#include<math.h>
 
main()
{
float avg,sum=0;
int i,j;
int numbers[20]; /*array declaration*/
for(i=0;i<20;i++)
{
printf("\nEnter number: ");
scanf("%d",&numbers[i]); /*store data in array*/
}
for(i=0;i<20;i++)
sum=sum+numbers[i]; /*read data from array*/
avg = sum/20;
printf("\n\nAverage number of this 20 numbers is %5.2f\n\n\n",avg);
Katya
Newbie Poster
3 posts since Dec 2006
Reputation Points: 10
Solved Threads: 0
 

First of all use int main( void ) and not just main( ) since its not standard.

Don't hard code values in your program, if you want to process 20 values make a preprocessor defination at the start of your program which can easily be modified if you are asked to change the requirements. Using magic numbers as such causes a lot of confusion.

Can you give us a sample run or a dummy example of what kind of output you are expecting ? Are you required to store the occurances or just display them?

~s.o.s~
Failure as a human
Administrator
11,938 posts since Jun 2006
Reputation Points: 3,281
Solved Threads: 733
 

Thank you for your reply!

This program should be displayed on the screen in two columns, i.e col.1: the number and col.2: the number of occurences.

Katya
Newbie Poster
3 posts since Dec 2006
Reputation Points: 10
Solved Threads: 0
 

Hmm..if thats the case then all you are required to do is to use nested loops. Here is a short algorithm:Create a variable count which will keep track of the occurances of the numbers.
Start an outer loop with i as the counter or index, initialize it with 0 and continue looping till i is less than the number of elements or till all the elements have been visited.
Create an inner loop with j as the counter, initialize it in the same manner as the previous loop.
Inside the inner loop check if [I]my_array equals my_array[j] and if it does, increment the counter by one.
Close the inner for loop and after the loop completion, print out the value of counter which should be the number of times the element [I]my_arrayhas occured along with the element under consideration.
Reset the counter value back to zero for the remaining elements.
Keep looping the outer loop till all the elements have been visited.
End.
Hope it helped, bye.

~s.o.s~
Failure as a human
Administrator
11,938 posts since Jun 2006
Reputation Points: 3,281
Solved Threads: 733
 

thanks a lot!

Just one more question. What do you mean by "and if it does, increment the counter by one"?

Katya
Newbie Poster
3 posts since Dec 2006
Reputation Points: 10
Solved Threads: 0
 
thanks a lot! Just one more question. What do you mean by "and if it does, increment the counter by one"?

counter = counter + 1

iamthwee
Posting Expert
5,950 posts since Aug 2005
Reputation Points: 1,543
Solved Threads: 439
 

What I mean is :

// if the element of array matches with another element in the same 
// array, then increment the counter.

if( my_array[i] == my_array[j] ) 
{
     ++counter ; // counter = counter + 1
}

// my_array = {1, 2, 1, 3, 4, 5 }
// my_array[i] = my_array[0] = 1 
// counter = 2 ( since 1 has a match at 0th and 2nd position )


Hope it helped, bye.

~s.o.s~
Failure as a human
Administrator
11,938 posts since Jun 2006
Reputation Points: 3,281
Solved Threads: 733
 
#include <conio.h>
#include <fstream.h>
#include <iomanip.h>
#include <iostream.h>
  
ofstream fout;                                    // output textfile declaration
using namespace std;

// =============================================================================

int main ()

  {
    int i, count;
    char reply;
    double x[100];

    fout.open ("array.txt");                    // prepares output textfile

    // introduction

    for (i = 1; i <= 9; i++)
      {
        cout << endl;
      }
    cout << setw (52) << "STORING DATA IN AN ARRAY" << endl;
    cout << endl << endl;
    cout << setw (66) << "This program will prompt the user for a set of numbe";
    cout << "rs:" << endl;
    cout << endl << endl;
    cout << setw (56) << " Press ENTER to continue ... ";
    cin.get ();
    
    // prompting the user for a set of numbers
    
    count = 0;

    fout << setw (52) << "Data stored in array";
    fout << endl << endl;

    do // while there is more input data
       {
         count++;
     
    do // while data is incorrect
       {
         clrscr ();
          
         for (i = 1; i <= 11; i++)
              {
                cout << endl;
              }

         cout << setw (56) << "Enter data " << count << "or enter -1 to end";
         cout << " data entry:";
         cin >> x [count];

    if (count % 25 == 0)

        {
         
         fout << "\f";
         fout << setw (45) << "Values Stored in an Array";
         fout << endl << endl;
         
        } 
            do // while response is invalic
              {
                clrscr ();

                for (i = 1; i <= 11; i++)
                  {
                    cout << endl;
                  }

            while (y != -1);
              }
   do // record verified data in output textfile
      {
        fout << setw (32) << "#" << count << ")" << setw (5) << count;
        fout << endl << endl;

      do // while response is invalid
          {
            clrscr ();

            for (i = 1; i <= 9; i++)
              {
                cout << endl;
              }
          }
   while (count != -1)
       }

    cin.get ();
    fout.close ();                                     // closes output textfile
    return 0;

  }
shuncyk
Newbie Poster
3 posts since Oct 2007
Reputation Points: 10
Solved Threads: 0
 

Use code tags when you post code -- otherwise it will be an unreadable mess.

This is also the C programming forum, not the C++ one, so C++ code is out of place.

It's also old-style C++ code. You're using and etc, which are pre-standard. Use and instead. Also, you're declaring an ofstream before the using namespace std, which shouldn't work if you use the right header files. Declare it afterwards.

dwks
Posting Whiz in Training
269 posts since Nov 2005
Reputation Points: 185
Solved Threads: 28
 

Hi friends i want the perfect code to find the number of occurance of each number in an array?(in c/c++/java)plz provide comments to understand
Ex:output should be as follows
Enter values
1,1,2,3,4,4

1->2
2->1
3->1
4->2

alekhya.p123
Newbie Poster
1 post since Oct 2010
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You