Компоненты бинарного файла – массивы, состоящие из 5 целых чисел. Вывести на экран те из них, которые не содержат четных значений - C (СИ)
Формулировка задачи:
Компоненты бинарного файла – массивы, состоящие из 5 целых чисел. Вывести на экран те из них, которые не содержат четных значений.
не могу понять где ошибка, выводятся все числа
#include <stdio.h> #include <stdlib.h> #define N 5 FILE *fin,*fout; double Chet(int*,int); void write_mas(int*,int); int main(void) { int buf,*a,chet,mas[N]; int i,j,kol; fin=fopen("files1.dat","wb"); if (fin==NULL) { puts("error"); system("pause"); return 1;} printf("Vvedite kol-vo massivov: "); scanf("%d",&kol); for (i=0; i<kol; i++) { printf ("massiw В№ %d \n",i+1); printf ("\n"); for (j=0;j<5;j++) { printf ("wwedine element"); scanf ("%d" , & mas[j]); } printf ("\n"); fwrite(mas,sizeof(int),N,fin); } fclose(fin); fin=fopen("files1.dat","rb"); if (fin==NULL){puts("error"); system("pause"); return 1;} while(fread(mas,sizeof(int)*N,1,fin)==1) { write_mas(mas, N); printf("\n",Chet(mas,N)); } system("pause"); fclose(fin); return 0; } double Chet(int *a,int n) { int i; double chet; for (i = 0; i < n; i++) if (a[i] % 2 != 0) { for (i = 0; i < n; i++) { printf ("%d ", a[i]); } } else printf(" "); } void write_mas(int* a,int n) { int i; for (i=0; i<n; i++) printf("%d\t",a[i]); }
Решение задачи: «Компоненты бинарного файла – массивы, состоящие из 5 целых чисел. Вывести на экран те из них, которые не содержат четных значений»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 5 FILE* fin, *fout; int chet(int*, int); void write_mas(int*, int); int main(void) { int mas[N]; int i, j, kol; fin = fopen("files1.dat", "wb"); if (fin == NULL) { puts("error"); system("pause"); return 1; } printf("Vvedite kol-vo massivov: "); scanf("%d", &kol); for (i = 0; i < kol; i++) { printf("massiw № %d \n", i + 1); printf("\n"); for (j = 0; j < 5; j++) { printf("wwedine element"); scanf("%d" , & mas[j]); } printf("\n"); fwrite(mas, sizeof(int), N, fin); } fclose(fin); fin = fopen("files1.dat", "rb"); if (fin == NULL) { puts("error"); system("pause"); return 1; } while (fread(mas, sizeof(int)*N, 1, fin) == 1) { if (!chet(mas, N)) { write_mas(mas, N); printf("\n"); } } system("pause"); fclose(fin); return 0; } int chet(int* a, int n) { int isChet = 0; while (--n && !isChet) { isChet = a[n] % 2; } return isChet; } void write_mas(int* a, int n) { int i; for (i = 0; i < n; i++) { printf("%d\t", a[i]); } }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы.
- Создаются функции для проверки четных чисел и записи массива в файл.
- В функции main создается и открывается файл для записи массивов.
- Пользователю предлагается ввести количество массивов для записи.
- В цикле происходит запись каждого массива в файл.
- Файл закрывается и открывается для чтения.
- В цикле происходит чтение массивов из файла.
- Если массив не содержит четных чисел, он выводится на экран и записывается в другой файл.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д