shadeyourself

prices

Apr 22nd, 2020
630
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.63 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <math.h>
  6. //ВОРНИНГ
  7. //прочитал только первые 100 строк файла, потомушо у меня там где-то
  8. //null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
  9. //null,null,null,null,null,null,null,null,null,null,null,null,null,null,null
  10. //ну и так далее, но если у вас с фальком все хорошо, то всегда можно исправить len на необходимое значение,
  11. //а именно на <количество строк в файле - 1>  
  12. struct date {
  13.     int year, mounth, day;
  14. };
  15.  
  16. struct btc {
  17.     struct date d;
  18.     double open, high, low, close, adj_close;
  19.     int volume;
  20. };
  21. int read_struct(const char* filename, struct btc* all) {
  22.     int i = 0;
  23.     char work[100];
  24.     FILE* f = fopen(filename, "r");
  25.     if (f == NULL) {
  26.         return -1;
  27.     }
  28.  
  29.     fgets(work, 100, f);
  30.     while (!feof(f)) {
  31.         if (fgets(work, 100, f) == NULL)break;
  32.         //printf("%s", work);
  33.         sscanf(work, "%d-%d-%d,%lf,%lf,%lf,%lf,%lf,%d", &all[i].d.year, &all[i].d.mounth, &all[i].d.day,
  34.             &all[i].open, &all[i].high, &all[i].low, &all[i].close, &all[i].adj_close, &all[i].volume);
  35.         //sscanf(work, "%lf,%lf,%lf,%lf,%lf,%d", &all[i].open, &all[i].high, &all[i].low, &all[i].close, &all[i].adj_close);
  36.         i++;
  37.     }
  38.     fclose(f);
  39.     return 0;
  40. }
  41. void print(struct btc* all, int len) {
  42.     for (int i = 0; i < len; i++)
  43.         printf("%d-%d-%d,%lf,%lf,%lf,%lf,%lf,%d\n", all[i].d.year, all[i].d.mounth, all[i].d.day, all[i].open, all[i].high,
  44.             all[i].low, all[i].close, all[i].adj_close, all[i].volume);
  45. }
  46. double avg(struct btc* all, int len) {
  47.     double sum = 0;
  48.     int i;
  49.     for (i = 0; i < len; i++)
  50.         sum += all[i].close;
  51.     return sum / len;
  52. }
  53. double max_dif(struct btc * all, int len) {
  54.     double max = -1, sum_high = 0, sum_low = 0;
  55.     int i;
  56.     for (i = 0; i < len; i++) {
  57.         sum_high += all[i].high;
  58.         sum_low += all[i].low;
  59.         if ((i % 7) == 0) {
  60.             if (fabs(sum_high - sum_low) > max) max = fabs(sum_high - sum_low);
  61.             sum_high = 0;
  62.             sum_low = 0;
  63.         }
  64.     }
  65.     if (fabs(sum_high - sum_low) > max) return fabs(sum_high - sum_low);
  66.     return max;
  67. }
  68. int main() {
  69.     struct btc* all;
  70.     //вот она лен
  71.     int len = 100;
  72.     all = (btc*)malloc(sizeof(btc) * len);
  73.     if (all == NULL) {
  74.         printf("malloc error\n");
  75.         return -1;
  76.     }
  77.     if (read_struct("C:\\Users\\m video\\Desktop\\work with\\BTC-USD.csv", all) != 0) {
  78.         printf("some read error\n");
  79.         return -1;
  80.     }
  81.     print(all, len);
  82.     printf("avg close = %lf\nmax difference = %lf\n", avg(all, len), max_dif(all, len));
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment