Дан массив цифр десятичного числа. Необходимо вычесть/прибавить к числу единицу. Как задать такую функцию в C? - C (СИ)
Формулировка задачи:
#include <stdio.h> void shift(int *a, int n); int main() { FILE* in = fopen("input.txt", "r"); if (in == NULL) { perror("Cannot open input file"); return -1; } int x; int n = 0; while (fscanf(in, "%d", &x) == 1) { ++n; } fseek(in, 0, SEEK_SET); if (n == 0) { fprintf(stderr, "Empty input file.\n"); return -1; } int *a = new int[n]; int m = 0; for (int i = 0; i < n; ++i) { if (fscanf(in, "%d", &(a[i])) == 1) { ++m; } } fclose(in); shift(a, m); FILE* out = fopen("output.txt", "w"); if (in == NULL) { perror("Cannot open output file"); return -1; } for (int i = 0; i < m; ++i) { if (i > 0) { if (i % 10 == 0) fprintf(out, "\n"); else fprintf(out, " "); } fprintf(out, "%d", a[i]); } fprintf(out, "\n"); fclose(out); return 0; }
Решение задачи: «Дан массив цифр десятичного числа. Необходимо вычесть/прибавить к числу единицу. Как задать такую функцию в C?»
textual
Листинг программы
// просмотр файла (как у тебя до строчки 22) int *a = new int[n+1]; a[0] = 0; fseek(in, 0, SEEK_SET); for (int i = 0; i < n; ++i) { fscanf(in, "%d", a+i+1); } int vume = 0; // Перенос разряда "в уме" for(i=n; i>=0; i--) { int c = a[i]+vume; a[i] = c%10; vume = c/10; } // вывод как у тебя
Объяснение кода листинга программы
В данном коде реализована функция чтения десятичного числа из файла и его последующего преобразования в массив цифр.
- Сначала создается динамический массив для хранения цифр числа.
- Затем, начиная с нулевого элемента, в массив последовательно считываются цифры числа.
- После чтения всех цифр, происходит их обработка в обратном порядке с целью формирования числа.
- При обработке каждой цифры, она добавляется к текущему значению переменной
vume
, которая инициализируется нулем. - Полученное значение затем делится на 10, обеспечивая таким образом перенос разряда в следующий разряд числа.
- После обработки всех цифр, число выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д