Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Insertar Palabras En Un Arreglo

Estas en el tema de Insertar Palabras En Un Arreglo en el foro de C/C++ en Foros del Web. hola gente, soy nuevo en el foro, desde ya les pido que me ayuden.gracias estoy haciendo un programa en C para la universidad(Trabajo practico) lo ...
  #1 (permalink)  
Antiguo 08/05/2008, 15:06
 
Fecha de Ingreso: mayo-2008
Ubicación: argentina
Mensajes: 5
Antigüedad: 16 años
Puntos: 0
Pregunta Insertar Palabras En Un Arreglo

hola gente, soy nuevo en el foro, desde ya les pido que me ayuden.gracias

estoy haciendo un programa en C para la universidad(Trabajo practico)
lo que quiero haces es, una especie de diccionario(predeterminado, con pocas palabras para traducir), de ingles a español y viceversa, el problema que tngo, es el siguiente:
como hago que un arreglo tnga varias palabras insertadas. porque podria guardarlas en varias string, pero al momento de buscar alguna palabra se me haria muy complicado, lo cual en un arreglo es muy facil de econtrar.

digamos que un arreglo contenga 20 palabras, y asi poder tomar 1 por 1, arreglo[0]=mayo
arreglo[2]=julio.....etc
tngo entendido que los arreglos almacenan 1 palabra, pero lso bidimensionales pueden almacenar lo que estoy pidiendo creo, pero no se como seria la sintaxis en c para hacer eso

BUENO DISCULPEN SI NO ME PUEDO EXPRESER BIEN, ESPERO QUE PUEDAN AYUDARME GRACIAS
  #2 (permalink)  
Antiguo 08/05/2008, 15:59
Avatar de jotaaigriegao  
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Insertar Palabras En Un Arreglo

los arreglos bidimensionales no se refieren a la cantidad de registros q pueden guardar para cada elemento, simplemente te dicen la cantidad de indices que tienen. en este caso,serian 2 y en lugar de referirte a arreglo[0], tendrias q referirte a arreglo[0][0] o arreglo [0,0]. si lo q kieres es almacenar varias palabras equivalentes para una sola, podrias usar un arreglo bidimensional si defines un indice para cada palabra base. por ejemplo, si defines que la palabra "gato" corresponde al indice 0, podrias reservar un maximo de palabras asociadas (digamos 5) y tendrias:

arreglo[0,0] = "felino";
arreglo[0,1] = "no se";
arreglo[0,2] = "mascota";
arreglo[0,3] = "otra palabra";
arreglo[0,4] = "otra mas":

simplemente el primer indice t indicaria a q palabra se refiere. si sabes q gato es cero, recorres el arreglo por su segundo indice. espero q te ayude.
  #3 (permalink)  
Antiguo 09/05/2008, 11:44
 
Fecha de Ingreso: mayo-2008
Ubicación: argentina
Mensajes: 5
Antigüedad: 16 años
Puntos: 0
Re: Insertar Palabras En Un Arreglo

gracias, la idea te entiendo, quise correr el programa, me sale un error en la parte de declaracion del arreglo:
le tngo q declarar asi: siguiendo la idea tuya de que sean 5 palabras

char arreglos[0][5];
char arreglos[0,5];
como es??¿?
y si en caso tendria que imprimir, arreglo[0,4](osea "otra mas") pense trabajar con punteros pero tmb me sale error.
para no complicarte mucho hazme un simple ejemplo de un arreglo bidimensional que tnga 2 palabras e imprimilas.
gracias nuevamente, pense que no me iban a contestar no creia mucho en esto

atte: disculpa mi poca experiencia en porgramacion, en el msj de respuesta informame de que haces vos, asi nos conocemos un poco mejor.
el programa que uso para correr los fuentes.c es el "borland turbo c"

Última edición por groxman11; 09/05/2008 a las 11:45 Razón: me falto agregar algo
  #4 (permalink)  
Antiguo 09/05/2008, 12:10
Avatar de jotaaigriegao  
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Insertar Palabras En Un Arreglo

en C no hay un tipo de dato primitivo para las cadenas como tales, por eso son arreglos de caracteres o punteros a caracteres. en este caso, asumiremos que tienes una longitud maxima de cadena de 10, por lo que simularemos la cadena con un arreglo. es mucho mas eficiente usar un puntero, pero ahora no me acuerdo completamente.

a ver, hace tiempo no programo en C, pero seria algo asi:

char arreglo[5][10]; // 5 cadenas de longitud 10

// aca lo llenas

strcpy(arreglo[0][],"felino");
strcpy(arreglo[1][],"no se");
strcpy(arreglo[2][],"mascota");
strcpy(arreglo[3][],"otra palabra");
strcpy(arreglo[4][],"otra mas");

// luego imprimes

for (int i=0;i<5;i++){
printf("%s\n",arreglo[i][]);
}

pruebalo
  #5 (permalink)  
Antiguo 09/05/2008, 12:22
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Re: Insertar Palabras En Un Arreglo

Complementando lo que menciona jotaaigriegao

Cita:
char arreglo[5][10]; // 5 cadenas de longitud 10
Aqui estas definiendo 5 cadenas de longitud 9, esto debido a que el ultimo elemento de cada cadena debe ser '\0', esto es para evitar que se desborden las variables y tu prog no haga comportamientos raros...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #6 (permalink)  
Antiguo 09/05/2008, 12:30
Avatar de jotaaigriegao  
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Insertar Palabras En Un Arreglo

