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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD  (Leído 15,112 veces)
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Referencia de un char [] en una función.
« Respuesta #10 en: 25 Marzo 2011, 14:01 pm »

Es esto? http://www.cplusplus.com/reference/iostream/stringstream/
Es que yo esto nunca lo había visto creo. xD



Mira un ejemplo de lo que quiero. Es que no se si me habéis entendido o no os entiendo yo xDD.
Si podéis fijaros en global me funciona.
Código
  1. #include <iostream>
  2. using namespace std;
  3. char hola[20];
  4. class clase{
  5.    private:
  6.    public:
  7.        clase();
  8.        //char hola[20];
  9.        void cambiar_nombre(char *name,int a,int b);
  10. };
  11. clase::clase(){
  12.    //strcpy(hola,"megaman-01.bmp");
  13. };
  14. void clase::cambiar_nombre(char *name,int a,int b){
  15.    char c[2];
  16.    itoa(a,c,10);
  17.    name[b]=c[0];
  18.    name[b+1]=c[1];
  19.    cout << c[0] << endl;
  20.    cout << c[1] << endl;
  21.    cout << name << endl;
  22.    cout << name << endl;
  23.  
  24. };
  25. int main(int argc,char *argv[]){
  26.    clase c;
  27.    strcpy(hola,"megaman-01.bmp");
  28.    c.cambiar_nombre(hola,15,8);
  29.    cout << "\n----------------------------"<< endl;
  30.    cout << hola;
  31.    cin.get();
  32.    cin.get();
  33.  


« Última modificación: 25 Marzo 2011, 15:12 pm por Xafi » En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Referencia de un char [] en una función.
« Respuesta #11 en: 25 Marzo 2011, 14:58 pm »

Te lo puse en el segundo post, después que dijeras que "no usas printf y esas cosas". >,<

Hay que fijarse más


En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Referencia de un char [] en una función.
« Respuesta #12 en: 25 Marzo 2011, 16:20 pm »

Te lo puse en el segundo post, después que dijeras que "no usas printf y esas cosas". >,<

Hay que fijarse más
Estoy ciego perdido perdona XDD

Por cierto sabéis alguno de esto en español?

EDITO:
Usando sprintf me pasa lo mismo con la asignación.
Código
  1. #include <iostream>
  2. using namespace std;
  3. //char hola[20];
  4. class clase{
  5.    private:
  6.    public:
  7.        clase();
  8.        char hola[20];
  9.        void cambiar_nombre(char *name,int a,int b);
  10. };
  11. clase::clase(){
  12.    strcpy(hola,"megaman-01.bmp");
  13. };
  14. void clase::cambiar_nombre(char *name,int a,int b){
  15.    char c[2];
  16.    sprintf(c, "%d",a);
  17.    name[b]=c[0];
  18.    name[b+1]=c[1];
  19.    cout << c[0] << endl;
  20.    cout << c[1] << endl;
  21.    cout << name << endl;
  22.    cout << name << endl;
  23.  
  24. };
  25. int main(int argc,char *argv[]){
  26.    clase c;
  27.    c.cambiar_nombre(c.hola,15,8);
  28.    cout << "\n----------------------------"<< endl;
  29.    cout << c.hola;
  30.    cin.get();
  31.    cin.get();
  32.    return 0;
  33. }



EDITO 2:

Akai tu querias decir esto?
Código
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. int main(int argc,char *argv[]){
  5.    char t[2];
  6.    char cadena[20];
  7.    strcpy(cadena,"megaman-01.bmp");
  8.    sprintf(t,"%d",20);
  9.    cadena[8]=t[0];
  10.    cadena[9]=t[1];
  11.    cout << cadena;
  12.    cin.get();
  13.    return 0;
  14. }

EDITO 3: XDDD

Mi código de buscar carácter y modificarlo funciona solo me hace falta aprender lo de referenciar. Para poder modificar variables no globales con la función XDD.
Código
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. void acarga_imagen(char *name,int n, int v){
  5.    char t[2];
  6.    for(int i=0;i<n;i++){
  7.        for(int j=0;;j++){
  8.            if(name[j]=='.')break;
  9.            if(name[j]=='-'){
  10.                sprintf(t,"%d",v);
  11.                if(v<10)name[j+1]='0';
  12.                else name[j+1]=t[0];
  13.                if(v<10)name[j+2]=t[0];
  14.                else name[j+2]=t[1];
  15.                break;
  16.            }
  17.        }
  18.    }
  19.    cout << name;
  20. };
  21. int main(int argc,char *argv[]){
  22.    char nombre[]="megaman-01.bmp";
  23.    acarga_imagen(nombre,1,5);
  24.    //cout << nombre;
  25.    cin.get();
  26.    return 0;
  27. }code]

