Среднее арифметическое четных элементов целочисленного файла - 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, означающее успешное выполнение программы.