Получение файла g, образованного из f исключением повторных вхождений одного и того же числа - C (СИ)
Формулировка задачи:
В общем. Чего я пытаюсь добиться. Компоненты файла f – целые числа. Получить файл g, образованный из f исключением повторных вхождений одного и того же числа.
На первый взгляд мне показалось, что я написал подходящий алгоритм и уже было обрадовался. Но заметил, что программа сверяет только соседние числа и при вводу 223, она перенесет 23, а при 232, перенесет 232.
Пытался написать цикл при условии поиска до конца файла EOF. Но в итоге упираюсь в бесконечный цикл.
Процесс ввода чисел у меня идет отдельной функцией.
PS. Писать я еще только учусь =)
int chtrfile() { char text[200]; FILE *f; f = fopen("readme.txt", "r+t"); printf("Введите текст\n"); getchar(); fgets(text, 200, stdin); fputs(text, f); printf("Данные записаны в файл.\n"); fclose(f); getchar(); return 0; }
int zam1() { char t[200], a, b; int c = 1, s = 1; FILE *f, *g; f = fopen("readme.txt", "r"); g = fopen("zad2.txt", "w+"); fgets(t, 200, f); for (int i = 0; i < 200; i++) { c = 1; a = t[i]; while (a != t[i+1] && c == 1) { fprintf(g, "%c", a); c = 0; } } fclose(f); fclose(g); return 0; }
Решение задачи: «Получение файла g, образованного из f исключением повторных вхождений одного и того же числа»
textual
Листинг программы
//gcc 5.4.0 #include <stdio.h> int main(void) { char buf[200]; int digits[10] = {0}; fgets(buf, 200, stdin); for (int i=0; buf[i]; ++i) { if (digits[buf[i] - '0'] == 0) { printf("%c", buf[i]); digits[buf[i] - '0'] = 1; } } return 0; }
Объяснение кода листинга программы
- Вводится строка с числами, разделёнными пробелами.
- В массиве digits инициализированы все элементы нулями.
- В цикле считывается каждый символ из введённой строки.
- Проверяется, что digit для текущего символа равен нулю.
- Если условие выполняется, то символ выводится на экран, а значение digit для этого символа устанавливается равным единице.
- Цикл продолжается до тех пор, пока не будут обработаны все символы из введённой строки.
- Программа завершается без ошибок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д