94 lines
2.2 KiB
C++
94 lines
2.2 KiB
C++
#include "jardin.h"
|
|
using namespace std;
|
|
|
|
bool cargarJardin(tJardin& jardin, ifstream& archivo) {
|
|
bool carga = false;
|
|
int F, C;
|
|
//ifstream archivo;
|
|
|
|
//archivo.open(jardin);
|
|
//if (!archivo.is_open()) {
|
|
// cout << "No se ha podido cargar el jardin." << endl;
|
|
//}
|
|
//else {
|
|
archivo >> jardin.numF;
|
|
archivo >> jardin.numC;
|
|
for (int i = 0; i < jardin.numF; i++){
|
|
for (int j = 0; j < jardin.numC; j++){
|
|
archivo >> jardin.parcela[i][j].aguaNecesaria;
|
|
jardin.parcela[i][j].aguaRegada = 0;
|
|
}
|
|
}
|
|
carga = true;
|
|
//}
|
|
//archivo.close();
|
|
|
|
return carga;
|
|
}
|
|
|
|
void mostrarJardin(tJardin& jardin) {
|
|
for (int i = 0; i < jardin.numF; i++){
|
|
for (int j = 0; j < jardin.numC; j++){
|
|
cout << jardin.parcela[i][j].aguaNecesaria << " ";
|
|
}
|
|
cout << endl;
|
|
}
|
|
}
|
|
|
|
void regar(tJardin& jardin, tCoordenada& coordenada) {
|
|
tCoordenada nc;
|
|
|
|
for (int i = 0; i < 8; i++){
|
|
calcularCoordenada(coordenada, i, nc);
|
|
jardin.parcela[nc._fila][nc._columna].aguaRegada++;
|
|
}
|
|
}
|
|
|
|
int calcularPuntuacion(tJardin& jardin) {
|
|
int puntos = 0;
|
|
|
|
for (int i = 0; i < jardin.numF; i++){
|
|
for (int j = 0; j < jardin.numC; j++){
|
|
if (jardin.parcela[i][j].aguaRegada > jardin.parcela[i][j].aguaNecesaria) {
|
|
puntos += (jardin.parcela[i][j].aguaRegada - jardin.parcela[i][j].aguaNecesaria);
|
|
}
|
|
else if (jardin.parcela[i][j].aguaRegada == jardin.parcela[i][j].aguaNecesaria) {
|
|
puntos += jardin.parcela[i][j].aguaNecesaria;
|
|
}
|
|
}
|
|
}
|
|
|
|
return puntos;
|
|
}
|
|
|
|
bool plantaCondenada(tJardin& jardin, tCoordenada& coordenada) {
|
|
bool encontrada = false;
|
|
int i = -1, j = 0;
|
|
|
|
while (!encontrada && i < jardin.numF) {
|
|
i++;
|
|
while (!encontrada && j < jardin.numC) {
|
|
if (jardin.parcela[i][j].aguaNecesaria < jardin.parcela[i][j].aguaRegada) {
|
|
encontrada = true;
|
|
}
|
|
else {
|
|
j++;
|
|
}
|
|
}
|
|
}
|
|
|
|
coordenada = crearCoordenada(i, j);
|
|
|
|
return encontrada;
|
|
}
|
|
|
|
bool esLibre(const tJardin& jardin, tCoordenada coordenada) {
|
|
bool libre = false;
|
|
|
|
if (coordenada._fila < jardin.numF && coordenada._columna < jardin.numC && jardin.parcela[coordenada._fila][coordenada._columna].aguaNecesaria == 0) {
|
|
libre = true;
|
|
}
|
|
|
|
return libre;
|
|
}
|