[ Foro de C++ ]
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---------------------------------------------------------------------------------
#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-----------------------------------------------------------------------------------
#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-----------------------------------------------------------------------------------------
#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....
Hola, te pregunto: ¿desarrollaste todo este código y ahora lo intentás correr? (tengo una idea a eso si fue así)
Hola, esto tampoco corre pero al intentar compilar va diciendo de forma más simple que es lo que está mal.
Saludos.
--------------------
#include <cstdlib>
#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;
};
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;
}
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;
}
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)