muy cierto, ese caracter indica el fin de la cadena. por ello tambien es mejor aprovechar las funciones de la libreria string.h que reservan espacio justo y colocan el caracter de fin de cadena.
  #7 (permalink)  
Antiguo 09/05/2008, 18:16
 
Fecha de Ingreso: mayo-2008
Ubicación: argentina
Mensajes: 5
Antigüedad: 16 años
Puntos: 0
Exclamación Re: Insertar Palabras En Un Arreglo

/*SE QUE ES UN POCO LARGO TODA LA DESCRIPCION PERO POR FAVOR LEANLO*/


bueno es cierto todo lo que dicen, sobre las bibliotecas que debo introducir, para determinada funcione, y que al final de un arreglo hay un nulo, o un espacio vacio que indica el final del arreglo.

arreglo[5][10];

el llenado de los arreglos, en este caso lo estas haciendo con la funcion strcpy, que tiene 2 parametros, generlamente 2 punteros, o dos arreglos, que serian casi lo mismo, bueno esta funcion copia lo que hay en el segundo arreglo y lo superpone en el primer arreglo. strcpy(parm1,parm2);

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 f e l i n o
1 n o s e
2 m a s c o t a
3 o t r a p a l a b r a
4 o t r a m a s


cuando tu declaras
strcpy(arreglo[0][],"felino"); estas copiando la cadena "felino" en el arreglo de la fila 0 y no pones columan por que supongo que la cadena de caracteres definira el tamaño del arreglo.
BUENO COMO VERAN ENTIENDO TODO. AL MENOS SI ESO ES LO QUE ME HAN QUERIDO TRASNMITIR, EL PROBLEMA AHORA YA NO ES COMO EMPIEZO SI NO QUE CUANDO CORRO EL PROGRAMA ME SALEN ERRORES EN LA PARTE DE strcpy el error es :error de sintaxys en funcion main

bueno no se si ustedes provaron correr el programa, en el "borland turbo c" en ese compilador no funciona
EL PROGRAMA ES :
#include<stdio.h>
#include<string.h>
main(){
char arreglo[5][10]; /* 5 cadenas de longitud 10*/

/*aca lo llenas*/

strcpy(arreglo[0][],"felino");
strcpy(arreglo[1][],"no se"); /*los errores me salen aqui*/
strcpy(arreglo[2][],"mascota");
strcpy(arreglo[3][],"otra palabra");
strcpy(arreglo[4][],"otra mas");

/*luego imprimes */

for (int i=0;i<5;i++){
printf("%s\n",arreglo[i][]);

}
getch();
}

VUELVO A DECIR AHORA LA CONSIGNA ES UN PROGRAMA QUE EN UN ARREGLO PUEDA ALMACENAR PALABRAS PARA LUEGO IMPRIMIRLAS, COMPARARLAS, CAMBIARLAS, PARA LO CUAL EL ACCESO A CADA PALABRA DEBE SER FACIL, ASI COMO EL ACCESO AL CONJUNTO DE TODO EL ARREGLO TMB, POR EJEMPLO PUEDO NECEISTAR COMPARAR UNA PALABRA X CON TODAS LAS PALABRAS Y DEL ARREGLO.

SI EL ARREGLO TIENE: "hola, bien, mal"
comparar por medio de un ciclo la palabra "chao", con "hola,bien,mal" una por una, y decir si son iguales o algo parecido.
BUENO PERO POR LO MIENTRAS CON QUE CORRA EL PROGRAMA ME HES SUFICIENTE EL CAMBIO DE PALABRAS Y LA IMPRESION Y COMPARACION SON SECUNDARIOS.

LES PIDO ENCARECIDAMENTE QUE ME SIGAN AYUDANDO DESDE YA GRACIAS.
  #8 (permalink)  
Antiguo 11/05/2008, 11:58
Avatar de jotaaigriegao  
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Insertar Palabras En Un Arreglo

aca va el codigo..
ojala te sirva


#include<stdio.h>
#include<string.h>

int main(void){

char *arreglo[5];
int i;

arreglo[0] = strdup("Prueba");
arreglo[1] = strdup("de programa");
arreglo[2] = strdup("manejador");
arreglo[3] = strdup("de");
arreglo[4] = strdup("cadenas");


for (i=0; i < 5; i++) {

printf("%s\n",arreglo[i]);
}


//esta es la parte que compararia cadenas

char cadena[100];
bool exito = false;

printf("Ingrese cadena: ");
gets(cadena);

for (i=0; i< 5 ; i++) {

if (strcmp(cadena,arreglo[i]) == 0) {
exito = true;
printf("La cadena ingresada se encuentra en el arreglo, en la posicion %d\n",i);
}
}
if (!exito) {
printf("No se encontro la cadena ingresada...\n");
}


return 0;

}
  #9 (permalink)  
Antiguo 11/05/2008, 14:41
 
Fecha de Ingreso: mayo-2008
Ubicación: argentina
Mensajes: 5
Antigüedad: 16 años
Puntos: 0
Re: Insertar Palabras En Un Arreglo

BUENO LA VERDAD QUE ME AYUDASTE BASTANTE Y ES VERDAD ME HA SERVIDO DE MUCHO, PORFIN PODRE TERMINAR MI DICCIONARIO =D,GRACIAS A TODOS EN ESPECIAL A TI JOTA, cualquier otra cosa lo posteo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:18.