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);
}

Entradas relacionadas: