Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- //ВОРНИНГ
- //прочитал только первые 100 строк файла, потомушо у меня там где-то
- //null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
- //null,null,null,null,null,null,null,null,null,null,null,null,null,null,null
- //ну и так далее, но если у вас с фальком все хорошо, то всегда можно исправить len на необходимое значение,
- //а именно на <количество строк в файле - 1>
- struct date {
- int year, mounth, day;
- };
- struct btc {
- struct date d;
- double open, high, low, close, adj_close;
- int volume;
- };
- int read_struct(const char* filename, struct btc* all) {
- int i = 0;
- char work[100];
- FILE* f = fopen(filename, "r");
- if (f == NULL) {
- return -1;
- }
- fgets(work, 100, f);
- while (!feof(f)) {
- if (fgets(work, 100, f) == NULL)break;
- //printf("%s", work);
- sscanf(work, "%d-%d-%d,%lf,%lf,%lf,%lf,%lf,%d", &all[i].d.year, &all[i].d.mounth, &all[i].d.day,
- &all[i].open, &all[i].high, &all[i].low, &all[i].close, &all[i].adj_close, &all[i].volume);
- //sscanf(work, "%lf,%lf,%lf,%lf,%lf,%d", &all[i].open, &all[i].high, &all[i].low, &all[i].close, &all[i].adj_close);
- i++;
- }
- fclose(f);
- return 0;
- }
- void print(struct btc* all, int len) {
- for (int i = 0; i < len; i++)
- 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,
- all[i].low, all[i].close, all[i].adj_close, all[i].volume);
- }
- double avg(struct btc* all, int len) {
- double sum = 0;
- int i;
- for (i = 0; i < len; i++)
- sum += all[i].close;
- return sum / len;
- }
- double max_dif(struct btc * all, int len) {
- double max = -1, sum_high = 0, sum_low = 0;
- int i;
- for (i = 0; i < len; i++) {
- sum_high += all[i].high;
- sum_low += all[i].low;
- if ((i % 7) == 0) {
- if (fabs(sum_high - sum_low) > max) max = fabs(sum_high - sum_low);
- sum_high = 0;
- sum_low = 0;
- }
- }
- if (fabs(sum_high - sum_low) > max) return fabs(sum_high - sum_low);
- return max;
- }
- int main() {
- struct btc* all;
- //вот она лен
- int len = 100;
- all = (btc*)malloc(sizeof(btc) * len);
- if (all == NULL) {
- printf("malloc error\n");
- return -1;
- }
- if (read_struct("C:\\Users\\m video\\Desktop\\work with\\BTC-USD.csv", all) != 0) {
- printf("some read error\n");
- return -1;
- }
- print(all, len);
- printf("avg close = %lf\nmax difference = %lf\n", avg(all, len), max_dif(all, len));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment