Como ingresar dos strings como parametros en una funcion

Iniciado por SNP, 14 Mayo 2012, 23:50 PM

0 Miembros y 1 Visitante están viendo este tema.

SNP

Hola, comense a programar un ensamblador y todo iva bien hasta que intente ingresar dos strings en una funcion, la cual me resulta en un error.

Varias personas me han comentado que utilizando malloc puedo resolver el problema. Pero me caen mal y preferi preguntar aqui.

Código (cpp) [Seleccionar]

void instruccion( string cad, string instruccion, int *n , int *k )

{

    cout<<"INSTRUCCION: ";



    for( ; isspace(cad[*n])==0 && cad[*n]!=59 && cad[*n];  ++(*n),++(*k) ) 
    {

        instruccion.insert( *k, cad, *n, 1 );

        cout<<cad[*n];

    }

        cout<<endl;

}




Kasswed

Ese código no tiene por dónde cogerlo.

¿Has leído algo de C++?

Además no sé por qué dices que trabajs en ensamblador?

¿Qué es lo que quieres conseguir con la función instruccion?
"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.

farresito

Cita de: SNP en 14 Mayo 2012, 23:50 PM
Hola, comense a programar un ensamblador y todo iva bien hasta que intente ingresar dos strings en una funcion, la cual me resulta en un error.

Varias personas me han comentado que utilizando malloc puedo resolver el problema. Pero me caen mal y preferi preguntar aqui.

Código (cpp) [Seleccionar]

void instruccion( string cad, string instruccion, int *n , int *k )

{

    cout<<"INSTRUCCION: ";



    for( ; isspace(cad[*n])==0 && cad[*n]!=59 && cad[*n];  ++(*n),++(*k) ) 
    {

        instruccion.insert( *k, cad, *n, 1 );

        cout<<cad[*n];

    }

        cout<<endl;

}




Empezaste a programar un ensamblador o a programar ensamblador? De todos modos, deberías tener un poco mas de conocimiento, sea el caso que sea, porque el código es difícil de entender. Créeme: en su momento yo también me motive con programar lo que apenas habría podido. Y fue una perdida de tiempo. Te recomiendo que aprendas lo básico. Si realmente tienes conocimiento acerca de temas avanzados, yo tampoco tengo ni idea de como coger este código.

Por cierto, o lo programas en C o en C++, pero no mezcles C y C++, porque según lo que utilices... Te saldrán comportamientos raros raros... A la que te vayas un poco, vas a flipar. Y lo experimente en primera persona.

exel

#3
 El error se encuentra en la palabra "instruccion". Tanto el nombre de la variable como el de la funcion son iguales y esto no debe ser asi. Cambiandole el nombre al parametro String instruccion creo que ya lo tendras solucionado.

Cita de: Kasswed en 15 Mayo 2012, 02:27 AM
¿Qué es lo que quieres conseguir con la función instruccion?

Si mal no entiendo, recorre el primer string y almacena cada caracter en el segundo y a la vez lo imprime en pantalla. Todo eso siempre y cuando no sea un espacio, un punto y coma ni el caracter de final de cadena '\0'. Pero no le veo utilidad alguna en que tenga que recibir un puntero a los indices de cada string.

Saludos

SNP

#4
Cita de: exel en 15 Mayo 2012, 23:10 PM
El error se encuentra en la palabra "instruccion". Tanto el nombre de la variable como el de la funcion son iguales y esto no debe ser asi. Cambiandole el nombre al parametro String instruccion creo que ya lo tendras solucionado.

Si mal no entiendo, recorre el primer string y almacena cada caracter en el segundo y a la vez lo imprime en pantalla. Todo eso siempre y cuando no sea un espacio, un punto y coma ni el caracter de final de cadena '\0'. Pero no le veo utilidad alguna en que tenga que recibir un puntero a los indices de cada string.

Saludos

Bien, eso es lo que hace la funcion. De manera que cambiando el nombre de la variable o el nombre de la funcion dejarian de estar en conflicto. Ya veo, y con respecto a lo de los punteros en cada indice, bueno creo que exajere al ponerlos, pero, tengo otra funcion que de igual forma utilizo punteros en los indices y no representa ningun problema. Es lo mismo si utilizo o no el apuntador?

En fin, solucionado seria algo asi, no?
Código (cpp) [Seleccionar]

void instruccion( string cad, string instruct, int *n , int *k )

{

    cout<<"INSTRUCCION: ";



    for( ; isspace(cad[n])==0 && cad[n]!=59 && cad[n];  ++(*n),++(*k) ) 
    {

        instruccion.insert( *k, cad, *n, 1 );

        cout<<cad[n];

    }

        cout<<endl;

}
 

Saludos.

exel

#5
 El codigo seria


void instruccion( string cad, string instruct, int *n , int *k )

{

   cout<<"INSTRUCCION: ";



   for( ; isspace(cad[n])==0 && cad[n]!=59 && cad[n];  ++(*n),++(*k) )  
   {

       instruct.insert( *k, cad, *n, 1 );

       cout<<cad[n];

   }

       cout<<endl;

}


En concepto, la unica diferencia seria lo que pasas como argumento en cada llamada a la funcion. Sin embargo, en realidad dentro del sistema suceden procesos totalmente diferentes. Es un tema de arquitectura de computadores

Saludos