/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Comparacion de palabras, Almacenamiento de ellas mismas...

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
dark_1



Registrado: 09 Oct 2007
Mensajes: 6

MensajePublicado: 09/10/2007 3:53 pm
Título: Comparacion de palabras, Almacenamiento de ellas mismas...

Saludos!
Bueno, recurro al foro por la razon que no se me ocurre (y dios google no me ayuda mucho tampoco) cómo guardar varias palabras en un mismo tipo

Me explico; la idea del programa es la igualdad de conjuntos, le pido al usuario que ingrese 2 elementos y que el programa muestre en pantalla los Conjuntos que cumplen con tener a ambos elementos

-El problema que tengo, es que los conjuntos deben tener solo palabras como elementos, es decir;
Código:
Conjunto A = Casa, Auto, Calle 29...
Conjunto B = Calle 29, Auto, Llaves, Mouse...
Conjunto C = Mouse, Botella, Calendario
/*acá el usuario ingresa, por ejemplo, auto y calle., entonces el programa muestra en pantalla que los conjuntos que cumplen con tener a ambos elementos serian Conjunto A, Conjunto B*/

Lo que está en el code no tengo idea como hacerlo, intente con la libreria string.h, pero no me permite guardar mas de 1 frase.

-Ya, Si se logrará guardar los conjuntos como esta mostrado arriba, como lo haria para que el programa buscara los elementos tal que exista(n) algun(os) conjunto(s) que cumpla(n) con lo pedido?
Hay una funcion en la libreria string.h que se llama "strncmp" que compara la igualdad de dos palabras, y le asigna valor numerico igual a cero si son iguales.

Porfavor, El que pueda ayudarme con lo que pueda, estaria muy agradecido.

Cualquier ayuda sirve, si saben de alguna libreria que quizas podria servir, posteenla y la estudiare, pero porfavor ayudenme, busque en dios google varias librerias y la string.h me parece la mas adecuada.

Disculpen si rompi alguna regla con postear acá la pregunta, o si me extendi demasiado

Uso el dev-c++ 4.9.9.2 y tengo intel pentium 4


Ultima edición por dark_1 el 09/10/2007 7:26 pm; editado 2 veces
Volver arriba
cheroky



Registrado: 22 Sep 2005
Mensajes: 1372
Ubicación: En ecx esperando un call

MensajePublicado: 09/10/2007 5:22 pm
Título:

Para empezar con buen pie deberías reportar el lenguaje que vas a utilizar y ser mas explicito con tu problema.

Por otra parte el problema que mencionas es posible que se pueda afrontar con tipos abstractos de datos (TAD) , formando una colección de elementos de igual o distinto tipo, en C esto se construye con estructuras.


S2.
_________________
- Explícito es mejor que implícito.
- Simple es mejor que complejo.
- Complejo es mejor que complicado.
- Plano es mejor que anidado.
- Ralo es mejor que denso.
Volver arriba
dark_1



Registrado: 09 Oct 2007
Mensajes: 6

MensajePublicado: 09/10/2007 5:24 pm
Título:

uff, lo siento, el lenguaje es C.

Puedes explicarme como seria con "Estructuras"?

Gracias por responder ^^
Volver arriba
cheroky



Registrado: 22 Sep 2005
Mensajes: 1372
Ubicación: En ecx esperando un call

MensajePublicado: 10/10/2007 5:43 am
Título:

El uso de estructuras en C es un tema básico incluido en todos los manuales/tutórales sobre el lenguaje. Cualquier duda concreta que tengas al respecto no dudes en preguntarla.

S2.
_________________
- Explícito es mejor que implícito.
- Simple es mejor que complejo.
- Complejo es mejor que complicado.
- Plano es mejor que anidado.
- Ralo es mejor que denso.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3841
Ubicación: Mexico

MensajePublicado: 10/10/2007 7:30 am
Título: Re: Comparacion de palabras, Almacenamiento de ellas mismas.

dark_1 escribió:
Lo que está en el code no tengo idea como hacerlo, intente con la libreria string.h, pero no me permite guardar mas de 1 frase.

