Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- double getDeviation(FILE * in) {
- int n = 0; // n - количество чисел
- double ans = 0, squaresSum = 0, sum = 0, mediane = 0, current; // ans - ответ
- // squaresSum - сумма квадратов (x_1^2 + x_2^2 + ... + x_n^2)
- // sum - сумма (x_1 + x_2 + ... + x_n)
- // mediane - среднее арифметическое = sum / n
- // current - текущее число
- while (fscanf(in, "%lf", ¤t) == 1) {
- ++n;
- squaresSum += current * current;
- sum += current;
- }
- if (!n) { // if (n == 0)
- fprintf(stderr, "Incorrect file formed\n");
- exit(-1);
- }
- mediane = sum / n;
- ans = (squaresSum - 2 * sum * mediane + mediane * mediane * n) / n;
- return ans;
- }
- int main(void) {
- FILE * in = fopen("input.txt", "r");
- if (!in) {
- perror("Cannot open input file");
- return -1;
- }
- double ans = getDeviation(in);
- fclose(in);
- FILE * out = fopen("output.txt", "w");
- if (!out) {
- perror("Cannot open output file");
- return -1;
- }
- fprintf(out, "%.16lf\n", ans);
- fclose(out);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement