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

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

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

Проблема с такой задачей. Дано число N, а также цифры A и B. Заменить в этом числе каждое вхождение цифры A на цифру B. Технические условия Входные данные Программе даны числа N, A, B (1 ≤ N ≤ 109). Выходные данные Вывести полученное число. Программа выглядит так, только прошла лишь на 88 процентов.
#include <stdio.h>
#include <string.h>
 
int main() {
 
int N, a[14], c, d;
int i = 0, j;
 scanf("%d %d %d", &N, &c, &d);
if(N < 0) {
 N = -N;
 }
while(N > 0) {
 a[i] = N % 10;
 N = N / 10;
 i++;
 }
for(j = 0; j < i; j++) {
if(a[j] == c) {
 a[j] = d;
 }
 }
for(j = i - 1; j > 0; j--) {
 printf("%d", a[j]);
 }
 printf("%d\n", a[0]);
return 0;
 }
Подскажите, что я не учёл?

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

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main() 
{
    int N,c, d,i=0;
    char a[14];
    scanf("%d %d %d", &N, &c, &d);
    if(N < 0)N = -N;
        if(c>9)c=9;
        if(c<0)c=0;
        if(d>9)d=9;
        if(d<0)d=0;
    while(N > 0) 
    {
        a[i] = (N % 10);
        if(a[i] == c)a[i] = d;
        a[i]+='0';// превратили в букву
        N = N / 10;
        i++;
    }
    a[i]=0;// конец строки 
    strrev(a); // перевернули строку
    sscanf(a,"%d",&N);// превратили в число
    printf("%d",N);
    getch();
    return 0;
}

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

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

  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
Похожие ответы