Título: cadenas y uso de MAYUSCULA Publicado por: JoshDur en 25 Noviembre 2019, 01:22 am estoy comenzando con la carrera y estoy bloqueado con esta tarea en particular.
Mi tarea es sobre hacer un programa que convierte en MAYÚSCULA la ultima palabra de una frase con C Título: Re: cadenas y uso de MAYUSCULA Publicado por: K-YreX en 25 Noviembre 2019, 02:03 am No sé si tienes alguna restricción en cuanto a que tengas que implementarlo todo sin utilizar funciones que ya existen...
Si no es tu caso y puedes usar funciones tienes:
Si no puedes usar dichas funciones y tienes que implementarlo tú, te recomendaría hacer una función que dado un <char[]>, te devuelva la posición (índice) en el que empieza la última palabra; y luego con un bucle vas convirtiendo cada letra en mayúscula. En ASCII una letra minúscula vale 28 más que en mayúscula si no me equivoco por lo que si haces: Código
Es posible que si acabas de empezar, esto que te acabo de soltar te suene a chino y no entiendas nada. Si tienes alguna duda o no consigues avanzar en tu tarea, puedes poner el código en un mensaje entre etiquetas de Código GeSHi para que podamos ayudarte mejor. Título: Re: cadenas y uso de MAYUSCULA Publicado por: JoshDur en 25 Noviembre 2019, 02:09 am no tengo restricción siempre y cuando sea en ".C", mi verdadera duda es poder "tomar" la ultima palabra que el usuario escriba y escribir nuevamente la frase con la ultima palabra en mayúscula.
Título: Re: cadenas y uso de MAYUSCULA Publicado por: K-YreX en 25 Noviembre 2019, 02:39 am Las palabras en C se toman en un array de char, o lo que es lo mismo, una cadena de caracteres, un vector. Cada posición de la cadena contiene un caracter, pongamos el típico ejemplo: "hola mundo". Al guardar esto en C quedaría así:
Código El último es un carácter especial que utiliza C para saber donde acaba la cadena. Se pone implícitamente. Entonces si haces: Código
Como puedes usar las funciones que te dije anteriormente, sólo tienes que crear un puntero que como su nombre indica apunta y hacer que apunte al comienzo de la última palabra: Código
Al final resulta que prácticamente te lo he dado hecho pero me parecía que sino te ibas a liar con lo de punteros, el asterisco, los incrementos, las funciones esas, etc. El puntero es como una variable que en vez de guardar un valor como tal, guarda una posición de memoria. Para acceder al contenido de dicha posición de memoria se utiliza el asterisco (lo que se conoce como desreferenciar el puntero). Código
Estoy intentando aclararlo pero cuanto más escriba creo que más complejo lo voy a dejar así que si hay cosas que de momento no entiendes, no te preocupes. Ya irás avanzando en el curso y al final verás como esto es una tontería. PD: Para pedir valores se suele usar <scanf()> pero si se trata de una cadena, lo recomendable y seguro es hacerlo con <fgets()>: Código Lo malo de esta función es que también guarda el ENTER que pulsas al final por lo que si introduces "hola", en la cadena se guardaría como: cadena = |'h'|'o'|'l'|'a'|'\n'|'\0'| La '\n' determina un salto de línea. Para eliminar eso es muy sencillo ahora que ya te he mostrado como funciona <strrchr()>: Código
Título: Re: cadenas y uso de MAYUSCULA Publicado por: JoshDur en 25 Noviembre 2019, 04:01 am eres un héroe sin capa, gracias por la explicación que fue mejor que el que me da el profesor. nuevamente gracias
Título: Re: cadenas y uso de MAYUSCULA Publicado por: CalgaryCorpus en 26 Noviembre 2019, 15:11 pm Buscar el ultimo espacio en blanco podria fallar si la frase tiene solo 1 palabra, sin espacio alguno.
Tal vez resulte mejor poner un puntero al final y devolverse hasta llegar o al inicio de la palabra o bien a un espacio en blanco. Título: Re: cadenas y uso de MAYUSCULA Publicado por: K-YreX en 26 Noviembre 2019, 19:42 pm Buscar el ultimo espacio en blanco podria fallar si la frase tiene solo 1 palabra, sin espacio alguno. Cierto, se podría arreglar así:Tal vez resulte mejor poner un puntero al final y devolverse hasta llegar o al inicio de la palabra o bien a un espacio en blanco. Código La otra manera que comentabas también es posible. |