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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra  (Leído 14,164 veces)
divax

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« en: 19 Marzo 2015, 17:26 pm »

Hola a tod@s !

Llevo poco programando y hace días que llevo dándole al coco para sacar el código en C que me permita saber (en cantidad) cuantas palabras empiezan y acaban con la misma letra. En principio no me dejan utilizar punteros. Sólo una cadena de carácteres. Si alguien me pudiera ayudar se lo agradecería mucho.

Por ejemplo: El elefante tiene un ojo rojo -->  Dos palabras empiezan y acaban con la misma vocal.

gracias de antemo !


En línea

kr.chacacreker

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« Respuesta #1 en: 19 Marzo 2015, 18:18 pm »

Espero que vengas por un poco de lógica. A ver si lo resuelvo.

Cuantas palabras empiezan y acaban con la misma letra en una cadena de caracteres (oración párrafo,etc).

seria algo como:

Para cada palabra:
   si la primera de la palabra letra es igual que la ultima de dicha palabra
       incrementar contador

Ahora debes detectar cuando empieza una palabra y cuando termina, cuando es el final de la oración, párrafo, texto,etc.
 ;D ;D


En línea

divax

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« Respuesta #2 en: 19 Marzo 2015, 18:58 pm »

Hola, y gracias por responder.

Hasta allí he llegado. E intuyo que se debe traducir con un if semejanete a este:

Código
  1. if (letrainicial == letrafinal)
  2. {
  3.     cont++;
  4. }

Lo que me cuesta realmente saber es cómo volver a realizar la siguiente búsqueda después de la primera palabra. Es decir, cuando encontramos la primera palabra el programa ha de continuar buscando el siguiente carácter "espacio", que significará que ya hay otra palabra. Se deberá guardar la primera letra y cuando encuentre el siguiente espacio ha de guardar la letra anterior, que será la última letra y compararla con la primera. Y así hasta llegar al final de la cadena.

Mod: usar etiqutas GeSHi al publicar codigo
« Última modificación: 19 Marzo 2015, 20:12 pm por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« Respuesta #3 en: 19 Marzo 2015, 20:20 pm »

lo que tu dices sería algo como

Código:
frase = "el oso perezoso come un pez"
letra = 0
letra_inicial = -1
letra_final = 0
contador = 0
mientras frase[letra]== '\0' (caracter de fin de string){
  letra_final=letra
  letra++
  si frase[letra]==" " o si frase[letra]=='\0' (espacio o fin){
   si frase[letra_inicial+1]==frase[letra_final] entonces contador++
   letra_inicial=letra
  }
}
« Última modificación: 19 Marzo 2015, 20:22 pm por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
divax

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« Respuesta #4 en: 21 Marzo 2015, 00:01 am »

Muchas gracias ! Con vuestra ayuda he podido sacar el código y me ha quedado un programa con cara y ojos !

Os lo dejo aquí:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int paraula(char cade[256], int longi);
  5.  
  6. int main()
  7. {
  8.        int lon,res;
  9.        char cadena[256];
  10.        printf("Introdueix una frase.\n");
  11.        gets(cadena);
  12.        lon=strlen(cadena);
  13.        printf("Longitud cadena: %d\n\n",lon);
  14.  
  15.        res=paraula(cadena,lon);
  16.        printf("\n\nParaules que acaben i comencen amb la mateixa lletra: %d\n\n",res);
  17.  
  18. return 0;
  19. }
  20.  
  21. int paraula(char cade[256], int longi)
  22. {
  23.    char ini,fin;
  24.    int i,cont;
  25.    i=0;
  26.    cont=0;
  27.    ini=cade[0];
  28.    printf("\nFRASE: %s",cade);
  29.    printf("\nvalor de ini: %c",cade[0]);
  30.    printf("\nValor de longi: %d\n",longi);
  31.    while(i<=longi-1)
  32.    {
  33.        while((cade[i] != ' ') && (cade[i] != '.'))
  34.        {
  35.            fin=cade[i];
  36.            i++;
  37.        }
  38.        if(fin == ini)
  39.        {
  40.            cont++;
  41.        }
  42.        i++;
  43.        ini=cade[i];
  44.    }
  45.        printf("Valor de cont= %d",cont);
  46.        return cont;
  47. }

Mod: Modificado con etiquetas GeSHi para que sea más legible
« Última modificación: 21 Marzo 2015, 00:32 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« Respuesta #5 en: 21 Marzo 2015, 00:42 am »

te recomiendo unos cambios...

-lon no es necesario pasarlo como parámetro, puedes recalcularlo adentro de paraula

-evita el uso de gets usa fgets, aquí un poco el porqué y el como

-linea 31, puedes resumir a la manera común while(i<=longi-1) a while(i<longi)

-linea 33, tiene un bug, si escriben algo que no termine en punto o espacio fallará, al trabajar con strings siempre debes procurar comprobar que no se consiga '\0' que es el caracter de fin de cadena

-linea 45, algo más que todo estético, lo que imprimes ahí, lo imprimes en la linea 16
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
divax

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« Respuesta #6 en: 21 Marzo 2015, 10:36 am »

Hola engel lex, gracias por los matices. La verdad que podría haber limpiado el código para que no hubieran cosas redundantes como los printf  de las linea 29, 30 y 45.

He leído lo de la funcion fget y me parece muy útil saberlo pero hay una cosa de fgets() que se me hace incómoda. Cito en texto el cual menciona los parámetro que hay colocar en fgets()

Citar
1-. El primer parámetro de fgets() es dónde vamos a almacenar lo leído.
2-. El segundo parámetro es cuántos caracteres leeremos como máximo (incluyendo el terminador de cadena). Y si hemos definido un valor máximo para la cadena, podemos utilizar éste.
3-. El tercero es de dónde lo leemos, y si queremos hacerlo desde teclado, usaremos stdin

Mi duda viene en el segundo punto, concretamente cuando se le ha de decir cuantos carácteres leeremos como máximo. Me pregunto si uno debería saber a primeras cuantos carácteres más o menos tiene la frase (o párrafo) a introducir ?¿? En el código del ejemplo de fgets() si pones como frase "hola que tal", cuando imprime cadena 1 , lo imprime incompleto. Entonces pienso que con gets()al introducir la frase, si haces un strlen() ya puedes saber cuantos carácteres tiene la frase que has introducido para poder utilizar esa cifra en un array por ejemplo. Con fgets() esto tan fácil.. ¿como sería ?
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« Respuesta #7 en: 21 Marzo 2015, 11:26 am »

no, no es el largo de la frase escrita... es el largo de la variable que le estás pasando, esto es para asegurarse que la data no se "desborde"  y que se popule correctamente por completo el char*, en tu caso 256
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
divax

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« Respuesta #8 en: 21 Marzo 2015, 21:25 pm »

Lo había entendido mal. Lo he probado y funciona bien fgets().

Ahora me hayo investigando la manera que una función me devuelva una cadena o un arrays de número. Veo que la cosa no es tan simple como hacer un return de dicha cadena o array, me da errores que no entiendo... se ve que tiene que haber algún puntero que otro. No me quivoco verdad ?

Gracias de antemano.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Código que me pemita saber cuantas palabras empiezan y acaban con la misma letra
« Respuesta #9 en: 22 Marzo 2015, 00:36 am »

exacto al c/c++ ser bajo nivel, no retorna sino solo variables simples, lo que tienes que hacer es retornar un puntero, lo más facil no es hacerlo por return sino por referencia, retornas por referencia el puntero al array y por return su largo
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines