C/Visual C - verificar existencia de caracteres en una cadena en C

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 49 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

verificar existencia de caracteres en una cadena en C

Publicado por Jose (2 intervenciones) el 16/07/2018 01:17:51
Hola buenas tengo una duda al querer realizar un programa en C ya que soy inexperto.
mi duda es la siguientes como puedo almacenar una lista de palabras y que luego al introducir un párrafo por teclado el programa me pueda verificar si ese parrafo(introducido por teclado) contiene las letras de las palabras almacenadas anteriormente.
ejemplo
palabras almacenadas(sol, luz...)
por teclado ("hola soy programador")
palabra sol( existe la S, existe la O y existe la L) dentro del párrafo.
y asi sucesivamente con las otras palabras almacenadas.

espero haberme explicado correctamente por el momento he pensado en lamcenar las palabras en vectores pero no se si sea correcto y muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Sergio
Val: 4
Ha aumentado su posición en 12 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

verificar existencia de caracteres en una cadena en C

Publicado por Sergio (2 intervenciones) el 19/07/2018 20:02:23
Si es correcto almacenar las palabras en vectores.


Te muestro un algoritmo de ejemplo (No es código, solo es para darte la idea)
1
2
3
4
5
6
7
8
9
10
11
12
13
listaPalabras=["sol","luz","aire"]  // Esto implícitamente es una matriz
 
tuoracion = "Algo que puedes leer en teclado"
 
 
// por ende podemos iterar sobre la lista de palabras
 
Para palabra en listaPalabras:
     para letra en palabra:
           para letra2 en tuoracion:
                 Si letra == letra 2:
                      imprime ("Existe la", letra)
                      break; //salir del ciclo, busca la siguiente letra de tu listaPalabras

Para no extenderme use ciclos For y ya que use el Break para romper el ciclo, te puedes dar cuenta que no es correcto.

Una mejor implementación es con un While(condición) y una variable booleana (True, False) para saber si se encontró la letra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1
Ha aumentado su posición en 49 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

verificar existencia de caracteres en una cadena en C

Publicado por Jose (2 intervenciones) el 20/07/2018 05:01:05
Entiendo muy bien tu algoritmo se trata de ir minimizando cada vez mas hasta ir comparando las letras de mi palabras almacenadas a las letras de mi oracion. pero la pregunta siguiente seria como recorro las palabras de uno en uno (osea caracter por caracter) y luego de eso la comparo iguamente caracter por caracter con la del parrafo. existe alguna funcion especial en C o como lo haria....gracias por contestar espero tu respuesta...Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Milton
Val: 2
Ha aumentado su posición en 36 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

verificar existencia de caracteres en una cadena en C

Publicado por Milton (1 intervención) el 01/08/2018 20:40:08
Saludos jose, a ver si te ayuda, tú lo terminas de ajustar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 3
 
int main(void) {
    char *palabras[MAX] = {"sol","luz", "Hola"};
    char *parrafo = "hola soy programador";
    char grabaletra[MAX][20]={};
    int i=0;
    int letras=0;
    int letparra = 0;
    int elemento = 0;
   //leo primero las palabras 
    for(i = 0 ; i < MAX ; i++){
        printf("Palabra No. %d: %s Longitud %d\n", i,palabras[i], strlen(palabras));
        for(letras = 0; letras < strlen(palabras[i]); letras++){  //recorro cada palabra
            printf("%c \n", palabras[i][letras]);
           for(letparra =0; letparra < strlen(parrafo); letparra++){  // recorro cada letra con cada letra del parrafo
               printf(" letra: %c  =  %c \n",palabras[i][letras],parrafo[letparra] ) ;
                if(palabras[i][letras]== parrafo[letparra]){
 
                   grabaletra[i][elemento] = parrafo[letparra] ;
                   printf(" Graba: %c \n", grabaletra[i][elemento]);
                   elemento++;
 
                }
            }
            printf("grabaLetra -> %s \n", grabaletra[i]);
        }
        elemento = 0;
    }
 
    for( i = 0 ; i < MAX; i++){
        printf("Palabra No. %d: %s Tiene las letras %s \n", i,palabras[i],grabaletra[i]);
    }
    return (0);
}

si te ayudo este código visita mi canal estoy desarrollando un sistema de facturación e Inventario desde cero
en C# 2015.

Mi canal: https://www.youtube.com/user/MiltonIzaguirreMoral

Lección 1:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar