• Viernes 8 de Noviembre de 2024, 17:57

Autor Tema:  Hola Es Una Duda...  (Leído 3272 veces)

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Hola Es Una Duda...
« en: Jueves 29 de Marzo de 2007, 17:31 »
0
Hola yo tengo string palabras[100],es un strind de palabras,en el que yo guardaré palabras..como puedo incializarlo,es decir que los 100 sitios de almacenamiento no haya nada o lo que es igual a ""?

me podeis ayudar?
y como puedo mostrar por pantalla cada vez que guardo algo..o una vez que he guardado todo?

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #1 en: Jueves 29 de Marzo de 2007, 17:35 »
0
para inicializarlo es facil:

Código: Text
  1. char cad[100] = " ";
  2.  

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #2 en: Jueves 29 de Marzo de 2007, 17:40 »
0
hola,,me habeis puesto   char cad[100]="",lo primero es que lo mio es un string,,se haría de igual forma?

y otra pregunta,,"" pone todos a "", ??? es una pregunta...

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #3 en: Jueves 29 de Marzo de 2007, 18:00 »
0
:D  :D

Podeis hacer algo un poco màs didactico y como decian en mi escuela, si no sabes como es que se inicializa la variable, pues imprimela y quitate de dudas...
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #4 en: Jueves 29 de Marzo de 2007, 18:01 »
0
el tipo de dato string no existe en C++ ni en C, por lo cual manejas la cadena de caracteres como un vector de caracteres. Cuando haces esto:

Código: Text
  1.  cad[100]=""
  2.  
Lo que haces es crear un vector de 100 elementos y los inicializas a " ".

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #5 en: Jueves 29 de Marzo de 2007, 18:03 »
0
perdona..pero el dato tipo string si que existen en C++,miralo y verás como si existe...

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Hola Es Una Duda...
« Respuesta #6 en: Jueves 29 de Marzo de 2007, 18:16 »
0
No, pacorubio77. AnioN tiene razón.-
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #7 en: Jueves 29 de Marzo de 2007, 18:21 »
0
Vamos a ver,,vosotros me estais diciendo que no existe string palabra[100]???

eso me estais diciendo?

yo lo entiendo que es un vector de strings..no?

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Hola Es Una Duda...
« Respuesta #8 en: Jueves 29 de Marzo de 2007, 18:34 »
0
si
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Hola Es Una Duda...
« Respuesta #9 en: Jueves 29 de Marzo de 2007, 18:56 »
0
Un ejemplo:

Un vector de 5 cadenas no es mas que una matriz de caracteres.-
Código: Text
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.   char cadena[5][100];
  5.   int i;
  6.   for(i=0; i<5; i++){
  7.     printf("Ingresa la palabra o frase %i: ",i+1);
  8.     gets(cadena[i]);
  9.   }
  10.   for(i=0; i<5; i++){
  11.     printf("La palabra %i es: %s\n",i+1,cadena[i]);
  12.   }
  13.   getchar();
  14.   return 0;
  15. }
  16.  
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Hola Es Una Duda...
« Respuesta #10 en: Jueves 29 de Marzo de 2007, 19:20 »
0
Cita de: "Angel_K_ido"
Un ejemplo:

Un vector de 5 cadenas no es mas que una matriz de caracteres.-
Código: Text
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.   char cadena[5][100];
  5.   int i;
  6.   for(i=0; i<5; i++){
  7.     printf("Ingresa la palabra o frase %i: ",i+1);
  8.     gets(cadena[i]);
  9.   }
  10.   for(i=0; i<5; i++){
  11.     printf("La palabra %i es: %s\n",i+1,cadena[i]);
  12.   }
  13.   getchar();
  14.   return 0;
  15. }
  16.  
Desde el punto de vista que todas las cadenas tuviesen igual longitud SI.

Pero desde el punto de vista de que no todas las cadenas tienen igual longitud NO.

en ese caso serian lo que en CLR se le llama un jagged array en el cual cada miembro del arrray contiene un array (o un puntero como,lo quieran ver) que puede direccionar diferentes longitudes a los demas.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Hola Es Una Duda...
« Respuesta #11 en: Jueves 29 de Marzo de 2007, 19:33 »
0
mmm... no sabía eso, voy  investigar. :smartass:

En este caso. ¿Cómo es el manejo de la memoria?¿No se reserva una longitud fija para cada cadena?
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #12 en: Jueves 29 de Marzo de 2007, 19:33 »
0
Cuidado que estan confundiendo ... en C++ standard existe una clase (de la STL) llamada string. Tal vez para lo tuyo podrias hacer un for y asignarle "" a cada elemento ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #13 en: Jueves 29 de Marzo de 2007, 19:42 »
0
hombre,el último que me ha contestado es el que tenia algo de idea de strings,en c++ si que existe el tipo string.Bueno no me habeis aclarado mucho.pero voy a haceros otra pregunta,relacionado con lo mismo...si yo quiero imprimir mi vector?
Es decir yo tengo definido string palabras[100],correcto?

pero ahora en mi programa..para ver resultados me gustaria imprimir por pantalla(siempre en C++) mi string,y yo pongo

