Título: Error en programa de punteros Publicado por: Error 404: en 22 Mayo 2013, 13:20 pm Hola a todos ( de nuevo ), siento tener que preguntar demasiadas cosas pero espero que tengan paciencia con este novato :-[
El problema es el siguiente, tengo que hacer el siguiente ejercicio para el manual que me estoy leyendo: Escribir un programa con una funcion que calcule la longitud de una cadena de caracteres. El nombre de la funcion sera LongitudCadena, debe devolver un "int", y como parametros de entrada debe tener un puntero a "char". (En "main" probar con distintos tipos de cadenas:arrays y punteros. )<--- Esto no lo pillo xd. Ahora mismo llevo esto pero no me sale, agradeceria ayuda porque la verdad lo de los punteros me esta resultando bastante dificil :-( No estoy pidiendo que me manden el codigo del programa entero!!! (que sino no aprendo xd), sino que me digan mi error y si es posible un ejemplo de bien usado, pero en un miniejemplo no el programa. Muchas gracias por adelantado ;) PD: EN EL CODIGO DONDE PONE ñ ES UNA --->Ñ<--- QUE EL C++ NO ME LEE XD Código
Algo me tiene que fallar en el puntero, no se si es la declaracion o que exactamente pero algo me falla... :huh: Gracias de nuevo ;) Título: Re: Error en programa de punteros Publicado por: amchacon en 22 Mayo 2013, 13:31 pm Buen post, te ha faltado decir que error te da :silbar:
De momento veo algunos fallos: Código
¿Que pretendías hacer en la última línea? Estas asignando un puntero a una variable que ni siquiera has inicializado... Los efectos son impresivibles, borrala. Código c no es la función sino la variable que has declarado antes. Ahí deberías poner LongitudCadena(cadena) Código
Una funcion que obtiene la longitud de la cadena pero devuelve un bool? (bueno en teoría devuelve bool pero no has puesto ningún return). ¿Y a santo de que va el cin.get()? Además la cadena las has llamado ahí n. El ultimo byte de una cadena se simboliza con un caracter nulo '\0'. Para calcular el tamaño de una cadena tienes que ir comprobando hasta llegar al caracter nulo: Código
Título: Re: Error en programa de punteros Publicado por: Error 404: en 22 Mayo 2013, 14:12 pm Vale he efectuado los cambios y este es el resultado:
Código
Pero lo malo es que si introduzco mas de una palabra solo me dice el tamaño de la primera y no del conjunto; supongo que por esta parte : Código Ya que en cuanto hay un conjunto vacio deja de leer, ¿cómo podria hacer que lea mas palabras sin que cuente los espacios, es decir podria por ejemplo hacer que si lee dos conjuntos vacios (en vez de uno) deje de leer? Y de ser asi, como lo conseguiria??? Muchas gracias por tu ayuda amchacon me ha servido :D PD: YA SE QUE NO ES RECOMENDABLE USAR GOTO, PERO AL SER UN PROGRAMA FACIL NO CREO QUE DE PROBLEMAS AL COMPILADOR XD Título: Re: Error en programa de punteros Publicado por: amchacon en 22 Mayo 2013, 14:51 pm No, el caracter nulo '\0' no es lo mismo que los espacios ' '
El problema es del cin que corta cuando pilla un espacio. Si quieres coger una linea entera: Código
Título: Re: Error en programa de punteros Publicado por: leosansan en 22 Mayo 2013, 16:10 pm Vale he efectuado los cambios y este es el resultado: Citar ................................................................................ ................................................................if(resp[0]=='s'||resp[0]== 'S' ||resp[0]== 'y' ||resp[0]== 'Y') goto Bucle; cin.get(); cin.get(); return 0; } YA SE QUE NO ES RECOMENDABLE USAR GOTO, PERO AL SER UN PROGRAMA FACIL NO CREO QUE DE PROBLEMAS AL COMPILADOR XD ¿Y por qué no lo dejas con el do while que tenías originalmente y que tan bien funcionaba?. Ahora, por ejemplo, tienes un "cin.get();" después de bucle que nunca se va a ejecutar ¡ ¡ ¡ ¡ ¡ y eso que el programa es cortito. Te dejo otra opción para la función Longitud, como simple práctica/ curiosidad: Código
Saluditos!. .... ..(http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Error en programa de punteros Publicado por: Error 404: en 22 Mayo 2013, 19:56 pm Vale he metido lo de cin.getline(cadena,100) pero ahora me da un numero mas raro y sin sentido ( en el tamaño), por ejemplo si pongo como cadena "hola amigo" me devuelve 6 de tamaño... :huh: me tiene perplejo no se...
Aqui va el codigo como lo tengo actualmente por si es que lo he metido mal o algo. PD: GRACIAS POR SU PACIENCIA Y SU AYUDA :rolleyes: Código
Título: Re: Error en programa de punteros Publicado por: amchacon en 24 Mayo 2013, 10:42 am No has quitado el antiguo cin :silbar:
Título: Re: Error en programa de punteros Publicado por: leosansan en 24 Mayo 2013, 11:24 am Vale he metido lo de cin.getline(cadena,100) pero ahora me da un numero mas raro y sin sentido ( en el tamaño), por ejemplo si pongo como cadena "hola amigo" me devuelve 6 de tamaño... :huh: me tiene perplejo no se... ¿Y qué querías que te devolviera?. Si lo observas con atención el primer cin "pilla" todos los caracteres "hasta" que encuentra un espacio en blanco, es decir la palabra" hola". Lo demás que queda en el buffer "_amigo" son seis caracteres que cin.get "vuelve" a meter como variable cadena y ese es el resultado que devuelve la función que calcula la longitud. Así de sencilla es la explicación de ese número que te tenía perplejo. Saluditos! .... (http://i1280.photobucket.com/albums/a497/leosansan/leosan1/leones%20peques/lion14peque_zps1d213b80.jpg) |