Поставить число D перед K с функцией AddLeftDigit(D, K) - C (СИ)
Формулировка задачи:
Знаю, что проблема скорее с вызовом функции, но в чем именно уже без понятия. Уверен, что должны быть люди которые на этом не одну собаку сьели. (Я уже писал эту программу правильно и все работало, но потом случайно удалил...)
#include <stdio.h> #include <stdlib.h> #include <math.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int schet(int K) { int count = 1; while ( K = K / 10 ) count++; return count; } int AddLeftDigit(int D, int K){ int res; int i = schet(K); int n ; n = pow(10, i); res=D*n+K; return printf("%d", res); } int main(int argc, char *argv[]) { int D, K; printf("enter D:" ); scanf("%d", & D); if(D>=1&&D<=9){ printf("Enter K:"); scanf("%d", &K); } else{ printf("Error"); } int AddLeftDigit(int D, int K); return 0; }
Решение задачи: «Поставить число D перед K с функцией AddLeftDigit(D, K)»
textual
Листинг программы
#include <stdio.h> int schet(int k) { return (k == 0) ? 0 : 1 + schet(k / 10); } int powint(int b, unsigned e) { return (e == 0) ? 1 : b * powint(b, e - 1); } int AddLeftDigit(int d, int k) { return d * powint(10, schet(k)) + k; } int main() { int d, k; printf("D and K: "); scanf("%d %d", &d, &k); printf("result: %d\n", AddLeftDigit(d, k)); return 0; }
Объяснение кода листинга программы
- Включаем файл стандартного ввода/вывода
- Функция schet(int k) реализует рекурсивную функцию для определения количества цифр в числе k.
- Функция powint(int b, unsigned e) реализует возведение в степень для числа b и степени e.
- Функция AddLeftDigit(int d, int k) добавляет число d с наибольшим весом перед числом k.
- В функции main() считываем числа d и k с помощью scanf().
- Вызываем функцию AddLeftDigit(d, k) и выводим результат на экран с помощью printf().
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д