Título: MAYUSCULA Publicado por: anita0421 en 20 Noviembre 2012, 02:06 am hola!
tengo una duda cómo podria cambiar este código de C++ para que no importe cuantos espacios ponga, el segundo nombre de la persona me salga con mayuscula tambien?? esto es lo que tengo Código
Título: Re: MAYUSCULA Publicado por: rir3760 en 20 Noviembre 2012, 02:47 am Lo primero a cambiar en el programa son los nombres de los encabezados:
Código No es necesario <string.h>, en su lugar se debe incluir <cctype> ya que ahí se encuentra el prototipo de la función "toupper": Código
Y para ignorar los espacios al principio de la cadena puedes utilizar un bucle y la funcion "isspace" (prototipo en <cctype>): Código Por cierto no te recomiendo utilizar funciones de la biblioteca estándar de C como "puts" y "gets" si estas aprendiendo C++. En su lugar concéntrate en las facilidades de este como "cin", "cout", etc. Si deseas consultar mas recomendaciones revisa el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html). Un saludo Título: Re: MAYUSCULA Publicado por: anita0421 en 20 Noviembre 2012, 05:17 am mmmm creo que me malinterpretaste... solo quiero que el segundo nombre de la persona lleve mayuscula tambien
Título: Re: MAYUSCULA Publicado por: Ferno en 20 Noviembre 2012, 05:28 am Bueno, pero es básicamente el mismo code que posteó rir3760 con el agregado de leer antes el primer nombre.
Es decir, lees el nombre completo, el primer caracter a mayúscula, lees el nombre entero hasta topar con un espacio (que indica que el primer nombre terminó). Luego utilizas el code de rir3760 y listo. Título: Re: MAYUSCULA Publicado por: rir3760 en 20 Noviembre 2012, 15:16 pm OK. Sorry.
En ese caso y como ya comento Ferno puedes utilizar dos bucles, mas o menos asi: Código
Debe funcionar pero tiene sus limitaciones: 1) Se puede hacer mas corto con funciones de la biblioteca estándar de C como "strspn" (mejor utilizar las facilidades de C++ como la clase "string") y 2) no tiene validaciones (revienta si no hay apellido, lo cual no es tan malo considerando el programa puede reventar desde el uso de "gets"). Un saludo Título: Re: MAYUSCULA Publicado por: anita0421 en 21 Noviembre 2012, 02:21 am ohh yo tenia este
/* Este programa cambia el primer caracter de cada palabra a su respectiva mayuscula. Valida caracter por caracter, si se encuentra un espacio ' ' reemplaza el siguiente caracter "indice+1" a su respectiva mayuscula. Concluye hasta encontrar un fin de cadena '\0' que es el ultimo caracter en una cadena (char) */ #include <ctype.h> #include <stdio.h> #include <conio.h> using namespace std; int main() { int indice; char nombre[25]; puts("Tu nombre es?: "), gets(nombre); nombre[0]=toupper(nombre[0]); for (indice=0; nombre[indice]!='\0'; indice++) if (nombre[indice]==' ') nombre[indice+1]=toupper(nombre[indice+1]); puts("\n\nTu nombre es "), puts(nombre) ; puts("\n\n"); system("PAUSE"); return 0; } pero mi profe dijo que el algoritmo hacia mucho trabajo "cambiando" cada espacio a mayuscula... pero no se como hacer que se ahorre ese "trabajo" no se si me de a entender, el codigo hace su trabajo si pones cualquier nombre te devuelve las dos iniciales con mayuscula aunque pongas 10 espacios, pero el profe dijo que debia hacer el procedimiento mas rapido de otra manera, (no se cual es) podrian ayudarme? Título: Re: MAYUSCULA Publicado por: rir3760 en 21 Noviembre 2012, 19:01 pm El primer detalle a considerar: ignorando las pocas excepciones (como "using namespace std;") ese programa es C cuando tu estas aprendiendo C++. También se debe evitar el uso de la función "gets" y la biblioteca "conio" de Borland. Mas información en el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).
Regresando al programa la forma mas sencilla es: 1) Cambias el primer carácter de forma manual (al parecer esta garantizado que este sea alfabético) y 2) Cambias a mayúsculas el primer carácter alfabético a continuación de un espacio. Mas o menos así: Código
Pero de nuevo la preocupación es que no estas aprendiendo C++. Un saludo |