Tema destacado:
Autor
|
Tema: Buscar string en Matriz [Solucionado] (Leído 480 veces)
|
;c1v!c
Desconectado
Mensajes: 139
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:"); gets(nino); printf("\n[%s]\n",nino); //-------------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 por ;c1v!c »
|
En línea
|
|
|
|
soyloqbuskas
Desconectado
Mensajes: 94
¡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: 139
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:"); gets(nino); printf("\n[%s]\n",nino); //-------------BUSCAMOS NOMBRE EN VECTOR-----------------// for(i=0;i<6;i++) { for(j=0;j<6;j++) { printf("%c",vec[i][j]); } printf("\n"); } printf("%c\n",vec[4][5]); return 0; }
|
|
|
|
« Última modificación: 23 Enero 2012, 17:12 por ;c1v!c »
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 382
|
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
|
The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz
|
|
|
;c1v!c
Desconectado
Mensajes: 139
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:"); fgets(nino, 6, stdin); if (nino[strlen(nino)-1] == '\n'); nino[strlen(nino)-1] = '\0'; //-------------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("%c",vec[i][j]); } printf("\n"); 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 por ;c1v!c »
|
En línea
|
|
|
|
|
|
;c1v!c
Desconectado
Mensajes: 139
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:"); fgets(nino, 6, stdin); if (nino[strlen(nino)-1] == '\n'); nino[strlen(nino)-1] = '\0'; //-------------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("%c",vec[i][j]);} } if(strcmp (nino,name) == 0) {printf("\tEl nombre si se encuentra en la lista\n");} printf("\n"); } // if(ok!=1) // printf("\tEl nombre no esta en la lista\n"); return 0; }
|
|
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 382
|
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]; printf ("%c", 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
|
The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz
|
|
|
;c1v!c
Desconectado
Mensajes: 139
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:"); fgets(nino, 6, stdin); if (nino[strlen(nino)-1] == '\n'); nino[strlen(nino)-1] = '\0'; //-------------BUSCAMOS NOMBRE EN VECTOR-----------------// for(i=0;i<5;i++) { for(k=0,j=0;j<5;j++) { printf("%c",vec[i][j]); if (strcmp(nino, vec[i]) == 0) ok=1; } printf("\n"); } 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
|
|
|
|
|
|