Click here to Skip to main content
15,884,628 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionRe: Double average Pin
David Crow17-Sep-10 15:58
David Crow17-Sep-10 15:58 
AnswerRe: Double average Pin
Maximilien17-Sep-10 16:59
Maximilien17-Sep-10 16:59 
GeneralRe: Double average Pin
David Crow18-Sep-10 9:33
David Crow18-Sep-10 9:33 
AnswerRe: Double average Pin
Tim Craig18-Sep-10 7:08
Tim Craig18-Sep-10 7:08 
AnswerRe: Double average Pin
Stephen Hewitt17-Sep-10 19:19
Stephen Hewitt17-Sep-10 19:19 
AnswerRe: Double average Pin
Aescleal18-Sep-10 8:26
Aescleal18-Sep-10 8:26 
GeneralRe: Double average Pin
Stephen Hewitt18-Sep-10 20:57
Stephen Hewitt18-Sep-10 20:57 
GeneralRe: Double average [modified] Pin
Stefan_Lang28-Sep-10 2:28
Stefan_Lang28-Sep-10 2:28 
I prefer divide and conquer:
double sum(std::size_t size, double values[]) {
   if (0==size)
      return 0.0;
   else
      return sum(size/2, values) + sum(size-size/2, values+size/2);
}
double average(std::size_t size, double values[]) {
   return sum(size, values)/size;
}


Of course, if your goal is to repeatedly calculate the 'running average' of a stream of numbers, a more efficient implementation might look like this:

double incremental_average(double pre_avg, std::size_t new_size, double new_value) {
   if (new_size > 1)
      return (new_value + pre_avg*(new_size-1))/new_size;
   else
      return new_value;
}
int main () {
   double values[] = {3.5, 5, 7, -2, 3.14, 2.71, 6, 7, 8, 9};
   double avg = 0;
   for (std::size_t i = 0; i < sizeof(values)/sizeof(double); ++i) {
      avg = incremental_average(avg, i+1, values[i]);
      std::cout << "average[" << i+1 << "] = " << avg << std::endl;
   }
}


modified on Tuesday, September 28, 2010 8:52 AM

QuestionUsing Windows DataGridViewTool Pin
Danzy8317-Sep-10 4:42
Danzy8317-Sep-10 4:42 
AnswerRe: Using Windows DataGridViewTool [modified] Pin
Cool_Dev17-Sep-10 5:15
Cool_Dev17-Sep-10 5:15 
GeneralRe: Using Windows DataGridViewTool Pin
Danzy8317-Sep-10 5:34
Danzy8317-Sep-10 5:34 
GeneralRe: Using Windows DataGridViewTool Pin
Cool_Dev17-Sep-10 5:38
Cool_Dev17-Sep-10 5:38 
AnswerRe: Using Windows DataGridViewTool Pin
Rolf Kristensen20-Sep-10 10:10
Rolf Kristensen20-Sep-10 10:10 
QuestionNew into parallel programming, looking for advice Pin
Stefan_Lang17-Sep-10 4:20
Stefan_Lang17-Sep-10 4:20 
AnswerRe: New into parallel programming, looking for advice [modified] Pin
Paul Michalik17-Sep-10 22:35
Paul Michalik17-Sep-10 22:35 
GeneralRe: New into parallel programming, looking for advice Pin
Stefan_Lang19-Sep-10 22:37
Stefan_Lang19-Sep-10 22:37 
GeneralRe: New into parallel programming, looking for advice Pin
Paul Michalik21-Sep-10 5:15
Paul Michalik21-Sep-10 5:15 
Questiongood programmer Pin
Stephan A.17-Sep-10 4:11
Stephan A.17-Sep-10 4:11 
QuestionRe: good programmer Pin
David Crow17-Sep-10 4:19
David Crow17-Sep-10 4:19 
AnswerRe: good programmer Pin
Stephan A.17-Sep-10 4:24
Stephan A.17-Sep-10 4:24 
AnswerRe: good programmer Pin
CPallini17-Sep-10 5:48
mveCPallini17-Sep-10 5:48 
GeneralRe: good programmer Pin
Stephan A.17-Sep-10 23:27
Stephan A.17-Sep-10 23:27 
JokeRe: good programmer Pin
Richard MacCutchan17-Sep-10 7:37
mveRichard MacCutchan17-Sep-10 7:37 
GeneralRe: good programmer Pin
CPallini17-Sep-10 10:25
mveCPallini17-Sep-10 10:25 
GeneralRe: good programmer Pin
AmbiguousName17-Sep-10 22:19
AmbiguousName17-Sep-10 22:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.