Получить в файле 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;
}

Объяснение кода листинга программы

  1. Подключаются необходимые библиотеки
  2. Задаются начальные значения переменных
  3. Открывается файл f на запись
  4. В файл f записываются случайные числа, разделенные пробелами
  5. Файл f закрывается
  6. Открывается файл f на чтение
  7. Открывается файл g на запись
  8. Пользователю предлагается ввести значения n и m
  9. В цикле считываются числа из файла f
  10. Если число делится на n и на m без остатка, то оно записывается в файл g
  11. Файл g закрывается
  12. Файл f закрывается
  13. Если не удалось открыть файл g, выводится сообщение об ошибке
  14. Если не удалось открыть файл f, выводится сообщение об ошибке
  15. Программа завершается с кодом 0

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы