Поставить число 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, чтобы указать, что программа успешно завершилась.