Duda arreglos

Iniciado por alexis33de, 28 Agosto 2010, 17:37 PM

0 Miembros y 1 Visitante están viendo este tema.

alexis33de

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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
     int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};//para demostrar que esta comparando
     int y[10];
     int i = 0;
     while(*(y + i) = *(x + i)) i++;

     for(int a= 0; a < 10; a++)
          cout<<y[a]<<endl;
     system("pause");
     return 0;
}

clodan

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

[L]ord [R]NA

#2
Cita de: 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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
    int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};//para demostrar que esta comparando
    int y[10];
    int i = 0;
    while(*(y + i) = *(x + i)) i++;

    for(int a= 0; a < 10; a++)
         cout<<y[a]<<endl;
    system("pause");
    return 0;
}


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 (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main()
{
    int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};//para demostrar que esta comparando
    int y[10];
    for(int a= 0; a < 10; a++)
         {y[a]=x[a];    
           cout<<y[a]<<endl;
                 }
    cin.get();
return 0;
}


EI: juntando mensajes.

Cita de: 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

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.

clodan

Cita de: Lord R.N.A. en 30 Agosto 2010, 17:11 PM
Cita de: 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

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!

[L]ord [R]NA

mas me parecio que no sabias para que funcionaba strcat()

clodan

Cita de: Lord R.N.A. en 31 Agosto 2010, 13:51 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??

do-while

#6
¡Buenas!

El codigo
Código (cpp) [Seleccionar]
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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

[L]ord [R]NA

Cita de: do-while en 31 Agosto 2010, 18:20 PM
¡Buenas!

El codigo
Código (cpp) [Seleccionar]
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.