fork(1) download
  1. #include <stdio.h>
  2.  
  3. double sum_tab(double tab[], size_t tsize);
  4. void print_tab(double tab[], size_t tsize);
  5.  
  6. int main(void) {
  7. double X = 234.234324;
  8. double tab_in[] = { 2, -0.01, 100, 1 };
  9. size_t tsize = sizeof(tab_in)/sizeof(double);
  10. double tab_out[tsize], tab_tmp[tsize];
  11.  
  12. for(size_t i=0;i<tsize;++i) { tab_out[i] = X/tsize; }
  13. for(size_t i=0;i<tsize;++i) { tab_tmp[i] = tab_out[i]*tab_in[i]; }
  14. double sum = sum_tab(tab_tmp, tsize);
  15.  
  16. if(sum) {
  17. double ratio = X/sum;
  18. for(size_t i=0;i<tsize;++i) { tab_out[i] = tab_tmp[i]*ratio; }
  19. }
  20.  
  21. puts("in_tab:");
  22. print_tab(tab_in, tsize);
  23.  
  24. printf("\nX=%5.5f\n", X);
  25. puts("out_tab:");
  26. print_tab(tab_out, tsize);
  27. printf("suma=%5.5f\n", sum_tab(tab_out, tsize));
  28.  
  29.  
  30.  
  31.  
  32. return 0;
  33. }
  34. void print_tab(double tab[], size_t tsize) {
  35. for(size_t i=0;i<tsize;++i) {
  36. printf("%5.5f ", tab[i]);
  37. if((i%5)==4) { putchar('\n'); }
  38. }
  39. printf("\n");
  40. }
  41. double sum_tab(double tab[], size_t tsize) {
  42. double sum = 0;
  43. for(size_t i=0;i<tsize;++i) { sum += tab[i]; }
  44. return sum;
  45. }
Success #stdin #stdout 0s 2168KB
stdin
Standard input is empty
stdout
in_tab:
2.00000 -0.01000 100.00000 1.00000 

X=234.23432
out_tab:
4.54868 -0.02274 227.43405 2.27434 
suma=234.23432