#define _CRT_SECURE_NO_WARNINGS #include #include #include #include void min_max(double* arr, int str, int stl, int* min, int* max, int * sum) { *min = *(arr + stl * str + 0); *max = *(arr + stl * str + 0); *sum = 0; for (int i = 0; i < stl-3; i++) { if (*min > *(arr + stl * str + i)) { *min = *(arr + stl * str + i); } if (*max < * (arr + stl * str + i)) { *max = *(arr + stl * str + i); } *sum += *(arr + stl * str + i); } } int main(int argc, char* argv[]) { setlocale(LC_ALL, "ru"); FILE* file = fopen("in.txt", "r" ); int N, M; char c = '1'; M = N = 0; while (!feof(file)) { do { double tmp; if (fscanf(file, "%lf", &tmp)); { N++; } c = fgetc(file); if (c == '\n') { M++; } } while (c == ' '); } int min, max, sum; double* arr; M++; N/=M; N += 3; arr = calloc(N * M, sizeof(double)); rewind(file); for (int i = 0; i < M; i++) { for (int j = 0; j < N - 3 ; j++) { fscanf(file, "%lf", (arr + i * N + j)); } } for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { printf("%3.3lf ", *(arr + i * N + j)); } printf("\n"); } for (int i = 0; i < M; i++) { min_max(arr, i, N , &min, &max, &sum); *(arr + i * N + (N - 3)) = sum; *(arr + i * N + (N - 2)) = min; *(arr + i * N + (N - 1)) = max; for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { printf("%3.3lf ", *(arr + i * N + j)); } printf("\n"); } } fclose(file); remove("in.txt"); file = fopen("in.txt", "w"); for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { if (j == N - 1) { fprintf(file, "%3.3lf", *(arr + i * N + j)); } else { fprintf(file, "%3.3lf ", *(arr + i * N + j)); } } fprintf(file, "\n"); } fclose(file); free(arr); return 0; }