Брой и сума на цифри на число

Да се напишат рекурсивни функции, които:

  1. отпечатват сумата от цифрите на числото
  2. отпечатва броят на цифрите на числото
Публикувано в 12в с етикети . Постоянна връзка.

4 коментара по Брой и сума на цифри на число

  1. kaloyan каза:
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int sum=0, br=0;//Глобални променливи
    
    int suma(int chislo){
    	if(chislo!=0){
    		sum=sum+chislo%10;
    		suma(chislo/10);
    	} 
    	return sum;
    }
    
    int broi(int chislo){
    	if(chislo!=0){
    		br++;
    		broi(chislo/10);
    	} 
    	return br;
    }
    
    int main(int argc, char** argv) {
    	cout<<suma(1234)<<endl;
    	cout<<broi(12340)<<endl;
    	
    	system("pause");
        return 0;
    }
    • Данаил каза:

      Добре! Но се опитай да направиш функциите без използване на глобални променливи – те не са препоръчителни (освен в краен случай), защото с тях не може да имаш многонишково извикване на функциите, например. И въобще винаги си изложен на страничните ефекти от това някой друг да ти промени глобалната променлива точно в средата на твоята обработка.

  2. sup3rEva каза:
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
    //1. Отпечатва сумата от цифрите на числото.
    int func(int chislo){
        if (chislo>0)  {
         int a=chislo/1000;
         int b=chislo/100%10;
         int c=chislo/10%10;
         int d=chislo%10;
         int sum=0;
         sum=a+b+c+d;
         cout<<endl<<"Sumata ot cifrite na chisloto e: "<<sum<<endl;
             }
        else cout<<0<<endl;
    }
    //2. Отпечатва броят на цифрите на числото.
    int func2(int chislo, int br){
        if (chislo<10) cout<<"1";
        else {
         br=chislo%10;
    	 chislo=chislo/10;
         
         cout<<endl<<"Broqt na cifrite na chisloto e: "<<br<<endl;    		 
    		 }
    
    }
    
    
    int main(int argc, char *argv[])
    {
        int chislo, br;
        cout<<"Vyvedete chislo: "<<endl<<endl;
        cin>>chislo;
        
        func(chislo);
        cout<<endl<<endl;
        func2(chislo, br);
    	cout<<endl<<endl; 
         
        system("PAUSE");
        return EXIT_SUCCESS;
    }

Вашият коментар