Bus error (core dumped)

why my mode is pointer???? when it an array

xcode run it!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <iostream>
#include <ctime>  //ctime was used for NULL and Time.

void read_array(int[], int);
void mode(int[],int);
void print_array(int[], int);



int main ()

{
    int first[SIZE];

    
}
void read_array (int read[] , int size1)
{
    // This will prevent the outcome number to be the same.
    srand (static_cast<unsigned int>(time (NULL)));
    
    for (int index = 0; index < size1; index++)
    {
        // This will create 30 random numbers.
        read[index] = ((rand()30) + 1);
    }
    
    /* **************************************************
     * After the random excute all the information that *
     * the random number obtain it will be passing      *
     * to the mode and print_array.                     *
     ****************************************************/
    
    mode(read, size1);
    print_array(read, size1);
    
}

void mode(int mode[],int size2)
{
    
    /*****************************************
     * The following block is use to find out*
     * mode how many modes there are.        *
     *****************************************/
    
    
    int y[30]={0};//Sets all arrays equal to 0
    int count,max=0,no_mode=0,mode_count=0;
    int num;
    
    for(int k=0; k<size2; k++)//Loop to cout an array from left to right
    {
        count=0;
        num=mode[k];//Num will equal the value of array x[k] 
        // Visual Studio show me mode is pointer???? 
        
        //Nested loop to search for a value equal to x[k]
        for(int i=k; i<size2; i++)
        {
            if(num==mode[i])
        //if a number is found that is equal to x[k] count will go up by one
                count++;
            
        }
        
        // The array y[k] is initialized the value of whatever count
        // is after the nested loop
        y[k]=count;
        
        //If count is greater or equal to two then there must be
        //at least one mode, so no_mode goes up by one
        
        if(count>=2)
        {
            no_mode++;
        }
    }
    //after the for loops have excuted and still no_mode hasn't
    //been incremented,there mustn't be a mode
    if(no_mode==0)
    {
        cout<<"This data set has no modes\n"<<endl;
        return;
    }
    
    for(int j=0; j<size2; j++)
        //A loop to find the highest number in the array
    {
		if(y[j]>max)
            max=y[j];
    }
    
    //This loop finds how many modes there are in the data set
    
    for(int m=0; m<size2; m++)
    {
        //If the max is equal to y[m] then that is a mode
        //and mode_count is incremeted by one
        
        if(max==y[m])
            mode_count++;
    }
    
    //Prints out how many modes there are
    cout<<"This data set has "<<mode_count<<" mode(s)"<<endl;
    cout << endl;
    
    for(int m=0; m<size2; m++)
    {
        //If max is equal to y[m] then the same
        //sub set of array x[] is the actual mode
        if(max==y[m])
        {
            
            cout<<"The value "<<mode[m]<<" appeared "<<y[m]
            <<" times in the data set\n"<<endl;
        }
    }
}

void print_array(int print[], int size3)
{
    for (int i= 0; i < size3; i++)
    {
        // The will prints out number in 10 per lines
        cout<<print[i]<<(((i+1)%10==0)? "\n":"\t\t");
    }
}
Last edited on
Arrays decay to a pointer when you use their name.

see: http://stackoverflow.com/questions/1461432/what-is-array-decaying
Arrays and their relationship with pointers? This might help.
http://www.cplusplus.com/forum/general/70081/#msg373940
Last edited on
Thank you! beside those is there any error that cause Bus error?
Line 71: y[k] = count;
y has 30 elements, k can go from 0 to size2-1, you are going out of bounds of the array.
Line 36 and 37 mode(read, size1); print_array(read, size1); at this pointer read become a pointer? Can anyone show me how to fix so it not a pointer?
Can anyone show me how to fix so it not a pointer?

No, you can not pass an array to a function as an array, it is decayed to a pointer.
Topic archived. No new replies allowed.