Из файла 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;
}