Заменить в числе каждое вхождение цифры a на цифру b - C (СИ)

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

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

Проблема с такой задачей. Дано число N, а также цифры A и B. Заменить в этом числе каждое вхождение цифры A на цифру B. Технические условия Входные данные Программе даны числа N, A, B (1 ≤ N ≤ 109). Выходные данные Вывести полученное число. Программа выглядит так, только прошла лишь на 88 процентов.
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main() {
  4. int N, a[14], c, d;
  5. int i = 0, j;
  6. scanf("%d %d %d", &N, &c, &d);
  7. if(N < 0) {
  8. N = -N;
  9. }
  10. while(N > 0) {
  11. a[i] = N % 10;
  12. N = N / 10;
  13. i++;
  14. }
  15. for(j = 0; j < i; j++) {
  16. if(a[j] == c) {
  17. a[j] = d;
  18. }
  19. }
  20. for(j = i - 1; j > 0; j--) {
  21. printf("%d", a[j]);
  22. }
  23. printf("%d\n", a[0]);
  24. return 0;
  25. }
Подскажите, что я не учёл?

Решение задачи: «Заменить в числе каждое вхождение цифры a на цифру b»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.     int N,c, d,i=0;
  8.     char a[14];
  9.     scanf("%d %d %d", &N, &c, &d);
  10.     if(N < 0)N = -N;
  11.         if(c>9)c=9;
  12.         if(c<0)c=0;
  13.         if(d>9)d=9;
  14.         if(d<0)d=0;
  15.     while(N > 0)
  16.     {
  17.         a[i] = (N % 10);
  18.         if(a[i] == c)a[i] = d;
  19.         a[i]+='0';// превратили в букву
  20.         N = N / 10;
  21.         i++;
  22.     }
  23.     a[i]=0;// конец строки
  24.     strrev(a); // перевернули строку
  25.     sscanf(a,"%d",&N);// превратили в число
  26.     printf("%d",N);
  27.     getch();
  28.     return 0;
  29. }

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

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

  1. Ввод исходного числа N, за которым вводятся два числа c и d. Если c или d некорректны (больше 9 или меньше 0), то они заменяются на 0.
  2. Инициализируется массив a размером 14 для хранения результата.
  3. Число N приводится к положительному значению, используя операцию модуля (N % 10).
  4. В цикле while происходит деление числа N на 10 и сохранение остатка в массиве a.
  5. Если остаток в массиве a равен c, то он заменяется на d.
  6. Каждое значение в массиве a приводится к числу, добавляя символ '0'.
  7. После окончания цикла, в массиве a остается одно значение, которое является результатом.
  8. Строка в массиве a переворачивается с помощью функции strrev.
  9. Результат в массиве a преобразуется обратно в число с помощью функции sscanf.
  10. Результат выводится на экран с помощью функции printf.
  11. Программа ожидает нажатия клавиши с помощью функции getch.
  12. Программа завершается с кодом 0.

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы