Autor
|
Tema: Buscar string en Matriz [Solucionado] (Leído 13,054 veces)
|
;c1v!c
Desconectado
Mensajes: 151
Forma parte de esta comunidad gamer!!!
|
Hola tengo este codigo mas o menos y necesito buscar el string en la matriz y que me diga si esta o no, una palabra en la matriz. #include <stdio.h> #include <stdlib.h> int main() { int i,j,name; char nino[]=""; char vec[6][6]={"agus","pepe","zazu","juan","luca"}; //-------------CARGAMOS NOMBRES DE NIÑOS-----------------// //-------------INGRESE NOMBRE A BUSCAR-----------------// printf("\nIngrese el nombre que desea buscar:"); //-------------BUSCAMOS NOMBRE EN VECTOR-----------------// for(i=0;i<6;i++) { for(j=0;j<6;j++) { ????¿?¿??¿ ????¿?¿??¿ } } return 0; }
|
|
« Última modificación: 24 Enero 2012, 16:00 pm por ;c1v!c »
|
En línea
|
|
|
|
soyloqbuskas
Desconectado
Mensajes: 219
¡El conocimiento es de todos!
|
Buenas ;c1v!c
Debes proporcionar mas informacion para que podamos ayudarte. Concretamente necesito saber si la palabra puede estar en horizontal, en vertical, en diagonal, del derecho y del revés, ya que todo esto hace que el codigo que hay en el bucle sea mas extenso o no....
|
|
|
En línea
|
"Si tienes 1 manzana y yo tengo otra manzana... y las intercambiamos, ambos seguiremos teniendo 1 manzana. Pero...si tu tienes 1 idea y yo tengo otra idea... y las intercambiamos, ambos tendremos 2 ideas."
George Bernard Shaw
|
|
|
;c1v!c
Desconectado
Mensajes: 151
Forma parte de esta comunidad gamer!!!
|
las palabras estan en horizontal creo. Se me ocurre algo de q "Mientras no sea \0 q siga ejecutando hasta guardar el string y despues compararlo con el ingresado para ver si esta en la lista o no, o algo asi" tengo este codigo q modifique recien y me muestra las palabras. #include <stdio.h> #include <stdlib.h> int main() { int i,j,name; char nino[]=""; char vec[5][5]={"agus","pepe","zazu","juan","luca"}; //-------------CARGAMOS NOMBRES DE NIÑOS-----------------// //-------------INGRESE NOMBRE A BUSCAR-----------------// printf("\nIngrese el nombre que desea buscar:"); //-------------BUSCAMOS NOMBRE EN VECTOR-----------------// for(i=0;i<6;i++) { for(j=0;j<6;j++) { } } return 0; }
|
|
« Última modificación: 23 Enero 2012, 17:12 pm por ;c1v!c »
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
El primer error en el programa es declarar el array "nino" de esta forma: char nino[]="";
Ya que ello es equivalente a: char nino[] = {'\0'};
Donde se declara un array que puede almacenar un único carácter. En su lugar debes declarar el array indicando su numero de elementos y sin inicializar (ya que lo primero que haces con la variable es asignarle un valor mediante la función "gets" que, para empezar deberías evitar). Y si no se trata de una sopa de letras solo tienes que utilizar un bucle para procesar todas las cadenas del array, por cada una utilizas la función "strcmp" (prototipo en <string.h>) para verificar si coincide con la buscada o no. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
;c1v!c
Desconectado
Mensajes: 151
Forma parte de esta comunidad gamer!!!
|
llegue a este codigo a ver si me dicen q estoy haciendo mal o cual es mi error. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i,j,k; int ok=0; char name[6]; char nino[6]; char vec[5][5]={"agus","pepe","zazu","juan","luca"}; //-------------INGRESE NOMBRE A BUSCAR-----------------// printf("\nIngrese el nombre que desea buscar:"); if (nino [strlen(nino )-1] == '\n'); //-------------BUSCAMOS NOMBRE EN VECTOR-----------------// for(i=0;i<5;i++) { for(k=0,j=0;j<5;j++) { if(vec[i][j]!='\0') name[k++]=vec[i][j]; } if(name==nino) {printf("\tEl nombre si se encuentra en la lista\n"); ok=1;} } if(ok!=1) printf("\tEl nombre no esta en la lista\n"); return 0; }
|
|
« Última modificación: 23 Enero 2012, 20:32 pm por ;c1v!c »
|
En línea
|
|
|
|
|
;c1v!c
Desconectado
Mensajes: 151
Forma parte de esta comunidad gamer!!!
|
probe la funcion de la siguiente manera como estaba en el ejemplo pero nose por q no funciona. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i,j,k; int ok=0; char name[6]; char nino[6]; char vec[6][6]={"agus","pepe","zazu","juan","luca"}; //-------------INGRESE NOMBRE A BUSCAR-----------------// printf("\nIngrese el nombre que desea buscar:"); if (nino [strlen(nino )-1] == '\n'); //-------------BUSCAMOS NOMBRE EN VECTOR-----------------// for(i=0;i<5;i++) { for(k=0,j=0;j<5;j++) { if(vec[i][j]!='\0') {name[k++]=vec[i][j]; } {printf("\tEl nombre si se encuentra en la lista\n");} } // if(ok!=1) // printf("\tEl nombre no esta en la lista\n"); return 0; }
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
El error se debe a que al copiar el nombre en el array "name" no agregas el indicador de fin de cadena (el '\0'), justo después del bucle interno. Con el cambio: for (k = 0, j = 0; j < 5; j++) { if (vec[i][j] != '\0') { name[k++] = vec[i][j]; } } name[k] = '\0'; /* ... */
Sin embargo ese bucle no es necesario ya que puedes hacer la comparación directamente, con un solo bucle: for (i = 0; i < 5; i++) if (strcmp(nino , vec [i ]) == 0) printf ("El nombre %s si se encuentra en la lista\n", nino );
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
;c1v!c
Desconectado
Mensajes: 151
Forma parte de esta comunidad gamer!!!
|
Bueno lo consegui aca les dejo el codigo para que lo vean y el que necesite tenga una idea de como hacerlo, espero que les sirva. Gracias a todos por responder!!!#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i,j,k; int ok=0; char name[6]; char nino[6]; char vec[6][6]={"agus","pepe","zazu","juan","luca"}; //-------------INGRESE NOMBRE A BUSCAR-----------------// printf("\nIngrese el nombre que desea buscar:"); if (nino [strlen(nino )-1] == '\n'); //-------------BUSCAMOS NOMBRE EN VECTOR-----------------// for(i=0;i<5;i++) { for(k=0,j=0;j<5;j++) { if (strcmp(nino , vec [i ]) == 0) ok=1; } } if(ok!=0) printf ("\t|| El nombre [%s] si se encuentra en la lista ||\n", nino ); else printf ("\t|| El nombre [%s] no esta ||\n", nino ); return 0; }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pascal: Buscar en una matriz.
Ejercicios
|
Traspuesto
|
2
|
9,046
|
21 Abril 2008, 23:21 pm
por barbate
|
|
|
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
|
EddyW
|
2
|
6,014
|
14 Agosto 2010, 06:18 am
por EddyW
|
|
|
[Solucionado] Comparar un String con cada una de las partes de otro String
« 1 2 »
.NET (C#, VB.NET, ASP)
|
Segurida
|
13
|
12,452
|
14 Mayo 2011, 18:52 pm
por Segurida
|
|
|
Ayuda con string y matriz =(
Ejercicios
|
kenkatsu
|
1
|
4,841
|
12 Octubre 2011, 13:43 pm
por Valkyr
|
|
|
[SOLUCIONADO] Buscar todas las variantes de un string
.NET (C#, VB.NET, ASP)
|
Eleкtro
|
2
|
2,614
|
9 Enero 2013, 15:56 pm
por Eleкtro
|
|