El almacenamiento de cadenas de texto (en la forma de arrays de caracteres) es parte del lenguaje y no necesitas utilizar las funciones declaradas en <string.h>. ¿Cual es tu nivel en el lenguaje C?

Si todavia no han visto el tema de las cadenas de texto me temo que no vas a poder desarrollar el programa (ya que usando arrays es la forma mas simple).

En una forma muy general utilizando arrays de arrays (mal llamadas matrices) los conjuntos se declararian asi:
Código:
#define LONG_MAX_CADENA  128

/* ... */

char A[][LONG_MAX_CADENA] = {
   "Casa",
   "Auto",
   "Calle 29",
};

char B[][LONG_MAX_CADENA] = {
   "Calle 29",
   "Auto",
   "Llaves",
   "Mouse"
};

char C[][LONG_MAX_CADENA] = {
   "Mouse",
   "Botella",
   "Calendario"
};


Y para comparar cada una de las cadenas introducidas por el usuario (o leidas de un archivo, etc.) con las de cada conjunto utilizarias las funciones strcmp y strncmp.

Por ultimo como ya te indico Cheroky lo mejor que puedes hacer tanto en el tema de arrays como estructuras es la lectura de un buen tutorial y/o libro, mas informacion sobre esto en la base de datos de los foros y en las secciones "Cursos" y "Enlaces" de este sitio.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
dark_1



Registrado: 09 Oct 2007
Mensajes: 6

MensajePublicado: 10/10/2007 9:49 am
Título: Re: Comparacion de palabras, Almacenamiento de ellas mismas.

Código:
#include <stdio.h>
#include <string.h>
#include<windows.h>

int main(){
   char Conjunto A[3][20] = { "Camion", "Viana", "Calle 29"};
   char Conjunto B[3][20] = { "vina", "alvares", "choca"};
   char Elemento1[20];
   char Elemento2[20];
   gets(Elemento1);
   gets(Elemento2);
   int i;
   for(i=0;i<3;i++){
   if (strcmp(Conjunto A[i], Elemento1) == 0){
   for(i=0;i<3;i++){
                    if (strcmp(Conjunto A[i], Elemento2) == 0)
                                          printf("Conjunto A cumple \n");
                                         
                    }
                                      }
                    }
   


   
      system("pause");
  return 0;
}


Esto es lo que saque a puro string, y el bucle
Código:
for(i=0;i<3;i++){
   if (strcmp(Conjunto A[i], Elemento1) == 0){
   for(i=0;i<3;i++){
                    if (strcmp(Conjunto A[i], Elemento2) == 0)
                                          printf("Conjunto A cumple\n");
                                         
                    }
                                      }
                    }

lo va a hacer "N veces" donde N es el numero de conjuntos; Respecto a este bucle, hay alguna manera de no hacerlo N veces,y que el programa busque en cada conjunto, no se si se podra con un for o un do while..
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3841
Ubicación: Mexico

MensajePublicado: 11/10/2007 8:29 am
Título:

Ese programa no compilaria ya que en C los nombres dados a los objetos no pueden contener espacio blanco (espacio, tabulador, etc.):
Código:
char Conjunto A[3][20] = {
   "Camion",
   "Viana",
   "Calle 29"
};

char Conjunto B[3][20] = {
   "vina",
   "alvares",
   "choca"
};


Para corregirlo lo mas sencillo es sustituir el espacio por un caracter valido como el guion bajo:
Código:
char Conjunto_A[3][20] = {
   "Camion",
   "Viana",
   "Calle 29"
};

char Conjunto_B[3][20] = {
   "vina",
   "alvares",
   "choca"
};


En cuanto al numero de operaciones que realiza la busqueda en este caso (con solo tres elementos) en realidad no importa (lease no impacta el rendimiento del programa).

En casos con un mayor numero de elementos y donde se requiera una busqueda mas eficiente se puede utilizar la busqueda binaria ya sea una funcion propia o la provista por la biblioteca estandar de C.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
dark_1



Registrado: 09 Oct 2007
Mensajes: 6

MensajePublicado: 11/10/2007 9:59 am
Título:

Oka gracias!.

estudiare mas los strings, son super utiles (con los arrays)
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com