Análisis de Coste y Sobrecarga de Operadores en C++
Clasificado en Informática
Escrito el en español con un tamaño de 3,91 KB
Calcula el coste para el mejor y peor caso suponiendo que el tiempo de una comparación, asignación y operación es el mismo y vale t.
bool distintos (int v[], int x [], int dim) {
bool dist = false;
int i = 0;
while (dist == false && i < dim) {
if (v[i] != x[i])
dist = true;
i = i + 1;
}
return dist;
}
Mejor caso: 2ta + 2tc
Peor caso: ta + ta + 2ta * dim + [tc + ta + ta(ta * tc)] * dim
Simplificado: 2ta + [3tc + ta + ta(ta * tc)] * dim
Sobrecarga de Operadores
Implementa la sobrecarga del operador de extracción de flujo >>
y de inserción de flujo <<
, !=
y >
(respecto al precio) sobre la siguiente clase:
class Coche {
private:
string modelo;
int cilindrada;
float precio;
public:
// Para que si definimos los objetos Coche A, B;
// Podamos escribir:
// cin >> A; // para leer objetos
// cout << B; // para escribir objetos
// if (A != B)
// if (A > B)
...
};
Hay que escribir el prototipo que se pondría en la clase Coche
y su implementación.
Plantillas de Clases
Transforma esta clase vector de reales para que se convierta en una plantilla de clases y se pueda utilizar con cualquier tipo de dato. Implementa los métodos de la plantilla que están definidos en la clase. Construye el fichero de cabecera vector.h
. No hace falta poner los includes.
class Vector {
public:
Vector();
Vector(int);
double minimo(const Vector &);
void mostrar();
private:
int tam;
double *vector;
};
Solución:
class Coche {
private:
string modelo;
int cilindrada;
float precio;
public:
friend istream& operator>>(istream&, Coche&);
friend ostream& operator<<(ostream&, Coche);
bool operator!=(const Coche &A);
bool operator>(const Coche &A);
};
istream& operator>>(istream& is, Coche& A) {
cout << "Modelo del coche: " << endl;
is >> A.modelo;
cout << "Cilindrada del coche: " << endl;
is >> A.cilindrada;
cout << "Precio del coche: " << endl;
is >> A.precio;
return is;
}
ostream& operator<<(ostream& os, const Coche& A) {
os << "Modelo: " << A.modelo << ", Cilindrada: " << A.cilindrada << ", Precio: " << A.precio;
return os;
}
bool Coche::operator!=(const Coche &A) {
return (modelo != A.modelo || cilindrada != A.cilindrada || precio != A.precio);
}
bool Coche::operator>(const Coche &A) {
return (precio > A.precio);
}