elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ejercicio de Recursividad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio de Recursividad  (Leído 4,196 veces)
gringo89

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ejercicio de Recursividad
« en: 15 Abril 2012, 22:51 pm »

Hola gente, ando haciendo un tp y me quede trancado en una parte, les dejo el enunciado del problema:

A partir de un texto de más de 100 caracteres, deberá consideralo como un puntero a Char y aplicar aritmetica de punteros.
Deberá contar cuantas veces se repite cada letra, cuantas son vocales, cuantas consonantes y cuantos blancos, en una única pasada, mediante una funcion recursiva final.
Deberá escribir como comentario del codigo, cuales son los tipos y las funciones que intervienen en la definicion recursiva.
Deberá transformarla según dichos parametros en una función iterativa que calcule lo mismo.
Ambas deben retornar un arreglo con los valores encontrados para cada letra, las vocales, las consonantes y los blancos.
Es decir, que deberá programar dos funciones que devuelvan el mismo resultado, una recursiva final y otra iterativa.


osea tengo que hacer el mismo ejercicio, pero uno usando recursividad y el otro iteracion.
Hice casi todo, pero no se como realizar el conteo de el numero de veces que esta cada letra en el texto mediante la función recursiva, si pudieran darme una pista les agradecería.

Les dejo el codigo que realice hasta ahora:

----------------------------------------------------------------------------------------------------------------
/* A partir de un texto de más de 100 caracteres, deberá consideralo como un puntero a Char y
aplicar aritmetica de punteros. Deberá contar cuantas veces se repite cada letra,
cuantas son vocales, cuantas consonantes y cuantos blancos, en una única pasada, mediante una funcion recursiva final.
Deberá escribir como comentario del codigo, cuales son los tipos y las funciones que intervienen en la definicion recursiva.
 Deberá transformarla según dichos parametros en una función iterativa que calcule lo mismo.
Ambas deben retornar un arreglo con los valores encontrados para cada letra, las vocales, las consonantes y los blancos.
 
Es decir, que deberá programar dos funciones que devuelvan el mismo resultado, una recursiva final y otra iterativa. */


#include <cstdlib>
#include <iostream>
#include <iomanip>

using namespace std;


void igualar(char *, char *);
void FuncionRe (char *, int, int, int, int);
void FuncionIt(char *, char*);

  
  
 int main()
 {
    int const cant=21;                          
    char texto[cant]="abcdefabcd  abcdefkl";
    char aux[cant]= "";
    int cont=0;
    //cout << "Introduce una frase: " << endl;
    //cin.getline(texto,20, '\n');
    cout << "Tu frase es: '" << texto << "'" << endl << endl;
    
    
    
    cout<< "Con funciones iterativas : " << endl;
    igualar(texto, aux);
    FuncionIt(aux, texto);
    cout<< endl << endl << endl << "---------------------------------------------------------------" << endl<< "Con funciones recursiva : " << endl;
    igualar(texto, aux);
    FuncionRe(texto, 0, 0, 0, 0);
  
 
 
    system("PAUSE");
    return 0;    
      
}  

void igualar (char *tex, char *au)
{
     //cout<<" TEX ES = " << tex << endl;
    
     for(int i=0;i<20;i++)
        {    
        //au=tex;
            *(au+i)=*(tex+i);
            //cout<<" *(AU+i) ES = " << *(au+i) << endl;
        }
    
     //cout<<" AU ES = " << au << endl;
            
}

void FuncionIt(char *b, char *text)
{
    
    char *g;
    char v,z;
    g=b;
    int contvoc=0, contcons=0, contesp=0;
    
    
    for(int i=0;i<20;i++)
        
         {
         int contletrep=0;            
      
            
                         for(int j=(i+1);j<(20);j++)
                                 {
                                     v=g;
                                     z=g[j];
                                    
                                   if((g)==(*(g+j)))
                                      if(*(g+j)!=NULL)
                                      {        
                                                
                                                //cout<<endl<<"Compara : "<<v<<" con: "<<z<<endl;                      
                                                contletrep++;
                                                //cout<<"\n"<<"entra al if"<<cont<<endl;
                                                
                                                *(g+j)=NULL;
                                                
                                            
                                       }
                                    
                                   }
                                   if(*(g+i)!=NULL)
                                    if(*(text+i)!=' ')
                                   {cout<<"La cantidad de veces que se repite "<<g<<" es : " << contletrep <<endl;}
                                  
                                  
                                    if( *(text+i) == 'a' || *(text+i)  =='e' || *(text+i)  =='i' ||*(text+i)  == 'o' || *(text+i)  =='u' )
                                   {
                                       contvoc++;
                                   }
                                   else if(*(text+i)==' ')
                                      contesp++;
                                   else
                                       contcons++;
                                          
                                  
         }
     cout<<endl<<"-------------"<<endl;                                    
     cout<< "La cantidad de vocales es = " << contvoc << endl;
     cout<< "La cantidad de consonantes es =" << contcons << endl;
     cout<< "La cantidad de espacios es = " << contesp << endl;
    
}  


void FuncionRe (char *text, int i, int contvoc, int contcons, int contesp)
{  
    if(i>19)
    {
            cout<< "La cantidad de vocales es = " << contvoc << endl;
            cout<< "La cantidad de consonantes es =" << contcons << endl;
            cout<< "La cantidad de espacios es = " << contesp << endl;
            
    }
    
            
    else
    {
                if( *(text+i) == 'a' || *(text+i)  =='e' || *(text+i)  =='i' ||*(text+i)  == 'o' || *(text+i)  =='u' )
                {
                    
                    contvoc++;
                    FuncionRe(text, ++i , contvoc, contcons, contesp);
                }
                else if(*(text+i)==' ')
                {
                     contesp++;
                     FuncionRe(text, ++i , contvoc, contcons, contesp);
                }    
                else
                {
                    contcons++;
                     FuncionRe(text, ++i , contvoc, contcons, contesp);
                }
                
     }      
    
}                      
-----------------------------------------------------------------------------------------------
Para que entiendan mejor, la funcion recursiva es la ultima[ void FuncionRe (char *text, int i, int contvoc, int contcons, int contesp) ]
Hasta ahora solo pude contar cuantas vocales, espacios y consonantes hay, pero no pude contar el numero de cada letra.

muchas gracias.


« Última modificación: 15 Abril 2012, 23:35 pm por gringo89 » En línea

david_BS

Desconectado Desconectado

Mensajes: 99



Ver Perfil WWW
Re: Ejercicio de Recursividad
« Respuesta #1 en: 25 Abril 2012, 01:48 am »

si te ayuda, es algo parecido
http://foro.elhacker.net/programacion_cc/recursividad-t359491.0.html






En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recursividad
Java
rjrn 8 9,771 Último mensaje 17 Marzo 2009, 19:33 pm
por weirdtyping
[Ejercicio] Aca tienen un ejercicio para practicar « 1 2 3 »
Programación Visual Basic
Dreamaker 20 15,740 Último mensaje 5 Septiembre 2010, 02:57 am
por TGa.
Ayuda con ejercicio de recursividad
Programación C/C++
romybe 2 2,067 Último mensaje 24 Septiembre 2014, 08:03 am
por BlackM4ster
EJERCICIO RECURSIVIDAD
Java
Jatorro 0 2,173 Último mensaje 12 Septiembre 2017, 19:19 pm
por Jatorro
recursividad ejercicio basico
Programación C/C++
Beginner Web 2 1,443 Último mensaje 25 Octubre 2018, 16:26 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines