Dev - C++ - Copiar un arreglo con los valores de los elementos reversados en dicha copia

 
Vista:

Copiar un arreglo con los valores de los elementos reversados en dicha copia

Publicado por programa en c++ (9 intervenciones) el 03/12/2020 22:00:26
Escriba una función que acepte un arreglo de enteros y la cantidad de elementos de dicho arreglo. La función debe crear una copia del arreglo, excepto que los valores de los elementos deben estar reversados en dicha copia. La función debe retornar un puntero que apunte al nuevo arreglo, debe demostrar el uso de la función en un programa completo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Copiar un arreglo con los valores de los elementos reversados en dicha copia

Publicado por Alfil (1444 intervenciones) el 04/12/2020 00:32:00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
int* reverso(int v[], int n);
 
int main()
{
    int v[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int *ptr = reverso(v, 10);
 
    for (int i = 0; i < 10; i++)
        std::cout << ptr[i] << " ";
 
    return 0;
}
 
int* reverso(int v[], int n)
{
    int rev[n];
 
    int k = n - 1;
    for (int i = 0; i < n; i++)
        rev[i] = v[k--];
 
    for (int i = 0; i < n; i++)
        rev[i] = v[i];
 
    return v;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Copiar un arreglo con los valores de los elementos reversados en dicha copia

Publicado por Rodrigo (539 intervenciones) el 04/12/2020 06:06:39
Sugiero cambiar 3 cosas de la solucion anteriormente ofrecida:

- Borrar las lineas 24 y 25. El reverso de las lineas 21 y 22 se esta deshaciendo con estas lineas.

- En la linea 27 se esta retornando el mismo arreglo que se pasa como parametro, deberia devolverse el arreglo generado con el reverso (rev).

- Pide memoria para el arreglo en la linea 18 asi
1
int *rev = new int[n];

tal como esta, se esta devolviendo la direccion de memoria de un objeto que se morira al salir de la funcion: Posible desastre posterior.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Copiar un arreglo con los valores de los elementos reversados en dicha copia

Publicado por Alfil (1444 intervenciones) el 04/12/2020 07:17:18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
int* reverso(int v[], int n);
 
int main()
{
    int v[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int *ptr = reverso(v, 10);
 
    for (int i = 0; i < 10; i++)
        std::cout << ptr[i] << " ";
 
    return 0;
}
 
int* reverso(int v[], int n)
{
    int* rev = new int[n];
 
    int k = n - 1;
    for (int i = 0; i < n; i++)
        rev[i] = v[k--];
 
    return rev;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 338
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Copiar un arreglo con los valores de los elementos reversados en dicha copia

Publicado por Martín (158 intervenciones) el 04/12/2020 13:41:33
Algunos comentarios.

Falta liberar la memoria asignada a ptr (falta delete [] ptr;)

En la línea
1
int *ptr = reverso(v, 10);
no queda claro quién es responsable de liberar la memoria asignada a ptr.

Y si el código fuera a formar parte de un sistema más complejo, tampoco quedaría claro si la memoria debe liberarse con free o con delete.

- Creo que sería mejor si lo hicieras a la C++, usando un std::vector, por ejemplo, y algoritmos de la biblioteca estándar.

- Como está claro que quién pregunta está en sus primeros pasos en la programación C++, sería mejor que comenzara por el principio y dejar los arrays y punteros para cuando ya conozca los rudimentos del lenguaje.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Copiar un arreglo con los valores de los elementos reversados en dicha copia

Publicado por Rodrigo (539 intervenciones) el 04/12/2020 16:53:37
Sugiero leer los requerimientos del problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 338
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Copiar un arreglo con los valores de los elementos reversados en dicha copia

Publicado por Martín (158 intervenciones) el 04/12/2020 18:35:15
Sugiero disimular el servilismo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar