El ejercicio es el siguiente:
Dado la altura y la base de un rectángulo, calcule su área y perímetro.
Empecé a hacerlo de la forma que me explicaron en clase y este es mi código del main(tengo el rectangulo.h donde declaro la clase y rectangulo.cpp donde defino los métodos).
main.cpp
De esta manera sí me compila
#include "rectangulo.h"
#include <iostream>
using namespace std;
void IOParametros(Rectangulo& rect);
void IOArea(Rectangulo rect);
void IOPerimetro(Rectangulo rect);
int main()
{
Rectangulo rectangulo;
IOParametros(rectangulo);
IOArea(rectangulo);
IOPerimetro(rectangulo);
cin.get();
}
void IOParametros(Rectangulo& rect)
{
int x, y;
cout << "Introduce la altura y la base del rectángulo" << endl;
cin >> x >> y;
rect.setX(x);
rect.setY(y);
}
void IOArea(Rectangulo rect)
{
int x, y, ar;
x = rect.getX();
y = rect.getY();
ar = x * y;
cout << "El área del rectángulo es " << ar << endl;
}
void IOPerimetro(Rectangulo rect)
{
int x, y, per;
x = rect.getX();
y = rect.getY();
per = (2*x)+(2*y);
cout << "El perímetro del rectángulo es " << per << endl;
}
Pero si lo estructuro así para que quede algo más claro:
main.cpp
De esta manera no me compila
#include "rectangulo.h"
#include <iostream>
using namespace std;
int main()
{
Rectangulo rectangulo;
IOParametros(rectangulo);
IOArea(rectangulo);
IOPerimetro(rectangulo);
cin.get();
}
io_rectangulo.cpp
#include "rectangulo.h"
#include <iostream>
using namespace std;
void IOParametros(Rectangulo& rect);
void IOArea(Rectangulo rect);
void IOPerimetro(Rectangulo rect);
void IOParametros(Rectangulo& rect)
{
int x, y;
cout << "Introduce la altura y la base del rectángulo" << endl;
cin >> x >> y;
rect.setX(x);
rect.setY(y);
}
void IOArea(Rectangulo rect)
{
int x, y, ar;
x = rect.getX();
y = rect.getY();
ar = x * y;
cout << "El área del rectángulo es " << ar << endl;
}
void IOPerimetro(Rectangulo rect)
{
int x, y, per;
x = rect.getX();
y = rect.getY();
per = (2*x)+(2*y);
cout << "El perímetro del rectángulo es " << per << endl;
}
¿Cómo consigo que me compile al tener el main.cpp sin las funciones I/O, y un IO_rectangulo.cpp con las definiciones de las funciones de I/O?
PD: rectangulo.h para agregar más información:
#pragma once
class Rectangulo
{
private:
int _x, _y;
public:
Rectangulo();
int getX();
void setX(int x);
int getY();
void setY(int y);
int perimetro(int x, int y);
int area(int x, int y);
};