Programación General > C/C++

 Una de punteros y otra de recursividad

(1/3) > >>

o.ficu:
Hola, aca tengo dos pequeños problemas que intento solucionarlo de la manera exactamente en como me piden.
1.- Por ejemplo el siguiente problema con punteros me dicen que si ingreso por ejemplo uuddgge me debe imprimir: 2u2d2g1e  lo cual es facil, pero no se como hacerlo cuando me dicen que la funcion encripta=z mejor dicho z=encripta, supongo que la funcion encripta me debe retornar el 2u2d2g1e y eso es el valor de z, en el programa les explico mejor para no confundirlos:  

--- Código: C --- #include<iostream>#include<stdlib.h> using namespace std;char *encripta(char *p){    int i,c;     for(i=0;i<strlen(p);i++)     {     c=1;           while(*(p+i)==*(p+i+1))           {   c++;               i++;           }           cout<<c<<p[i];     } }int main(){    char x[500],*z;     cout<<"Ingrese una cadena: ";     gets(x);     z=encripta(x);   //Cuando llamo solo a la funcion imprime lo que quiero     cout<<"La cadena enriptada es: "<<z<<endl;  //El problema es aca que no se como hacer para el z tenga los valores de mi funcion encripta     system("PAUSE");     return 0;} 

2.- Es un problema de recursividad, la cual indica que ingreso un numero por ejemplo 184763 y tiene que impirmir 8476 es decir elimina el primer y ultimo digito; esto pude hacerlo pero como siempre viene el problema de que en la funcion solo tenga un parametro intente hacerlo de miles de maneras pero de hechi que hay muchas cosas teoricas que no se o no se como aplicarlas, les explico en el mismo programa:

--- Código: C --- #include<iostream>#include<stdlib.h>#include<math.h>using namespace std;int EliminaDigito(int n,int&i,int&s,int num[57]);   //En el problema me dicen que solo tenga como parametro int EliminaDigito(int n)int EliminaDigito(int n,int &i,int &s,int num[57]){    int k;     if(n>0){  s++;         //cuento el numero de digitos                              SeparaDigito(n/10,i,s,num);               num[i]=n%10;                   if(i==s)//cuando el num de digitos e i sean iguales hago las sgtes operaciones para eliminar el primer y ultimo numero               {                  n=(n-(num[1]*pow(10,s-1)));                 k=n/10;}               i++;               }//FIN DE IF                return k;} int main(){    int n,m,j,i=1,num[57],s=0;     cout<<"Cual es el numero: ";  cin>>n;     cout<<"nEl numero actual es: "<<n<<endl<<endl;     if(n>0&&n<=99){cout<<"0"<<endl;}     else     m=SeparaDigito(n,i,s,num);  //Solo me piden que la funcion sea EliminaDigito(int n)     cout<<"El nuevo numero es: "<<m<<endl<<endl;      system("PAUSE");     return 0;} 

Graciaspor su ayuda nuevamente

r0d:
hola,

estas haciendo una mescla de C y C++ que no es muy bueno...
por ejemplo, el primero problema, en C++, se tiene que escribir asi:

--- Código: C++ ---#include <iostream>#include <sstream>#include <string>using namespace std; string encripta( const string & p ){        stringstream strRet;    string::const_iterator it1 = p.begin();    string::const_iterator it2 = ++it1;    int count = 1;    do    {        if ( *it1 == *it2 )            count++;        else        {            strRet << count << *it1;            it1 = it2;            count = 1;        }        ++it2;    }    while ( it2 != p.end() ) ;     strRet << count << *it1;    return strRet.str();} int main(){        string strIn;    cout << "Ingrese una cadena: ";    cin >> strIn;    string strOut = encripta( strIn );    cout << "La cadena enriptada es: "<< strOut << endl;    cin.get(); cin.get();    return 0;} 

o.ficu:
Gracias!!!! pero no entiendo muy bien, soy novato en esto de programacion y veo que lo que me mandas es en C, y yo estoy usando c++ (Dev c++) te agradeceria si pudieras hacerlo en c++ o en tdo caso indicarme que significa los :: por que no entiendo muy bien, pero igual muchas gracias por ayudarme
Oliver

m0skit0:
C++ es una extensión de C, así que C funciona perfectamente con compiladores de C++.

Los :: indican el espacio o la clase a la que no estamos refiriendo. Consulta un manual de C++  :P

r0d:

--- Cita de: "m0skit0" ---C++ es una extensión de C, así que C funciona perfectamente con compiladores de C++.
--- Fin de la cita ---
Es verdad que soy un poco extremista en ese tema, pero:
1. al principio, efectivamente, era una extension, pero han seguidos dos caminos muy distintos y ahora son dos idiomas totalmente diferentes
2. hay muchas cosas que compilan en C pero no en C++ (void*, goto, etc...), y viceversa
3. los paradigmos son diferentes en C y en C++, así que la fase de concepcion (diseño) no hay nada que ver.
4. el C y el C++ no van a ser utilizados para resolver los mismos problemas.

Queda una parte comùn, pero esta parte comun es cada vez mas pequeña. Y por todas estas razones, es claro que hay que entender - el mas temprano posible en el proceso de aprendizaje - que son dos lenguajes distintos. Porque desde que tengo pragramadores a cargo, esta confusión me lleva muchos problemas. Pero muchos.

Y ademas, si alguine no tiene claro estas diferencias, como va podrà entender bien conceptos como templates, NVI, RAII, LSP, herencia intrusiva, const correctness, ..., conceptos fundamentales para programar bien en C++, pero que no tienen sentido en C.

En serio, el C es mucho mas parecido al PHP que al C++. Son realmente dos lenguajes distintos (con una parte comun, pero cada vez mas pequeña).

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa