Dev - C++ - Utilice la clase arreglo para adicionar el método concatenar

 
Vista:

Utilice la clase arreglo para adicionar el método concatenar

Publicado por jose341 (1 intervención) el 30/08/2020 23:32:34
Hola tengo un pequeño ejercicio en c++ poo, donde debo crear un metodo que me permita concatenar dos arreglos. La explicación del ejercicio es:
"El método concatenar une dos arreglos para retornar un arreglo que contenga los datos de los dos"
Y hasta ahí lo entiendo, el problema es al momento de implementar, que me pierdo muchísimo.
Se me entregó el prototipo de la función y que es: "arreglo concatenar(const arreglo &) const;" y el ejemplo del llamado al método: "C = A.concatenar(B);"

Entonces, esto es lo que llevo del código:
main.cpp---------------------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "arreglo.h"
 
int main()
{
  arreglo A(5), B, C;
  cout << "\n** Primer arreglo ***\n";
  cin >> A;
  cout << "\n** Segundo arreglo ***\n";
  cin >> B;
  C = A;
  cout << "\n** Tercer arreglo ***\n";
  cout << C;
  if (A == C)
    cout << "\n\nA es igual a C";
  cout << "\n\n";
  return 0;
}

arreglo.cpp-----------------------------------------------------------------------------------
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "arreglo.h"
 
arreglo arreglo::concatenar(const arreglo &a) const
{
  const t1,t2;
  t1=a
 
}
 
 
arreglo::arreglo(int ta)
{
  tam = (ta > 0 ? ta : 4);
  ptr = new int[tam];
  for(int i = 0; i < tam; i++)
    ptr[i] = 0;
}
 
arreglo::arreglo(const arreglo &copia)
{
  tam = copia.tam;
  ptr = new int[tam];
  for(int i = 0; i < tam; i++)
    ptr[i] = copia.ptr[i];
}
 
arreglo::~arreglo()
{
  delete []ptr;
}
 
int arreglo::tamanio() const
{
  return tam;
}
 
const arreglo &arreglo::operator= (const arreglo &derecha)
{
  if(&derecha != this)
  {
    if(tam != derecha.tam)
    {
      delete []ptr;
      tam = derecha.tam;
      ptr = new int[tam];
    }
    for(int i = 0; i < tam; i++)
      ptr[i] = derecha.ptr[i];
  }
  return *this;
}
 
int arreglo::operator== (const arreglo &derecha) const
{
  if(tam != derecha.tam)
    return 0;
  for(int i = 0; i < tam; i++)
    if(ptr[i] != derecha.ptr[i])
      return 0;
  return 1;
}
 
istream &operator>>(istream &entrada, arreglo &a)
{
  for(int i = 0; i < a.tam; i++)
  {
    cout << "[" << i+1 << "]: ";
    entrada >> a.ptr[i];
  }
  return entrada;
}
 
ostream &operator<<(ostream &salida, const arreglo &a)
{
  int i;
  for(i = 0; i < a.tam; i++)
  {
    salida << ", " << a.ptr[i];
    if((i+1) % 4 == 0) salida << endl;
  }
  if((i+1) % 4 == 0) salida << endl;
  return salida;
}

arreglo.h-----------------------------------------------------------------------------------------
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
#ifndef ARREGLO_H
#define ARREGLO_H
 
#include <iostream>
using namespace std;
 
class arreglo
{
  friend ostream &operator << (ostream &, const arreglo &);
  friend istream &operator >> (istream &, arreglo &);
public:
  arreglo(int = 4);
  arreglo(const arreglo &);
  ~arreglo();
  int tamanio() const;
  const arreglo &operator= (const arreglo &);
  int operator== (const arreglo &) const;
  arreglo concatenar(const arreglo &) const;
  int operator!= (const arreglo &derecha) const
  {
    return !(*this == derecha);
  }
private:
  int tam;
  int *ptr;
};
 
#endif // ARREGLO_H

---------------------------------------------------------------------------------

Entonces, como pueden notar intenté implementar el método en el archivo arreglo.cpp y mi idea principal era hacer algo del estilo:
a=b+c
a=concatenar

Sí, algo muy simple pero eso fue lo que entendí del enunciado, entonces evidentemente no me corre, porque algo falta allí, pero no sé qué es....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
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++

Utilice la clase arreglo para adicionar el método concatenar

Publicado por Rodrigo (539 intervenciones) el 31/08/2020 02:53:47
En el metodo concatenar crear un objeto de tipo arreglo, el tamano va a ser el tamano del objeto actual mas el tamano del arreglo que se pasa como parametro. Llamemosle arreglo_retorno

Luego itera sobre el arreglo actual, por cada elemento, asignas al arreglo_retorno que creaste.
Finalmente, itera sobre el arreglo que se pasa como parametro y asignas a la posicion (tamano_actual+indice) en arreglo_retorno

Luego retornas el arreglo_retorno.
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