Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Даниэль Saanishvili Ученик (151), на голосовании 4 часа назад
Код, в котором в консоль должна выводиться сумма 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;
}
Голосование за лучший ответ
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (270535) 1 месяц назад
 #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;
}
·
Николай Веселуха Высший разум (374407) 4 недели назад
#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;
}
Похожие вопросы