Найти полусумму от введенного и обратного ему числа - C (СИ)
Формулировка задачи:
Доброго дня!
По условию задачи необходимо определить число, обратное введенному и вычислить полусумму этих чисел.
Пример:
вводим число 123 и получаем - (123+321)/2
Вроде как программу рабочую сделал, но хотел бы уточнить данный вид решения является оптимальным или можно данную задачу решить проще?
#include<stdio.h> #include<stdlib.h> #include<math.h> int main() { system ("chcp 1251"); system ("cls"); int a,b; printf("введите число= "); scanf("%d",&a); int t=a,k=0; //определяем сколько цифр введено while (t!=0) { t/=10; k++; } //определяем число, обратное введенному t=a; int c=0,n=0; for (n=0; n<k; n++) { b=t%10; t/=10; c=b*pow(10,k-n)+c; } c/=10; printf("\n обратное число= %d", c); //вычисляем полусумму чисел printf("\n polsum= %d", (a+c)/2); getchar(); return 0; }
Решение задачи: «Найти полусумму от введенного и обратного ему числа»
textual
Листинг программы
int a,b; printf("введите число= "); scanf("%d",&a); b=0; for (int t=a; t; t/=10) b=b*10+t%10; printf("\n обратное число= %d", b); //вычисляем полусумму чисел printf("\n polsum= %f", (a+b)/2.0);
Объяснение кода листинга программы
- Объявляются две переменные типа int -
a
иb
. - Пользователю предлагается ввести число, которое сохраняется в переменной
a
. - Переменная
b
инициализируется нулем. - В цикле for перебираются все цифры числа
a
, начиная с его старшего разряда. Для каждой цифры выполняется операция умноженияb
на 10 и сложения с остатком от деленияt
на 10 (что дает цифру числа, взятую с обратным знаком). Результат сохраняется в переменнойb
. - Выводится обратное число, сохраненное в переменной
b
. - Вычисляется полусумма чисел
a
иb
. Для этого сначала выполняется операция сложенияa
иb
, а затем результат делится на 2.0 (что дает полусумму с плавающей точкой). - Выводится полусумма чисел
a
иb
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д