Could someone explain how the below c++ code works....??
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 4 of 4

Thread: Could someone explain how the below c++ code works....??

Hybrid View

  1. #1
    Join Date
    Dec 2010
    Posts
    11

    Could someone explain how the below c++ code works....??

    Code to determine mode .

    double mode (double numbers [], int i)
    {
    int* Repetition = new int[n];
    for (int i = 0; i < n; ++i)
    {
    Repetition[i] = 0;
    int j = 0;
    bool bFound = false;
    while ((j < i) && (numbers[i] != numbers[j]))
    {
    if (numbers[i] != numbers[j])
    {
    ++j;
    }
    }
    ++(Repetition[j]);
    }
    int mode = 0;
    for (int i = 1; i < n; ++i)
    {
    if (Repetition[i] > Repetition[mode])
    {
    mode= i;

    }
    }
    cout << "Mode\t\t\t\t"<< numbers[mode]<<endl<<endl;
    return 0;
    }

  2. #2
    Join Date
    Apr 1999
    Posts
    27,424

    Re: Could someone explain how the below c++ code works....??

    Quote Originally Posted by mrexp21 View Post
    Code to determine mode .
    1) Your question is not specific to Visual C++. It should have been posted in the non-Visual C++ forum.

    2) Use code tags when posting code. The code you posted is unformatted and almost unreadable. Look here:
    Code:
    double mode (double numbers [], int i)
    {
    	int* Repetition = new int[n];
    	for (int i = 0; i < n; ++i)
    	{
                    Repetition[i] = 0;
                    int j = 0;
                    bool bFound = false;
                    while ((j < i) && (numbers[i] != numbers[j]))
                    {
                            if (numbers[i] != numbers[j])
                            {
                                 ++j;
                            }
                    }
                   ++(Repetition[j]);
    	}
            int mode = 0;
    	for (int i = 1; i < n; ++i)
    	{
    		if (Repetition[i] > Repetition[mode])
    		{
                          mode= i;
    		}
    	}
            cout << "Mode\t\t\t\t"<< numbers[mode]<<endl<<endl;
    	return 0;
    }
    See how that looks?

    3) The person that wrote this code needs to learn proper C++ handling of dynamically allocated memory. The function leaks memory as there is no call to delete[].

    4) Where did the "n" come from here?
    Code:
    int* Repetition = new int[n];
    It isn't declared anywhere. So no one can tell you how the function works, since it can't be compiled due to syntax errors.

    Did you mean this?
    Code:
    double mode (double numbers [], int i)  // should the "i" be really "n"?
    If so, then you must have attempted to type in your code when you posted your message. Don't type in your code -- copy and paste the code from your editor into the message.

    Regards,

    Paul McKenzie
    Last edited by Paul McKenzie; May 28th, 2012 at 11:50 PM.

  3. #3
    Join Date
    Dec 2010
    Posts
    11

    Re: Could someone explain how the below c++ code works....??

    This is my full code....


    #include <iostream>
    #include <cmath>
    #include <fstream>
    using namespace std;
    int n;
    double mean (double numbers[],int );
    double variance_stddeviatian (double numbers[], int );
    double median (double numbers [], int );
    double mode (double numbers [], int );




    void main()
    {
    double numbers[50];
    int i=0;


    cout<< "Please enter the total number of data (n) : ";
    cin>>n;
    cout<<endl;

    ifstream inputFile("data.txt");

    if(!inputFile)
    {
    cerr<<"File could not be opened\n";
    exit(1);
    }

    while(inputFile>>numbers[i])
    {
    cout<<numbers[i]<<" ";
    i++;
    }
    cout<<"\n________________________________________________________________________________"<<endl;
    cout<< "\n\nCentral Numerical Measure\t Value"<<endl;
    cout<<"**************************\t********"<<endl;

    mean(numbers,n);
    median (numbers,n);
    variance_stddeviatian (numbers, n);
    mode (numbers,n);




    }

    double mean (double numbers[],int i )
    {
    double sum = 0;
    for (int i=0; i<n; i++)
    {
    sum += numbers [i];
    }
    cout << "\n\nMean\t\t\t\t"<<sum/n<<endl<<endl;
    return 0;
    }

    double variance_stddeviatian (double numbers[], int i)
    {
    double sum = 0;
    double variance=0;
    for (int i=0; i<n; i++)
    {
    sum += numbers [i];
    variance += pow(numbers[i],2);
    }
    cout << "Variance\t\t\t"<<((variance)-(pow (sum,2)/n))/(n-1)<<endl<<endl;
    cout << "Standard Deviation\t\t"<<sqrt(((variance)-(pow (sum,2)/n))/(n-1))<<endl<<endl;
    return 0;
    }

    double median (double numbers [], int i)
    {
    int x, y;
    double temp;

    for (x=0; x<n; x++)
    for (y=1; y<n; y++)
    if (numbers [x] > numbers [y])
    {
    temp= numbers [x];
    numbers [x] = numbers [y];
    numbers [y]= temp;
    }

    double median = 0;
    if ((n % 2) == 0)
    {
    median = (numbers[n/2] + numbers[(n/2) + 1])/2;
    }
    else
    {
    median = numbers[n/2];
    }
    cout << "Median\t\t\t\t"<<median<<endl<<endl;
    return 0;
    }

    double mode (double numbers [], int i)
    {
    int* Repetition = new int[n];
    for (int i = 0; i < n; ++i)
    {
    Repetition[i] = 0;
    int j = 0;
    bool bFound = false;
    while ((j < i) && (numbers[i] != numbers[j]))
    {
    if (numbers[i] != numbers[j])
    {
    ++j;
    }
    }
    ++(Repetition[j]);
    }
    int mode = 0;
    for (int i = 1; i < n; ++i)
    {
    if (Repetition[i] > Repetition[mode])
    {
    mode= i;

    }
    }
    cout << "Mode\t\t\t\t"<< numbers[mode]<<endl<<endl;
    return 0;
    }

  4. #4
    Join Date
    Apr 1999
    Posts
    27,424

    Re: Could someone explain how the below c++ code works....??

    Quote Originally Posted by mrexp21 View Post
    This is my full code....
    You still did not use code tags when posting code. It looks even worse -- please go back and fix your post so that you include code tags.

    And why are you asking us what it does? Did you write the code? If you did, then you don't know what you wrote?

    Regards,

    Paul McKenzie

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Azure Activities Information Page

Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This is a CodeGuru survey question.


Featured


HTML5 Development Center