We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
In my project i am incrementing my array 1 and want to find the average of it.
But unfortunately my code is correct when i debugged but it gives an erroneous output when print the output.
I will put my code below can anybody say what is the problem in my function?
float Arr[81][11] = 0; float Ave[81] = 0;
This is my global declaration.
void Monitor_Slot4(void) { if(Slot_4 == 0) { Dev_Curr = fNewVREF_4 / Res; DevCurr_MinLimit = Dev_Curr - PassBand; DevCurr_MaxLimit = Dev_Curr + PassBand; //ROUTINE TO CHECK THE DEVICE VOLTAGE for(r=61;r<=80;r++) { fMonDevVol = 0.0; r = r + 12; fMonDevVol = fReadVoltage(r); r = r - 12; Arr[r][s] += 1; } if(s >= 10) { flt_Average(); s = 0; } return; }
The 's' is incrmented in another function where the control returns after executing the above function.
In the above routine when i watch the value of Arr[r][s] in debug mode the value is correct. But if i try to print the value it is showing a wrong value.
Is this due to memory problem.
void flt_Average(void) { unsigned int u_min,u_max; unsigned int u,v; average = 0.0; Ave[0] = 0.0; if(Slot_1 == 0) {u_min = 1; u_max = 20;} if(Slot_2 == 0) {u_min = 21; u_max = 40;} if(Slot_3 == 0) {u_min = 41; u_max = 60;} if(Slot_4 == 0) {u_min = 61; u_max = 80;} //consider slot_4 is 0 for(u=u_min;u<=u_max;u++) { for(v=1;v<=10;v++) { average += Arr[u][v]; } average /= 10; Ave[u] = average; if((u >= 61) && (u <= 80)) { SBUF= ' '; printf("\n aver is %f",Ave[u]); TI = 0; Delay(10000); SBUF=' '; printf("\n u is %u",u); TI = 0; Delay(10000); } average = 0.0; } return; }
In the above function if i try to print the Ave[u], the value is not '1' since in the previous function the value is always '1'.
I do not know where is the problem is?
Can anybody suggest me where the problem is ?
Actually i take 10 readings in the 2D array,
For example, In arr[1][10] has the ten readings.
After finding the average of these 10 values i store in a 1D array and store as Ave[1].
Sorry, when I read the post the first time, I didn't make the distinction between Arr and Ave.
Please help me i am clueless regarding this problem.
Bcos even when i tried to print the Ave[u] i got the output as shown below,
aver is 5427614000000000000000000000.0 u is 79 aver is -17761960000000000000000000000000000000.0 u is 80
I dont know y this happened.
Even when i tried to print the Arr[r][s] i didnt get the proper value.
Since this project is very urgent i need to finish it out ASAP.
Please suggest where the problem is located.
Are you sure that your array is initialized correctly; you are missing some curly brackets.
Thank you.
I had forgot to put the curley braces.