Записать в файл g, компоненты файла f, исключив повторные вхождения чисел - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ребят помогите решить пожалуйста ваще запарка, вся проблема в том что НЕЛЬЗЯ использовать массивы(с массивом сделал все работает) Дан файл f, компоненты которого являются целыми числами. Записать в файл g, компоненты файла f, исключив повторные вхождения чисел. Вот чего то навоял но программа зацикливаеться и создает файлы блокнота по несколько мегабайт) ...
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"
#include "iostream"
const int k=10;
int main()
{
     srand((unsigned)time(NULL));
     int mass[k],i,a,j,t=0,q,w;
         FILE * f, *g; 
   f = fopen("f.txt","w"); 
   for( i=0; i<k; i++ )
   {a=rand() %20; 
    fprintf(f,"%d ",a);
       }
   fclose(f); 
   f = fopen("f.txt","r"); 
    g = fopen("g.txt","w+");
 
fseek(f,0L,0);
fscanf(f,"%d",&q);
fprintf(g,"%d ",q);
do {fscanf(g,"%d",&w);
do{
    fscanf(f,"%d",&q);
    if (q!=w){
        fprintf(g,"%d ",q);
 
        }
    fseek(f,2L,1);
    }
while(q!=EOF);
    fseek(g,2L,1);
    
}
 
    while(w!=EOF );

     fclose(f);
fclose(g);
     getchar();
     return 0;
}
Ребят плз очень надо вопрос жизни и смерти... Точнее допуска к сессии ...

Решение задачи: «Записать в файл g, компоненты файла f, исключив повторные вхождения чисел»

textual
Листинг программы
      while(pos != ftell(fout))
      {
         fscanf(fout, "%d", &t);
         if(t == n) {
            write_flag = 0;
            break;
         }
         else 
            write_flag = 1;
      }

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

В этом коде выполняется следующая последовательность действий:

  1. Открывается файл fout для записи.
  2. Устанавливается начальная позиция файла fout в начало файла.
  3. Запускается цикл while, который будет выполняться до тех пор, пока позиция файла fout не достигнет конца файла f.
  4. Внутри цикла считывается число t из файла fout с помощью функции fscanf.
  5. Если считанное число t равно n, то устанавливается флаг write_flag равным 0 и цикл прерывается с помощью оператора break.
  6. Если считанное число t не равно n, то устанавливается флаг write_flag равным 1.
  7. После завершения цикла, закрывается файл fout.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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