# Noob here Just curious learning to code

 Lucas Cowles · February 14, 2015 Hello all,I have been following Buckey's tutorials and I add something to the end of them just to see what would happen. This time I added something really simple but the code did not give me the output I expected here is the code. #include #include int main(){    float grade = 0;    float scoreEntered = 0;    float numberoftest = 0;    float avg = 0;    printf("Press 0 when complete. \n\n");    do {           printf("test:%.0f\t\tAverage:%.02f \n", numberoftest, avg);           printf("\n Enter test score: ");           scanf(" %f",&scoreEntered);           grade += scoreEntered;           numberoftest++;           avg = grade / numberoftest;    }while(scoreEntered !=0);    return 0;} output on the averages are about 21 points different.Just curious as to why?thanks.

## Replies

 imran LP · February 16, 2015  yeah Lucas Cowles · February 15, 2015 Thank you all so much for the info,imran LP, that was the answer I was looking for. I was not realizing it was using that zero as a test score as well after doing the calculation that is exactly what was happening. before I go to the next lesson I will figure how to make it do what I want now that I know how it came up with that other value for average. Lazer thanks for the link.   Appreciate the help, I was trying to really understand it before moving on and it was bugging me. Lazar Bulic · February 15, 2015 Ok this problem is a little more complex. I didn't test the program good when i said to remove 0. So here are some screen shoots. Here is your original code. You can see the difference between calculator and the program. So in the next picture I just removed the 0.2 so the program prints all decimal points. But as you can see on the last one there is mistake again.So in the last example I declared ``double avg;``and the result was again accurate but again limited to a curtain point. So I was told the C just wants to be fast and after some points randomly adds numbers at x.xxxxxxxxxxxxxxxxxxxxxxxxBut also here is an explanation: http://effbot.org/pyfaq/why-are-floating-point-calculations-so-inaccurate.htm imran LP · February 15, 2015 Lucas listen up . I tried running your code given in the query . And fortunately its working totally fine . i tried it with .%0.02f and %0.2f but yeah the output comes out to same . but anyways your code is working totally fine and even the average is accurate . i couldnt see any "21 points difference " see here i entered full marks so that we ll have no confusion calculating it manually . i entered 3 test scores i.e : 100, 100,90 and the average for this is 96.67 . so thats clear the theres no error in the codeAnd now talking about the code that u modified and you are expecting some answer. well you cant expect your answer.know why ?because you are going wrong . look at the output once again and see there you are already getting your output in the end in this example my over all average is 96.67 . but wait . this is the average of 3 Tests and in case to stop calculating the average (according to this set of code) you gotta press 0 and the code will end then and there , its done. its a do while statement . but you modified your test and added """"printf("your total average is: %.2f ",avg);"""" this thing there so the program continues . but at this time what it ll do is its will calculate the average of FOUR tests rather then THREE  why ? because we entered 0 to exit the calculation part but it didnt really get it what to do . and the computer thinks we have entered 4 values so its giving out the average of  4 tests .see herethats the average of 4 tests not three tests and so you are thinking that the average is coming out wrong.Now all i can say is what you are expecting cant be done through this code . we need to write different codes for that and even i donno how to do so . need to think . LOL even am a beginner just been two weeks. Lucas Cowles · February 15, 2015 Thanks for the replies.Lazer, I removed the 0. I thought man it was that easy......but that did not solve it.. I tried combining the code but that opened up a whole new can of worms. I changed the code but still getting the the mix match in the average.#include #include int main(){    float grade = 0.0;    float scoreEntered = 0.0;    float numberoftest = 0.0;    float avg = 0.0;    printf("Press 0 when complete. \n\n");    do{            printf("test: %.0f \t\t Average: %.2f \n", numberoftest, avg);            printf("\n Enter test score: ");            scanf(" %f", &scoreEntered);            grade += scoreEntered;            numberoftest++;            avg = grade / numberoftest;    }while(scoreEntered);     printf("your total average is: %.2f ",avg);    return 0;} Lazar Bulic · February 14, 2015 Just remove 0 if front of 2fI am talking about this line: ``printf("test:%.0f\t\tAverage:%.02f \n", numberoftest, avg);``Also you can simplify you code by merging these to lines:``printf("test:%.0f\t\tAverage:%.02f \n", numberoftest, avg);avg = grade / numberoftest;``P.S. you don't have to set value to  scoreEntered. Tomislav Keškić · February 14, 2015 try to initialize grade,scoreEnter,etc to 0.0 and run the program again
• 1

## C

124,681 followers