Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: alexis33de en 28 Agosto 2010, 17:37 pm



Título: Duda arreglos
Publicado por: alexis33de en 28 Agosto 2010, 17:37 pm
Hola estaba viendo un problema que vi sobre arreglos dice asi:  :laugh:

int x[10]; //Puede arreglarse las declaraciones para que funcione la asignacion x=y?
int y[10];
mi solución fue la de usar punteros y mi codigo es el siguiente, ahora esta bien esta forma que uso o existe otra forma  :P. Ojo lo que pide es arreglar declaraciones, pero igual lo hize de esta forma, no se si sea la correcta ;D
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.     int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};//para demostrar que esta comparando
  7.     int y[10];
  8.     int i = 0;
  9.     while(*(y + i) = *(x + i)) i++;
  10.  
  11.     for(int a= 0; a < 10; a++)
  12.          cout<<y[a]<<endl;
  13.     system("pause");
  14.     return 0;
  15. }


Título: Re: Duda arreglos
Publicado por: clodan en 30 Agosto 2010, 15:39 pm
osea... a y le queres asignar los valores de x??

emm dentro de string.h me parece que hay una funcion que es

strcat (var1,var2);

creo que esa te copiaba el valor de la var2 en la 1


Título: Re: Duda arreglos
Publicado por: [L]ord [R]NA en 30 Agosto 2010, 17:11 pm
Hola estaba viendo un problema que vi sobre arreglos dice asi:  :laugh:

int x[10]; //Puede arreglarse las declaraciones para que funcione la asignacion x=y?
int y[10];
mi solución fue la de usar punteros y mi codigo es el siguiente, ahora esta bien esta forma que uso o existe otra forma  :P. Ojo lo que pide es arreglar declaraciones, pero igual lo hize de esta forma, no se si sea la correcta ;D
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.     int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};//para demostrar que esta comparando
  7.     int y[10];
  8.     int i = 0;
  9.     while(*(y + i) = *(x + i)) i++;
  10.  
  11.     for(int a= 0; a < 10; a++)
  12.          cout<<y[a]<<endl;
  13.     system("pause");
  14.     return 0;
  15. }

el codigo esta incorrecto, si te fijas saldra solo cuando suceda un error debido a que lo que haces es asignar el valor de x+i a y+i, no existe una condicion verdadera donde termine el while.


Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.     int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};//para demostrar que esta comparando
  7.     int y[10];
  8.     for(int a= 0; a < 10; a++)
  9.          {y[a]=x[a];    
  10.            cout<<y[a]<<endl;
  11.                  }
  12.     cin.get();
  13. return 0;
  14. }
  15.  

EI: juntando mensajes.

osea... a y le queres asignar los valores de x??

emm dentro de string.h me parece que hay una funcion que es

strcat (var1,var2);

creo que esa te copiaba el valor de la var2 en la 1

strcat(); funciona con strings o cadena de caracteres, no con ints... ademas la funcion concatena el segundo parametro al primero... no asigna el valor del segundo al primero.


Título: Re: Duda arreglos
Publicado por: clodan en 30 Agosto 2010, 17:25 pm
osea... a y le queres asignar los valores de x??

emm dentro de string.h me parece que hay una funcion que es

strcat (var1,var2);

creo que esa te copiaba el valor de la var2 en la 1

strcat(); funciona con strings o cadena de caracteres, no con ints... ademas la funcion concatena el segundo parametro al primero... no asigna el valor del segundo al primero.

claaa... por eso, no entendi que es lo que queria hacer :P jajaja

salu2!


Título: Re: Duda arreglos
Publicado por: [L]ord [R]NA en 31 Agosto 2010, 13:51 pm
mas me parecio que no sabias para que funcionaba strcat()


Título: Re: Duda arreglos
Publicado por: clodan en 31 Agosto 2010, 15:23 pm
mas me parecio que no sabias para que funcionaba strcat()

 :¬¬ :¬¬ :¬¬

cual es la funcion que copiaba y pegaba arriba de una string??
strcpy ();???

strcat entonces es la que te copia al final el contenido de otra string,
strcpy es la qe te copia el contenido de una a otra no??


Título: Re: Duda arreglos
Publicado por: do-while en 31 Agosto 2010, 18:20 pm
ˇBuenas!

El codigo
Código
  1. while(*(y + i) = *(x + i)) i++;
es correcto, ya que el ultimo valor de x es cero, y al asignarse dicho valor a la componente correspondiente de y, el valor almacenado en esa posicion sera utilizado para evaluar la condicion de continuidad del ciclo y sera falsa por ser cero.

El codigo inicial parece ser correcto, lo unico que sobra (y no digo que no sea correcto, sino que sobra) es la variable a. Puedes volver a utilizar la variable i para mostrar el contenido de y.

Otra cosa, intenta no usar la funcion system. Aunque este en la libreria estandar, se utiliza para pasar comandos al sistema operativo y por lo tanto tu codigo solo funcionara bajo un sistema operativo en particular. Utiliza getchar para que tu codigo sea portable.

ˇSaludos!


Título: Re: Duda arreglos
Publicado por: [L]ord [R]NA en 31 Agosto 2010, 18:27 pm
ˇBuenas!

El codigo
Código
  1. while(*(y + i) = *(x + i)) i++;
es correcto, ya que el ultimo valor de x es cero, y al asignarse dicho valor a la componente correspondiente de y, el valor almacenado en esa posicion sera utilizado para evaluar la condicion de continuidad del ciclo y sera falsa por ser cero.

El codigo inicial parece ser correcto, lo unico que sobra (y no digo que no sea correcto, sino que sobra) es la variable a. Puedes volver a utilizar la variable i para mostrar el contenido de y.

Otra cosa, intenta no usar la funcion system. Aunque este en la libreria estandar, se utiliza para pasar comandos al sistema operativo y por lo tanto tu codigo solo funcionara bajo un sistema operativo en particular. Utiliza getchar para que tu codigo sea portable.

ˇSaludos!

Personalmente cuando escribi el nuevo codigo... no tome en cuenta cuando pasara el valor 0.