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

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

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

парни нужна помощь!!!!!!!!! есть задание: Заполнить файл f целыми числами, полученными с помощью генераторра случайных чисел. Из файла f получить файл g, исключив повторные вхождения чисел. Порядок следования чисел сохранить. немогу исключив повторные вхождения чисел.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
const int ARRSIZE = 100;
 
int compare(int a, int*b);
int k = 0;
int main(int argc, char *argv[]) 
{
    setlocale(LC_CTYPE,"rus");
    int arrPut[ARRSIZE],arrIn[ARRSIZE];
    int newArr[ARRSIZE];
    int i = 0,j = 0,k = 0;

    srand(time(NULL));
    
    for(i=0;i<ARRSIZE;i++){
        arrPut[i] = rand() %99;
    }

    FILE *f;
    f = fopen("f.txt","wt");
    
    for(i=0;i<ARRSIZE;i++){
        fprintf(f,"%d ", arrPut[i]);
    }
    
    fclose(f);

    f = fopen("f.txt","r");
    
    printf("f!\n\n");
    if(f == 0){
        printf("Cannot open file!\n");
    }
    
    for(i=0;i<ARRSIZE;i++){
        fscanf(f,"%d", &arrIn[i]);
        printf("%d ", arrIn[i]);
    }
    fclose(f);
    printf("\n\n\n");

    for(i=0;i<ARRSIZE;i++){
        newArr[i] = NULL;
    }
    
    newArr[0] = arrIn[0];
    printf("%d ", newArr[0]);
    
    /**/
    while(i<ARRSIZE){
        if(compare(arrIn[i],&newArr)){
            newArr[j+1] = arrIn[i];
            j++;
        }
        i++;
    }

    for(i=0;i<ARRSIZE;i++){
        if(newArr[i] != NULL)printf("%d ", newArr[i] );
    }
    
    system("pause");    
    return 0;
}
 
int compare(int a,int* b){
    for(k=0;k<ARRSIZE;k++){
        if(a == b[k]){
            return 0;
        }else{
            return 1;
        }
    }
}

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
 
//-----------------------------------------------------------------------------
int Random(int min, int max) {
    return (rand() % (max - min + 1)) + min;
}
//-----------------------------------------------------------------------------
void PutRandomDigits(FILE* f, unsigned count, int min, int max) {
    while (count--) {
        fprintf(f, "%d ", Random(min, max));
    }
}
//-----------------------------------------------------------------------------
int Find(FILE* f, unsigned value) {
    int isFind = 0;
    int buff;
 
    rewind(f);
 
    while ((fscanf(f, "%d", &buff) == 1) && (isFind = (buff == value)) == 0) { ; }
 
    return isFind;
}
//-----------------------------------------------------------------------------
void PushBack(FILE* f, unsigned value) {
    fseek(f, 0, SEEK_END);
 
    fprintf(f, "%d ", value);
}
//-----------------------------------------------------------------------------
void FromTo(FILE* from, FILE* to) {
    int buff;
 
    while (fscanf(from, "%d", &buff) == 1) {
        if (!Find(to, buff)) {
            PushBack(to, buff);
        }
    }
}
//-----------------------------------------------------------------------------
 
int main(int argc, char* argv[]) {
    if (argc != 3) {
        fprintf(stderr, "Usage: %s <FILE1> <FILE2>\n", argv[0]);
        return EXIT_FAILURE;
    }
 
    FILE* f = fopen(argv[1], "w");
    FILE* g = fopen(argv[2], "w");
 
    assert(f && g);
 
    srand(time(NULL));
 
    PutRandomDigits(f, 100, 0, 20);
 
    fclose(f);
    fclose(g);
    f = fopen(argv[1], "r");
    g = fopen(argv[2], "a+");
 
    FromTo(f, g);
 
    fclose(g);
    fclose(f);
 
    return EXIT_SUCCESS;
}

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


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

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

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