Autor
|
Tema: Problema con busqueda en arreglo de string (Leído 3,118 veces)
|
MikeMonostone
Desconectado
Mensajes: 7
[SK-DOOM] MikeMonoStone
|
Saludos amigos! Les pido que por favor le den una mirada a este código, el mismo tiene como fin almacenar en un array estático los nombres y apellidos de estudiantes esperando en una fila para pagar luego pedir un nombre y un apellido buscarlos y dar una salida en caso de encontrar o no. Mi problema es que el bloque de codigo encargado de realizar la busqueda del nombre y apellido siempre evalúa a FALSE. Encantado de estar entre ustedes, este es mi primer post en el foro y espero seguir activo en el mismo, desde ya gracias! #include <iostream> #include <cstdio> using namespace std;
int main() {
const int MAX = 100; //Tamaños maximos para filas y columnas del arreglo const int TAM = 50;
//Variables iniciadas para evitar valores basura
char estudiante[MAX][TAM] = {" "}; char buscar[TAM]; int tamFila = 0;
cout << "Este programa le permite capturar el nombre y apellido." << "\nde estudiantes esperando en fila, y tambien verifica si un \n" << "nombre introducido por teclado esta en la lista." << "\n_______________________________________________________\n\n\n"; cout << "\t\t::Caja No. 511::\n";
cout << "\nIntroduzca tamano de la fila:"; cin >> tamFila;
cout << "\nNombre y apellido estudiantes en fila.\n"; for ( int j = 0; j <= tamFila; j++) { gets(estudiante[j]); }
cout << "\n\n\n\t<BUSQUEDA>\n " << "\tPara resultados positivos introduzca\n el nombre tal como lo escribio.\n\n" << "Nombre y apellido estudiante: ";
cin.getline(buscar, sizeof(buscar));
//Esta es la parte que evalua si la entrada esta almacenada. for(int k = 0; k <= tamFila; k++) { if (buscar != estudiante[k]) {
cout << "El que se fue de la fila pierde su silla, " << buscar; break;
}else{
cout << "Pase a pagar."; break;
} }
cout <<"\n\n Personas en fila\n";
for ( int j = 0; j <= tamFila; j++) { if (j != 0) { cout << j << ".- " <<estudiante[j] << endl; }
}
return 0; }
|
|
|
En línea
|
[SK-DOOM] Pensé que lo que haría sería fingir ser uno de esos sordomudos.
|
|
|
naderST
|
Si estas programando en "C++" por qué no usas la clase String? Otra cosa, no puedes comparar dos strings de C de esta manera: buscar != estudiante[k]
Debes usar strcmp() de la librería string.h. No se que otros errores puedas tener, pero soluciona eso primero.
|
|
|
En línea
|
|
|
|
MikeMonostone
Desconectado
Mensajes: 7
[SK-DOOM] MikeMonoStone
|
Esto es parte de una tarea y me pedían que utilizara arreglos estáticos, siempre me paso por la mente utilizar string pero me atuve a lo que me pedían en la tarea.
Gracias amigo por la respuesta corregiré esto y luego posteo los resultados.
Un saludo.
|
|
|
En línea
|
[SK-DOOM] Pensé que lo que haría sería fingir ser uno de esos sordomudos.
|
|
|
MikeMonostone
Desconectado
Mensajes: 7
[SK-DOOM] MikeMonoStone
|
Si estas programando en "C++" por qué no usas la clase String? Otra cosa, no puedes comparar dos strings de C de esta manera: buscar != estudiante[k]
Debes usar strcmp() de la librería string.h. No se que otros errores puedas tener, pero soluciona eso primero. Hice el cambio y utilice la función que me indicaste pero ahora siempre me evalua a 0. /* PROBLEMAS Y ERRORES:
1.- El ciclo FOR,para almacenar nombre y apellidos, me tira un numero mas */ #include <iostream> #include <cstdio> #include <cstring> using namespace std;
int main() {
const int MAX = 100; //Tamaños maximos para filas y columnas del arreglo const int TAM = 50;
//Variables iniciadas para evitar valores basura
char estudiante[MAX][TAM] = {" "}; char buscar[TAM] = {" "}; int tamFila = 0;
cout << "Este programa le permite capturar el nombre y apellido." << "\nde estudiantes esperando en fila, y tambien verifica si un \n" << "nombre introducido por teclado esta en la lista." << "\n_______________________________________________________\n\n\n"; cout << "\t\t::Caja No. 511::\n";
cout << "\nIntroduzca tamano de la fila:"; cin >> tamFila;
cout << "\nNombre y apellido estudiantes en fila.\n"; for ( int j = 0; j <= tamFila; j++) { gets(estudiante[j]);
}
cout << "\n\n\n\t<BUSQUEDA>\n " << "\tPara resultados positivos introduzca\n el nombre tal como lo escribio.\n\n" << "Nombre y apellido estudiante: ";
cin.getline(buscar, sizeof(buscar));
for(int k = 0; k <= tamFila; k++) { int valorCmp = strcmp(estudiante[k], buscar);
if ( valorCmp == 0) {
cout << "=> El que se fue de la fila pierde su silla, " << buscar; break;
}else{
cout << "=> "<< buscar << " por favor pase a pagar."; break;
} }
cout <<"\n\n Personas en fila\n";
for ( int j = 0; j <= tamFila; j++) { if (j != 0) { cout << j << ".- " <<estudiante[j] << endl; }
}
return 0; }
|
|
|
En línea
|
[SK-DOOM] Pensé que lo que haría sería fingir ser uno de esos sordomudos.
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Salvo pifia escondida ya funciona como quieres :/* PROBLEMAS Y ERRORES: 1.- El ciclo FOR,para almacenar nombre y apellidos, me tira un numero mas */ #include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { int j,k,cont =0; const int MAX = 100; //Tamaños maximos para filas y columnas del arreglo const int TAM = 50; //Variables iniciadas para evitar valores basura char estudiante[MAX][TAM]; char buscar[TAM]; int tamFila = 0; cout << "Este programa le permite capturar el nombre y apellido." << "\nde estudiantes esperando en fila, y tambien verifica si un \n" << "nombre introducido por teclado esta en la lista." << "\n_______________________________________________________\n\n\n"; cout << "\t\t::Caja No. 511::\n"; cout << "\nIntroduzca tamano de la fila:"; cin >> tamFila; cout << "\nNombre y apellido estudiantes en fila.\n"; for ( j = 0; j < tamFila; j++) { fflush (stdin); gets(estudiante[j]); } cout << "\n\n\n\t<BUSQUEDA>\n " << "\tPara resultados positivos introduzca\n el nombre tal como lo escribio.\n\n" << "Nombre y apellido estudiante: "; fflush (stdin); /*cin.getline(buscar, sizeof(buscar));*/ cin >> buscar; for( k = 0; k < tamFila; k++) { /*int valorCmp = strcmp(estudiante[k], buscar);*/ if ( strcmp(estudiante[k], buscar)==0 ) { cout << estudiante[k] << buscar<<endl; cout << "=> "<< buscar << " por favor pase a pagar.";cont=1;break; } } if ( cont==0) cout << "=> El que se fue de la fila pierde su silla, \n" ; cout <<"\n\n Personas en fila\n"; for ( j = 0; j < tamFila; j++) { { cout << j+1 << ".- " <<estudiante[j] << endl; } } return 0; }
Saludos!.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema: insertar palabras en un arreglo en C# [solucionado]
.NET (C#, VB.NET, ASP)
|
andiuri
|
7
|
18,666
|
16 Mayo 2012, 21:37 pm
por J3RRYG3
|
|
|
Problema con arreglo de enteros
Programación C/C++
|
Calensito
|
3
|
3,204
|
6 Octubre 2010, 15:33 pm
por Calensito
|
|
|
ayuda con pequeño detalle en programa de busqueda en un arreglo
Programación C/C++
|
johnnyBsc17
|
2
|
2,429
|
17 Octubre 2011, 06:24 am
por _niu
|
|
|
Recorrer un Arreglo en Java (Buscar String)
Java
|
NatzMorel
|
1
|
4,385
|
14 Junio 2012, 11:31 am
por ollo
|
|
|
Como creo un arreglo MultiClase? a = {String, int, miclase}
Programación C/C++
|
Synth3tik0
|
2
|
3,042
|
1 Enero 2013, 21:11 pm
por 0xDani
|
|