Да се напишат рекурсивни функции, които:
- отпечатват сумата от цифрите на числото
- отпечатва броят на цифрите на числото
Да се напишат рекурсивни функции, които:
[c] за С++ програми [/c]
[pascal] за паскал [/pascal]

за Къде се намира точка
за Вмъкване и изтриване на елемент *
за Позицията на X




за Броят на максималните елементи




за Броят на максималните елементи
за Пари за закуска




за Ученици с дадена оценка




за По-големи от средното| П | В | С | Ч | П | С | Н |
|---|---|---|---|---|---|---|
| « февр. | ||||||
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | ||||||
using namespace std; int sum(int a) { int suma=0; if(a<10) return a; else return suma=a%10+sum(a/10); } int main(int argc, char *argv[]) { int b; cout<<"Vuvedete chislo: \n"; cin>>b; cout<<"Sumata e "<<sum(b)<<endl;Много добре! Само защо ви е променливата suma? Функцията може още малко да се опрости…
#include <cstdlib> #include <iostream> using namespace std; int suma(int chislo){ int result; if (chislo<10) result=chislo; else { int cifra = chislo%10; result=cifra + suma(chislo/10); } return result; } int main(int argc, char *argv[]) { int chislo; cout<<"vavedete chislo: "; cin>>chislo; cout<<suma(chislo); system("PAUSE"); return EXIT_SUCCESS; }#include <cstdlib> #include <iostream> using namespace std; int suma(int sum,int chislo){ if(chislo>0) return suma(sum=sum+(chislo%10),chislo/10); else return sum; } int broi(int chislo,int n){ if(chislo>0) return broi(chislo/10,n=n+1); else return n; } int main(int argc, char *argv[]) { int chislo,sum=0,n=0; cout<<"Vavedi chislo "; cin>>chislo; cout<<"Sumata e: "<< suma(sum,chislo)<<endl; cout<<"Broiat e: "<<broi(chislo,n)<<endl; system("PAUSE"); return EXIT_SUCCESS; }Задачата може още да се опрости.
#include <cstdlib> #include <iostream> using namespace std; int printsum(int a) { if (a<10) return a; else return a%10 + printsum(a/10); } int cifri(int a) { if (a<10) return 1; else return 1+cifri(a/10); } int main(int argc, char *argv[]) { int a; cin>>a; cout<<"Sumata e: "<<printsum(a)<<endl; cout<<"Broqt cifri na chisloto e: "<<cifri(a)<<endl; system("PAUSE"); return EXIT_SUCCESS; }Може и по-кратко :)
Да, може и малко по-кратко – без else :-) Имената на функциите ти не са много удачни.
using namespace std; int sum(int a) { if(a<10) return a; else return a%10+sum(a/10); } int broi(int a) { if(a<10) return 1; else return 1+broi(a/10); } int main(int argc, char *argv[]) { int b; cout<<"Vuvedete chislo:\n"; cin>>b; cout<<"Sumata ot cifrite e "<<sum(b)<<endl; cout<<"Broqt na cifrite e "<<broi(b)<<endl; system("PAUSE"); return EXIT_SUCCESS;Напълно ненужна е била променливата забелязвам. Мисля, че сега е максимално опростена и заедно с второто подусловие :)
Криси
Много добре!
using namespace std; int sum(int a) { int suma=0; if(a<10) return a; else return suma=a%10+sum(a/10); } int broi(int c) { int br=0; if(c<10) return 1; else return br=1+broi(c/10); } int main(int argc, char *argv[]) { int b; cout<<"Vuvedete chislo: \n"; cin>>b; cout<<"Sumata e: "<<sum(b)<<endl; cout<<"Broqt e : "<<broi(b)<<endl; system("PAUSE"); return EXIT_SUCCESS; }Zdravena :)
Вярно, но нямаш нужда от suma и br.
#include <cstdlib> #include <iostream> using namespace std; int suma(int sum,int chislo){ // функция от целочислен тип с параметрпи СУМА и ЧИСЛО от целочислен тип if(chislo>0) // проверяваме дали ч-лото е по-голямо от 0 return suma(sum=sum+(chislo%10),chislo/10); // връща сума на ч-лата else // иначе return sum; // върща СУМА } int broi(int chislo,int n){ // декларираме ф-я от цел. тип с 2 параметъра cnislo и n if(chislo>0)// ако ч-лото е по-голямо от 0 return broi(chislo/10,n=n+1); // връща броя на ч-лата else // иначе return n; // връща n } int main(int argc, char *argv[]) { int chislo,sum=0,n=0; // декларираме 3 променливи, като задаваме стойност 0 на сумата и n cout<<"Vavedi chislo "; // извежда на екрана следния текст cin>>chislo; // въвеждаме ч-ло cout<<"Sumata e: "<< suma(sum,chislo)<<endl; // извежда на екрана сумата на ч-лата cout<<"Broiat e: "<<broi(chislo,n)<<endl; //извежда на екрана броя на ч-лата system("PAUSE"); return EXIT_SUCCESS; }#include <cstdlib> #include <iostream> using namespace std; int suma(int sum,int chislo){ // декларираме функция suma с параметри sum и chislo if(chislo>0) // ако числото е положително return suma(sum=sum+(chislo%10),chislo/10); // връщаме функцията suma, else // в противен случай return sum; // връщаме sum } int broi(int chislo,int n){ // декларираме функция broi с параметри chislo и n if(chislo>0) // ако числото е положително return broi(chislo/10,n=n+1); // връщаме броя на числото без последната цифра else // в противен случай return n; // връщаме n } int main(int argc, char *argv[]) { int chislo,sum=0,n=0; // декларираме chislo,sum=0,n=0 cout<<"Vavedi chislo "; // извеждаме на екрана Vavedi chislo cin>>chislo; // въвеждане от клавиатурата chislo cout<<"Sumata e: "<< suma(sum,chislo)<<endl; // извеждаме на екрана "Sumata e: " извеждаме резултата на функция suma с параметри sum,chislo cout<<"Broiat e: "<<broi(chislo,n)<<endl; // извеждаме на екрана "Broiat e: " , извеждаме резултата на функцията broi(chislo,n) system("PAUSE"); return EXIT_SUCCESS; // край на програмата }