EDITO4: pfff.
He tenido que solucionar una cosa que me daba error por que se me cerraba el programa y erá al asignarle un valor a el puntero lo que he tenido que hacer es copiar el puntero a una array de la funcion y modificar la array .
CODE.
Código
  1. void sprite::acarga_imagen(char *name,int n){
  2.    char t[2];
  3.    char t2[20];
  4.    strcpy(t2,name);
  5.    for(int i=0;i<n;i++){
  6.        for(int j=0;;j++){
  7.            if(name[j]=='.')break;
  8.            if(name[j]=='-'){
  9.                sprintf(t,"%d",i+1);
  10.                if(i<10)t2[j+1]='0';
  11.                else t2[j+1]=t[0];
  12.                if(i<10)t2[j+2]=t[0];
  13.                else t2[j+2]=t[1];
  14.            }
  15.        }
  16.        ERROR << t2 << endl;
  17.        animacion[i]=SDL_LoadBMP(t2);
  18.        SDL_SetColorKey(animacion[i],SDL_SRCCOLORKEY,SDL_MapRGB(animacion[i]->format,ct.r,ct.g,ct.b));
  19.    }
  20. };
« Última modificación: 25 Marzo 2011, 23:56 pm por Xafi » En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
« Respuesta #13 en: 29 Marzo 2011, 13:55 pm »

