Получить в файле g все компоненты файла f которые делятся на m и делятся на n - C (СИ)
Формулировка задачи:
Заполнить A файл последовательного доступа f целыми числами полученными с помощью генератора случайных чисел получить в файле g все компоненты файла f которые делятся на m и делятся на n.
и ещё нужно подробное описание следующей программы. (всех операторов)
#include <stdio.h>
void main()
{
FILE *file;
char* file_name = "file.txt";
const int N = 10;
int prod = 1, arr[N];
if ((file = fopen( file_name, "w" )) == NULL)
printf ("Error in opening file for writing!");
else
{
printf ("Enter numbers: \n");
for (int i=0; i<N; i++)
{
scanf("%d", &arr[i]);
fprintf (file, "%d ", arr[i]);
}
fclose( file );
}
if((file = fopen( file_name, "r" )) == NULL)
printf ("Error in opening file for reading!");
else
{
int i=0;
while (!feof(file))
{
fscanf(file, "%d ", &arr[i]);
prod *= arr[i++];
}
}
printf ("Product of these numbers: %d \n\n", prod);
}Решение задачи: «Получить в файле g все компоненты файла f которые делятся на m и делятся на n»
textual
Листинг программы
#include "stdio.h"
#include "time.h"
#include "windows.h"
int main(void)
{
FILE *file;
if(file = fopen("f.txt","w"))
{
//Пишем в f
srand(time(NULL));
int n = rand()%100;
for(int i = 0 ; i < n ; i++)
fprintf(file,"%d ",rand()%100);
fclose(file);
if(file = fopen("f.txt","r"))
{
FILE* file2 = fopen("g.txt","w");
int m;
if(file2)
{
printf("Введите n и m: ");
scanf("%d%d",&n,&m);
while(!feof(file))
{
int tmp;
fscanf(file,"%d",&tmp);
if( !(tmp % n) && !(tmp % m) )
fprintf(file2,"%d ",tmp);
}
fclose(file);
fclose(file2);
}
else
printf("Ошибка создания файла g");
}
else
printf("Ошибка открытия файла f");
}
else
printf("Ошибка создания файла f");
return 0;
}
Объяснение кода листинга программы
- Подключаются необходимые библиотеки
- Задаются начальные значения переменных
- Открывается файл f на запись
- В файл f записываются случайные числа, разделенные пробелами
- Файл f закрывается
- Открывается файл f на чтение
- Открывается файл g на запись
- Пользователю предлагается ввести значения n и m
- В цикле считываются числа из файла f
- Если число делится на n и на m без остатка, то оно записывается в файл g
- Файл g закрывается
- Файл f закрывается
- Если не удалось открыть файл g, выводится сообщение об ошибке
- Если не удалось открыть файл f, выводится сообщение об ошибке
- Программа завершается с кодом 0