Среднее арифметическое четных элементов целочисленного файла - C (СИ)
Формулировка задачи:
Помогите доделать задачу. У меня пока только получилось найти количество чётных элементов в файле, а вот со средним арифметическим пока туговато...
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <stdlib.h> int k=0; /* vneshnyaya peremennaya */ int sum=0; int sr_arifm=0; int main() { FILE * file; char namef[18]; /* stroka dlya imeni faila */ /* ========= prototypi ========= */ void read_print_icx(FILE * ); /* chtenie i vivod vxodnogo faila */ void job(char []); /* obrabotka vxodnogo faila */ void uslovie(); /* yuslovie zadachi */ uslovie(); printf("Vvedite imya faila:"); scanf("%s", namef); /* printf("\nnamef=%s\n", namef);*/ if((file=fopen(namef, "r"))==NULL) {printf("File %s ne otkrit!!\n", namef); exit(-1); } read_print_icx(file); job(namef); if(k) printf("k=%d\n", k); else printf("net chetnih elementov\n"); if (sr_arifm) printf("sr_arifm=%d\n", sr_arifm); getch(); return 0; } /* ===== vspomogatel'nie algoritmi: ===== */ void uslovie() { printf("Naytu srednee arifmeticheskoe chetnih chisel tselochislennogo faila.\n"); } /* chtenie i vivod vxodnogo faila */ void read_print_icx(FILE * filein) {int el; printf("\n"); while (fscanf(filein, "%d", &el)!= EOF) printf("! %d ", el); fclose(filein); } /* obrabotka vxodnogo faila */ void job(char namef[]) {int el; FILE * filein; if((filein=fopen(namef, "r"))==NULL) {printf("File %s ne otkrit!!\n", namef); exit(-1); } printf("\n"); while (fscanf(filein, "%d", &el)!= EOF) if (el%2==0) k++; // sum=el; // sr_arifm=sum/k; fclose(filein); }
Решение задачи: «Среднее арифметическое четных элементов целочисленного файла»
textual
Листинг программы
#include <stdio.h> #include <assert.h> int main() { FILE* f; float summ = 0; unsigned count = 0; int value; assert(f = fopen("file.txt", "r")); while ((fscanf(f, "%d", &value)) == 1) { if (value % 2 == 0) { summ += value; count++; } } printf("%f", summ / count); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и проверки assert-ов.
- Объявление переменных:
—
summ
- переменная для хранения суммы четных чисел; —count
- переменная для хранения количества четных чисел. - Открытие файла с помощью
fopen
и проверка на успешное открытие с помощьюassert
. - Чтение чисел из файла с помощью
fscanf
и сохранение их в переменнойvalue
. - Проверка числа на четность с помощью оператора
%
(остаток от деления на 2). - Если число четное, то прибавляем его к
summ
и увеличиваемcount
на 1. - После чтения всех чисел из файла, выводим среднее арифметическое с помощью
printf
. - Закрытие файла с помощью
fclose
. - Возвращение 0, означающее успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д