Si quieres pasar por referencia en C++, es tan simple como:
Código
  1. void sprite::acarga_imagen(char* name,int & n){

De esta forma, pasas n por referencia. Fin del problema


Por otro lado, lo de sprintf, si, me refería a eso, PERO falla una cosa, sprintf si el número es menor que 10, no te va a imprimir 09 o 08, por tanto, no tienes dos carácteres en la cadena (entendiendo estos dos carácteres como representables (numeros, letras), y posiblemente tengas el final de cadena). Entonces, eso deberás gestionarlo tu (si num <10 haces de una forma, sino, de otra)
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
« Respuesta #14 en: 29 Marzo 2011, 15:17 pm »

Ya lo he solucionado no se que era lo que me pasaba XD siento las molestias gracias.

Código
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. class clase{
  5.    private:
  6.    public:
  7.        clase();
  8.        char nombre[100];
  9.        void acarga_imagen(char *name,int n);
  10. };
  11. clase::clase(){
  12.    strcpy(nombre,"megaman-01.bmp");
  13. };
  14. void clase::acarga_imagen(char *name,int n){
  15.    char t[2];
  16.    for(int i=1;i<n+1;i++){
  17.        for(int j=0;;j++){
  18.            if(name[j]=='.')break;
  19.            if(name[j]=='-'){
  20.                sprintf(t,"%d",i);
  21.                if(i<10)name[j+1]='0';
  22.                else name[j+1]=t[0];
  23.                if(i<10)name[j+2]=t[0];
  24.                else name[j+2]=t[1];
  25.                break;
  26.            }
  27.        }
  28.        cout << name << endl;
  29.    }
  30. };
  31. int main(int argc,char *argv[]){
  32.    clase c;
  33.    c.acarga_imagen(c.nombre,5);
  34.    cin.get();
  35.    return 0;
  36. }
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
« Respuesta #15 en: 29 Marzo 2011, 15:29 pm »

Un consejo, Xafi:
Si esta comprobación
Código
  1.  if(i<10)name[j+1]='0';
  2.                else name[j+1]=t[0];
  3.                if(i<10)name[j+2]=t[0];
  4.                else name[j+2]=t[1];

La sacases fuera del bucle, ganarías en velocidad. De hecho, podrías hacer dos bucles, uno de 0 a 9, otro de 10 en adelante.

Simplemente un consejo para evitar comprobaciones que no tienen sentido una vez pasas la frontera del 10
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
« Respuesta #16 en: 29 Marzo 2011, 16:11 pm »

Un consejo, Xafi:
Si esta comprobación
Código
  1.  if(i<10)name[j+1]='0';
  2.                else name[j+1]=t[0];
  3.                if(i<10)name[j+2]=t[0];
  4.                else name[j+2]=t[1];

La sacases fuera del bucle, ganarías en velocidad. De hecho, podrías hacer dos bucles, uno de 0 a 9, otro de 10 en adelante.

Simplemente un consejo para evitar comprobaciones que no tienen sentido una vez pasas la frontera del 10
Voy analizar bien lo que dices para ver si lo puedo optimizar como dices en lo escrito. pero creo que lo conforme esta los hace esa comparación cuando llega al '-'.
Gracias.

EDITO: vale creo que ya entendí XD
EDITO2: No se me ocurre otra forma XDDD
EDITO3: La única forma que se me acaba de ocurrir es esta.
Código
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. class clase{
  5.    private:
  6.    public:
  7.        clase();
  8.        char nombre[100];
  9.        void acarga_imagen(char *name,int n);
  10. };
  11. clase::clase(){
  12.    strcpy(nombre,"megaman-01.bmp");
  13. };
  14. void clase::acarga_imagen(char *name,int n){
  15.    char t[2];
  16.    for(int i=1;i<n+1;i++){
  17.        if(n<10){
  18.            for(int j=0;;j++){
  19.                if(name[j]=='.')break;
  20.                if(name[j]=='-'){
  21.                    sprintf(t,"%d",i);
  22.                    name[j+1]='0';
  23.                    name[j+2]=t[0];
  24.                    break;
  25.                }
  26.            }
  27.        }
  28.        else {
  29.            for(int j=0;;j++){
  30.                if(name[j]=='.')break;
  31.                if(name[j]=='-'){
  32.                    sprintf(t,"%d",i);
  33.                    name[j+1]=t[0];
  34.                    name[j+2]=t[1];
  35.                    break;
  36.                }
  37.            }
  38.        }
  39.  
  40.        cout << name << endl;
  41.    }
  42. };
  43. int main(int argc,char *argv[]){
  44.    clase c;
  45.    c.acarga_imagen(c.nombre,5);
  46.    cin.get();
  47.    return 0;
  48. }

PD: Creo que así me ahorra un "if".
« Última modificación: 29 Marzo 2011, 16:34 pm por Xafi » En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
« Respuesta #17 en: 29 Marzo 2011, 16:35 pm »

Si, a eso me refería. Y no, no te ahorras un if. Bueno, quizá en el código si, pero en ejecución ahorras iterar comprobando cada vez.
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
« Respuesta #18 en: 29 Marzo 2011, 17:08 pm »

Si, a eso me refería. Y no, no te ahorras un if. Bueno, quizá en el código si, pero en ejecución ahorras iterar comprobando cada vez.
Como puedo saber formas de optimizar mis códigos?
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
« Respuesta #19 en: 29 Marzo 2011, 19:18 pm »

Puff... Ahí ya no sabría decirte tan claro. Principalmente la experiencia va enseñándote esos truquillos con el tiempo. Por otro lado, tener en cuenta los costes asimptóticos de tus algoritmos también te va dando esa visión.

Luego hay libros que se meten bastante en ese tema pero el único que conozco es Code Complete 2, de Steve McConnel. En si es un libro dedicado a desarrollo de software, pero incluye un capítulo de optimización y "tunning" de código, (no tengo enlace para descargarlo, pero estoy seguro que no será dificil encontrarlo).

Por otro lado, quizá sea suerte mía que en la facultad haya tenido hasta ahora, en las asignaturas relacionadas con la programación, profesores bastante exigentes con el tema de los costes.
En línea

Páginas: 1 [2] 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Referencia a argumento en funcion.-
Programación Visual Basic
mdg 1 2,148 Último mensaje 9 Agosto 2007, 23:43 pm
por CeLaYa
funcion palindroma por referencia(con punteros)
Programación C/C++
roser24 1 5,753 Último mensaje 6 Mayo 2010, 03:01 am
por biribau
Hacer referencia al último archivo modificado en un directorio
Scripting
TheMaker 2 5,630 Último mensaje 4 Octubre 2010, 16:39 pm
por orvtech
Pasar matriz char a una función como referencia
Programación C/C++
KISKE 2 7,288 Último mensaje 18 Junio 2013, 13:07 pm
por KISKE
Problemas pasando por referencia un char...
Programación C/C++
jomoza 1 1,673 Último mensaje 20 Diciembre 2014, 22:47 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines