Título: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: anonimo12121 en 24 Marzo 2011, 13:05 pm Hola de nuevo. xD mi siguiente problema es el siguiente.
Si le asigno un valor de la forma que está, funciona, pero si lo hago de la forma que esta como comentario no va. Código El objetivo es cambia 2 caracteres por otros distinto de la siguiente forma 01 02 03, quiero decir que es para automatizar un cargado de imágenes que se llamen por ejemplo megaman-01. pues en el programa meteré funcion(megaman-01, cantidad)... mediante bucle hace lo que quiera pero me falla esto. En el caso de usar int si me funciona. Código
Título: Re: Referencia de un char [] en una función. Publicado por: Akai en 24 Marzo 2011, 14:04 pm Voy ahora un poco justo de tiempo para ponerme a mirar qué falla, pero así a primera vista, me da que tu problema está en el uso de itoa:
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/ Lo miraré luego si tengo un rato, mientras, te dejo una alternativa que uso yo en uno de mis programillas: Código este código abre/crea ficheros en la carpeta histogrames con nombre 0.dat, 1.dat etc etc etc. Para tu caso, te podría servir usar algo así pero primero obteniendo la parte sin números del nombre del fichero, para luego juntarlas usando sprintf. Título: Re: Referencia de un char [] en una función. Publicado por: anonimo12121 en 24 Marzo 2011, 14:25 pm Voy ahora un poco justo de tiempo para ponerme a mirar qué falla, pero así a primera vista, me da que tu problema está en el uso de itoa: Lo que tengo entendido de lo que dices es que tenga por ejemplo una archivo .txt o de lo que sea con el nombre del fichero a cargar. Y que cambie solo el número. pero básicamente es lo mismo que yo digo. lo que yo digo es dar el nombre y un bucle recorre 1 vez el nombre y localiza la parte numérica , hasta ahí bien . lo que me falla es el pasar un int a char. Que seria básicamente el int i del bucle.http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/ Lo miraré luego si tengo un rato, mientras, te dejo una alternativa que uso yo en uno de mis programillas: Código este código abre/crea ficheros en la carpeta histogrames con nombre 0.dat, 1.dat etc etc etc. Para tu caso, te podría servir usar algo así pero primero obteniendo la parte sin números del nombre del fichero, para luego juntarlas usando sprintf. Título: Re: Referencia de un char [] en una función. Publicado por: Akai en 24 Marzo 2011, 15:53 pm Pasar de int a char[], te lo he puesto, pero no has mirado lo suficiente:
Código Ese es mi código. Que coloca en la cadena fnom "histogrames/(valor de i).dat Código y con esa simple modificación imprimes un número en la cadena fnom. Hay que mirar más xD Título: Re: Referencia de un char [] en una función. Publicado por: anonimo12121 en 24 Marzo 2011, 16:19 pm Es que no uso printf y eso nunca XD. como sería en c++¿
Título: Re: Referencia de un char [] en una función. Publicado por: Akai en 24 Marzo 2011, 17:23 pm Eso está en C++. sprintf es una función de la biblioteca cstdio. Recordemos que C se puede catalogar como un subconjunto dentro de C++ si miramos que C++ incluye todo (o casi todo) lo de C.
Tu alternativa, posiblemente entre otras, usar sstreams: Código http://cplusplus.com/reference/iostream/stringstream/ Título: Re: Referencia de un char [] en una función. Publicado por: Samael.Black en 24 Marzo 2011, 18:39 pm Código: #include <iostream> Título: Re: Referencia de un char [] en una función. Publicado por: anonimo12121 en 24 Marzo 2011, 23:48 pm Pero me gustaría saber como cambiar un caracter a megaman-01 que sea convirtiendo un int a un char y asignandolo a la posición.
Si miráis este código podéis ver que el valor se le asigna dentro de la función pero fuera no. Código
Título: Re: Referencia de un char [] en una función. Publicado por: KevinSec en 25 Marzo 2011, 02:37 am Código: #include <iostream> ¿Pides esto? Título: Re: Referencia de un char [] en una función. Publicado por: D4RIO en 25 Marzo 2011, 05:14 am @Samael.Black, "stdlib.h"?? O usas C, o usas C++, en el cual la biblioteca estándar de C se usa como <cstdlib>
@Xafi, Algunas cosas Es que no uso printf y eso nunca XD. como sería en c++¿ Diría que no usas C ni C++ nunca, ni siquiera estás asignando correctamente las cadenas, ni declarandoles correctamente, sea para C o para C++. A demás, mencionas no usar "printf y eso" (¿?) y preguntas cómo sería en C++ cuando en tu primer "approach" usas "itoa" ;-) En fin, si vas a usar C++ como "lenguaje", podrías empezar por usar stringstream para convertir un entero a cadena, como te refirió Akai antes, que sería algo asi:Código
Y luego: Código
Para obtener un objeto string conteniendo el número como cadena. Te daré una solución al estilo C++, pero tendrás que investigar cómo hacerlo y escribirlo por tu cuenta, de otra forma sentirías el "placer" de verlo funcionar sin el esfuerzo de aprenderlo, ni el entendimiento necesario :¬¬ Primero, pasarás una referencia de la cadena a una función, no hablo de un puntero, sino una referencia, y usarás la clase string para trabajar con ella. Después, utilizarás stringstream para convertir tu número, modificarás el string, y notarás cómo al pasar una referencia, obtienes los cambios de regreso. Cheers :-* Título: Re: Referencia de un char [] en una función. Publicado por: anonimo12121 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
Título: Re: Referencia de un char [] en una función. Publicado por: Akai 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 Título: Re: Referencia de un char [] en una función. Publicado por: anonimo12121 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". >,< Estoy ciego perdido perdona XDDHay que fijarse más Por cierto sabéis alguno de esto en español? EDITO: Usando sprintf me pasa lo mismo con la asignación. Código
EDITO 2: Akai tu querias decir esto? Código
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
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
Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: Akai en 29 Marzo 2011, 13:55 pm Si quieres pasar por referencia en C++, es tan simple como:
Código
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) Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: anonimo12121 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
Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: Akai en 29 Marzo 2011, 15:29 pm Un consejo, Xafi:
Si esta comprobación Código
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 Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: anonimo12121 en 29 Marzo 2011, 16:11 pm Un consejo, Xafi: 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 '-'.Si esta comprobación Código
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 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
PD: Creo que así me ahorra un "if". Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: Akai 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.
Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: anonimo12121 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?Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: Akai 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. Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: d(-_-)b en 29 Marzo 2011, 20:05 pm 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). No, no es dificil encontrarlo, y menos cuando esta en mi HD: :xD Code Complete 2nd edition by Steve McConnel Torrent: PDF: :http://torrents.thepiratebay.org/5028620/Code_Complete_2nd_edition_PDF_ebook.5028620.TPB.torrent CHM: :http://torrents.thepiratebay.org/4168190/Code_Complete__2nd_Edition_(2004).chm.4168190.TPB.torrent Mediafire: PDF: :http://www.mediafire.com/?lztbze8hi6h0zy9 CHM: :http://www.mediafire.com/?4spc1qrqgwukvx0 saludos... Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: anonimo12121 en 29 Marzo 2011, 23:11 pm Heheh ok gracias.
Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: D4RIO en 30 Marzo 2011, 14:21 pm A primera vista, el código NO es lindo, y es un híbrido entre C y C++. Pero fuera de eso, observa esta parte con algo de detenimiento y criterio:
Código
Es horrible y no tiene sentido. Verificas que el valor de "n" sea menor que 10, pero en realidad deseas verificar el de "i", porque haces el sprintf(t,"%d",i) y supones que si "i" es menor a 10, debes poner un "0". Pero aún si hubieras puesto la "i" donde va, no hay necesidad de poner por un lado: Código
y por otro: Código
porque al fin y al cabo, sprintf puede poner el cero a la izquierda si se lo pides amablemente, y con eso quiero decir que si usas sprintf **leas la documentación** de tal función (y nada de 'no la encontre' porque está en todo internet): LINK (http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/). Usa el formato "%02d" y evitarás ese condicional. Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: Akai en 30 Marzo 2011, 14:23 pm es un híbrido entre C y C++ C++ contiene todo lo de C (cstdio, cstdlib etc etc etc), no existe un hibrido entre ambos si estás programando en C++ Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: anonimo12121 en 30 Marzo 2011, 14:55 pm Bueno si tendrías razón pero todavía no me leído la función cuando me lo lea lo corregiré. xDD Saludos.
Y otra cosa si uso C++ podría usar todo lo de C sin problemas no? “como dice nuestro compañero Akai”. C++ es C mejorado. Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: D4RIO en 30 Marzo 2011, 15:31 pm Ese verso ya me lo sabía. Ok, es soportado dentro de C++, pero no forma parte de su idea.
C++ define un paradigma propio, Les dejo la opinión de Linus Torvalds (me incluyo, y es la opinion de la de la mayor parte de los gurús de C) AQUI (http://lwn.net/Articles/249460/). Citar C++ es C mejorado. Yo lo describiría como una aberraciónSaludos Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: Akai en 30 Marzo 2011, 16:09 pm como dice nuestro compañero Akai”. C++ es C mejorado. NO, eso no lo digo yo. Yo digo que es AMPLIADO, es decir, C++ (C incrementado) es C + añadidos. NO me vas a ver decir que tal o cual lenguaje sea mejor que otro por la AUSENCIA de herramientas (mirando desde C++ a C). Sería como decir que Java es mejor que C/C++ porque no tiene manejor manual de memoria. Por otra parte, ni de broma pretendía empezar un flamewar por citar el hecho que C++ incluye a C para comentar que dicho modo "hibrido entre C y C++" no tiene demasiado sentido _(desde mi punto de vista)_ como tal. Siento que se me haya malinterpretado. EDIT: Añado: Ok, es soportado dentro de C++, pero no forma parte de su idea. En efecto, puede que no forme parte de su idea, y a planteamientos de dicho ámbido sobre el lenguaje no entro. Pero creo que pese a quizás no formar parte de su idea el hecho que como herramienta si es posible usarse, creo que debería comentarse.Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: D4RIO en 30 Marzo 2011, 16:21 pm Al fin y al cabo, fue por describirlo como híbrido. Digamos C++ al estilo de C, lo cual como dice Linus, evitaría aunque sea por el solo hecho de mantener alejados a los programadores en C++ del proyecto. Cada cual con su maña.
Saludos Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: anonimo12121 en 30 Marzo 2011, 16:23 pm Quería decir esto de akai.
Citar Y otra cosa si uso C++ podría usar todo lo de C sin problemas no? “como dice nuestro compañero Akai”. C++ es C mejorado es lo que he leido en otro lado o algo similar XD Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: D4RIO en 30 Marzo 2011, 16:30 pm Seguramente de Stroustrup o algún fanático. C++ no puede ser mejorado porque, por empezar, propone otra forma de resolver los problemas. A demás del
Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD Publicado por: anonimo12121 en 30 Marzo 2011, 17:12 pm pero programar con clases es divertido.
|