cout<<palabras<<endl;  //pero no me sale el vector,,si no que el resultado que me
sale es 0bhffx6...etc...eso porque es?me podeis decir como imprimrlo por pantalla de una manera correcta?

Ahh un dato..yo creia que esto que me salia era por no inicializar,,pero al inicializarlo a "",me sale lo mismo...

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #14 en: Jueves 29 de Marzo de 2007, 19:46 »
0
Cita de: "pacorubio77"
hombre,el último que me ha contestado es el que tenia algo de idea de strings,en c++ si que existe el tipo string.Bueno no me habeis aclarado mucho.pero voy a haceros otra pregunta,relacionado con lo mismo...si yo quiero imprimir mi vector?
Aca tenes un ejemplo funcional:
Código: Text
  1.  
  2.   string palabras[100];
  3.   for (int x = 0; x &#60; 100; x++) { palabras[x] = &#34;&#34;; } //tambien podes usar palabras[x].clear();
  4.   palabras[0] = &#34;hola&#34;;
  5.   cout &#60;&#60; palabras[0] &#60;&#60; endl;
  6.   cout &#60;&#60; palabras[1] &#60;&#60; endl;
  7.  
  8.  

El primero pondra hola y fin de linea y el segundo solo fin de linea al haber sido inicializado correctamente.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Hola Es Una Duda...
« Respuesta #15 en: Jueves 29 de Marzo de 2007, 20:18 »
0
Cita de: "Angel_K_ido"
mmm... no sabía eso, voy  investigar. :smartass:

En este caso. ¿Cómo es el manejo de la memoria?¿No se reserva una longitud fija para cada cadena?
No.
lo que si es fijo es el tamaño del puntero, pero no la porción de memoria que este puede direccionar, esa es variable.

cuando haces
Código: Text
  1. char chr[x][y]
  2.  

estas diciendo que cada puntero chr[0..(x-1)] puede direccionar 'y' bytes de memoria, en ese caso por eso siempre la cadena seria máximo de tamaño 'y' o uno menos se se tiene en cuenta el carácter '\0' al final.

para que las cadenas fueran de diferente longitud (sin usar la clase string de C++) deberas usar algo como esto: (ejemplo array de dos cadenas)
Código: Text
  1.  
  2. char **chr
  3.  
  4. chr = (char**)malloc(sizeof(char *) * 2 );
  5.  
  6. //cadena 10 caracteres
  7. chr[0] = (char*)malloc(sizeof( char *)  * 11);
  8.  
  9. strcpy(chr[0], &#34;0123456789&#34;);
  10. chr[0][10]='&#092;0';
  11.  
  12. //cadena 5 caracteres
  13. chr[1] = (char*)malloc(6);
  14.  
  15. strcpy(chr[1], &#34;01234&#34;);
  16. chr[1][6]='&#092;0';
  17.  

PD: Espero que no este mal el ejemplo, no lo he pasado por compilador y ya casi no codifico nada  en este lenguaje
[/size]
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Hola Es Una Duda...
« Respuesta #16 en: Jueves 29 de Marzo de 2007, 20:54 »
0
No importa lo si no compila, igual después lo pruebo.

Para aclarar mi duda me sirve.

Gracias.-
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #17 en: Jueves 29 de Marzo de 2007, 21:08 »
0
Código: Text
  1. #include &#60;iostream&#62;
  2. #include &#60;string.h&#62;
  3. #include&#60;stdlib.h&#62;
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.   char **chr;
  10.  
  11.   chr = (char**)malloc(sizeof(char *) * 2 );
  12.  
  13.   *chr = (char*)malloc(sizeof( char *)  * 11);
  14.  
  15.   strcpy(*chr, &#34;0123456789&#092;0&#34;);
  16.  
  17.   cout &#60;&#60; *chr &#60;&#60; endl;
  18.  
  19.   chr++;
  20.  
  21.   *chr = (char*)malloc(6);
  22.  
  23.   strcpy(*chr, &#34;01234&#092;0&#34;);
  24.  
  25.   cout &#60;&#60; *chr &#60;&#60; endl;
  26.  
  27.   return 0;
  28. }
  29.  

exjoe

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #18 en: Martes 10 de Abril de 2007, 23:55 »
0
esta es una de las vias, o sea debes construir cada elemento con NULL o nada;
string palabra[100]

for(int i=0;i<=100;i++,palabra="");// para hacerlo asi debes de acordarte del punto y coma al fina
 

si te resulta engorroso hacerlo asi lo puedes separar
o sea
for(int i=0;i<=100;i++)
     palabra="");
// y ya esta resuelto bueno chao
espero resuelvas con esto

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Hola Es Una Duda...
« Respuesta #19 en: Miércoles 11 de Abril de 2007, 08:12 »
0
Cita de: "exjoe"
esta es una de las vias, o sea debes construir cada elemento con NULL o nada;
string palabra[100]

for(int i=0;i<=100;i++,palabra="");// para hacerlo asi debes de acordarte del punto y coma al fina
¿Y cual es la diferencia con el codigo que puse cuando la pregunta fue hecha? Vuelvo a decir que me parece bien que se quiera colaborar pero me parece mejor que esperen a que haya una duda sin resolver.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.