fork(2) download
  1. #include <stdio.h>
  2.  
  3. size_t down_rate(double *data,size_t len,unsigned rate_in,unsigned rate_out)
  4. {
  5. double sum=0;
  6. size_t index=0,out=0,in=0;
  7. while(in<len)
  8. {
  9. sum+=data[in++];
  10. index+=rate_out;
  11. if(index>=rate_in)
  12. {
  13. data[out++]=sum*rate_out/index;
  14. index-=rate_in;
  15. sum=0;
  16. }
  17. }
  18. return out;
  19. }
  20.  
  21. int main()
  22. {
  23. double data[]={1,2,3,4,5,6,7,8,9,10};
  24. const size_t len=sizeof(data)/sizeof(*data);
  25. size_t i,nlen;
  26. for(i=0;i<len;++i) printf("%6.1lf",data[i]); printf("\n");
  27. nlen=down_rate(data,len,2,1);
  28. for(i=0;i<nlen;++i) printf("%6.1lf",data[i]); printf("\n");
  29. return 0;
  30. }
Success #stdin #stdout 0s 2156KB
stdin
Standard input is empty
stdout
   1.0   2.0   3.0   4.0   5.0   6.0   7.0   8.0   9.0  10.0
   1.5   3.5   5.5   7.5   9.5