Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <string.h>
- #include <locale.h>
- #include <stdlib.h>
- using namespace std;
- int const n=5;
- typedef int vector [n];
- int sumDigitsmultiple(vector v, int i, int n);
- int sumDigitslineal(vector v, int i, int n);
- int sumDigitsiteratiu(vector v);
- bool Esdigit(vector v, int i);
- int main(){
- vector v;
- int i=0,d=0;
- char a;
- cout << "Entra els caracters: " << endl;
- while(d<n){
- cin >> a;
- v[d]=a;
- d++;
- }
- cout << "La suma dels digits en recursiu multiple es " << sumDigitsmultiple(v,i,n) << endl;
- cout << "La suma dels digits en recursiu lineal es " << sumDigitslineal(v,i,n) << endl;
- cout << "La suma dels digits en iteratiu " << sumDigitsiteratiu(v) << endl;
- }
- /*Analisi
- Cas trivial:
- sumDigits(v,i,n)=v[i]-48 si i=n ^ Esdigit(v[i])=cert
- sumDigits(v,i,n)=0 si i=n ^ Esdigit(v[i])=fals
- Cas recursiu:
- sumDigits= sumDigits(v,i,(i+n)/2) + sumDigits(v,(i+n)/2+1,n) si i<n
- */
- bool Esdigit(vector v, int i){
- if(v[i]=='0' || v[i]=='1' || v[i]=='2' || v[i]=='3' || v[i]=='4' || v[i]=='5' || v[i]=='6' || v[i]=='7' || v[i]=='8' || v[i]=='9'){
- return true;
- }
- else{
- return false;
- }
- }
- int sumDigitsmultiple(vector v, int i, int n){
- if(i==n){
- if(Esdigit(v,i)){
- return v[i]-48; // Restem 48 per passar de codi ASCII a "valor real"
- }
- else{
- return 0;
- }
- }
- else{
- return sumDigitsmultiple(v,i,(i+n)/2) + sumDigitsmultiple(v,(i+n)/2+1,n);
- }
- }
- /*Analisi
- Cas trivial:
- sumDigits(v,i,n)=v[i]-48 si i=n ^ Esdigit(v[i])=cert
- sumDigits(v,i,n)=0 si i=n ^ Esdigit(v[i])=fals
- Cas recursiu:
- sumDigits= sumDigits(v,i+1,n)+1 si i<n ^ EsDigit(v[i])=cert
- sumDigits= sumDigits(v,i+1,n) si i<n ^ EsDigit(v[i])=fals
- */
- int sumDigitslineal(vector v, int i, int n){
- int subp;
- if(i==n){
- if(Esdigit(v,i)){
- return v[i]-48; // Restem 48 per passar de codi ASCII a "valor real"
- }
- else{
- return 0;
- }
- }
- else{
- subp= sumDigitslineal(v,i+1,n);
- if(Esdigit(v,i)){
- return subp+v[i]-48;
- }
- else{
- return subp;
- }
- }
- }
- int sumDigitsiteratiu(vector v){
- int i=0, f=n, Iini=i, subp;
- while(i<f){
- i=i+1;
- }
- if(Esdigit(v,i)){
- subp=v[i]-48;
- }
- else{
- subp=0;
- }
- while(i!=Iini){
- i=i-1;
- if(Esdigit(v,i)){
- subp=subp+v[i]-48;
- }
- }
- return subp;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement