Форум » C/C++ для начинающих (C/C++ for beginners) » Нахождение произведения цифр числа отличных от нуля с отдельно введенной функцией » Ответить

Нахождение произведения цифр числа отличных от нуля с отдельно введенной функцией

kek4a44: #include <stdio.h> #include <stdlib.h> int pr() { int x,y,c; while (x>0) { c=x%10; if (c==0) x=x/10; else { y=y*(x%10); x=x/10;} } return y; } int main() { int a,b,c; b=1; a=0; scanf("%d", &a); if (a<0) a=-a; b = pr(a,b,c); printf("Proizvedenie: %d\n", b); return 0; } Требования универа чтобы ф-ция pr() была именно отдельной. Прога работает если функция pr() вводится не отельно, а внутри main(), а также если ввести переменные a,b,c глобально, но так нельзя. Прошу помощи

Ответов - 1

Сыроежка: Если я правильно понял, вам нужно найти произведение цифр отличных от 0 числа, переданного в функцию в качестве аргумента. Во-первых, скорей всего вы собираетесь иметь дело с неотрицательными числами. В этом случае аргумент функции следует объявить, как имеющий тип unsigned int вместо int. Если пользователь функции передаст в качестве аргумента число 0, то функция должна возвращать 0. Функция может выглядеть следующим образом [pre2]#include <stdio.h> unsigned int pr( unsigned int x ) { const unsigned int Base = 10; unsigned int product = x == 0 ? 0 : 1; for ( ; x != 0; x /= Base ) { if ( x % Base != 0 ) product *= x % Base; } return product; } int main( void ) { unsigned int x; printf( "Enter a non-negative number: " ); if ( scanf( "%u", &x ) == 1 ) { printf( "The product: %u\n", pr( x ) ); } return 0; } [/pre2] Я надеюсь, что не сделал опечатки, когда набирал текст. Вместо английских слов, используемых в программе в виде сообщений, вы можете использовать русские слова, написанные английскими буквами.



полная версия страницы