Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Проблема с кодом на C. Как сделать так, чтобы сумма была после самих цифр

Код, в котором в консоль должна выводиться сумма 2 чисел(Например: ввожу число 11, выведется 112, если введу 3333, то выведется 336336). Ниже пример кода


#include <stdio.h>

void insert_sum(int x) {
int result = 0; // Переменная для результата
int factor = 1; // Фактор для позиций цифр
int digit_count = 0; // Счетчик для количества цифр
int first_digit = 0; // Первая цифра пары

// Проходим по цифрам числа
while (x > 0) {
int second_digit = x % 10; // Получаем последнюю цифру
x /= 10; // Убираем последнюю цифру
digit_count++;

if (digit_count % 2 == 1) {
// Это первая цифра в паре
first_digit = second_digit; // Сохраняем первую цифру
result += first_digit * factor; // Добавляем первую цифру в результат
factor *= 10; // Переход к следующему разряду
} else {
// Это вторая цифра в паре
result += second_digit * factor; // Добавляем вторую цифру
factor *= 10; // Переход к следующему разряду

// Считаем сумму двух цифр
int sum = first_digit + second_digit;

// Проверяем, является ли сумма цифрой
if (sum >= 0 && sum <= 9) {
result += sum * factor; // Вставляем сумму
factor *= 10; // Переход к следующему разряду
}
}
}

// Выводим результат
printf("Результат: %d\n", result);
}

int main() {
int x;
printf("Введите числа (для завершения введите 0): ");
while (1) {
scanf("%d", &x);
if (x == 0) { // Выход из цикла при вводе 0
break;
}
insert_sum(x); // Обработка введенного числа
}
return 0;
}

По дате
По рейтингу
Аватар пользователя
Новичок
6мес

#include <stdbool.h>
#include <stdio.h>

typedef struct {
int head;
int tail;
} Number;

int sum_digits(int value) {
int sum = 0;
do {
sum += value % 10;
} while (value /= 10);
return sum;
}

int digit_push_back(int number, int digit) {
if (digit < 10) {
number * 10 + digit;
}
return number;
}

Number split(int value) {
Number number;
number.head = value / 100;
number.tail = value % 100;
return number;
}

int main(void) {
int value;
while (true) {
printf(">>> ");
scanf("%i", &value);
if (!value) break;
printf("<<< ");
if (value < 10) {
printf("%d", value);
} else if (value < 100) {
int sum = sum_digits(value);
printf("%d", value);
if (sum < 10) {
printf("%d", sum);
}
} else if (value < 10000) {
Number number;
int sum_head, sum_tail;
number = split(value);
sum_head = sum_digits(number.head);
sum_tail = sum_digits(number.tail);
printf("%d", number.head);
if (sum_head < 10 && 9 < number.head) {
printf("%d", sum_head);
}
printf("%d", number.tail);
if (sum_tail < 10) {
printf("%d", sum_tail);
}
} else {
printf("%d", value);
}
putchar('\n');
}
return 0;
}

Аватар пользователя
Искусственный Интеллект
6мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546
 #include <stdio.h> 
 
void insert_sum(int x) { 
    int result = 0;      // Переменная для результата 
    int factor = 1;      // Фактор для разрядов 
 
    // Преобразуем число в обратном порядке для обработки пар цифр 
    while (x > 9) { 
        int second_digit = x % 10; // Последняя цифра 
        x /= 10;                  // Убираем последнюю цифру 
        int first_digit = x % 10; // Предпоследняя цифра 
        x /= 10;                  // Убираем предпоследнюю цифру 
 
        // Вычисляем сумму и добавляем в результат 
        int sum = first_digit + second_digit; 
        result += (second_digit * factor) + (first_digit * factor * 10); 
        if (sum < 10) { // Добавляем сумму, если она однозначная 
            result += sum * factor * 100; 
            factor *= 1000; 
        } else { 
            factor *= 100; // Переход к следующей паре цифр 
        } 
    } 
 
    // Если осталась одна цифра 
    if (x > 0) { 
        result += x * factor; 
    } 
 
    // Вывод результата 
    printf("Результат: %d\n", result); 
} 
 
int main() { 
    int x; 
    printf("Введите числа (для завершения введите 0): "); 
    while (1) { 
        scanf("%d", &x); 
        if (x == 0) { 
            break; // Завершение программы 
        } 
        insert_sum(x); 
    } 
    return 0; 
} 
 

·