|
|
|
|
1
|
|
1
|
|
2
|
|
2
|
|
3
|
-#Arreglos de Objetos - PRMap
|
|
|
|
|
3
|
+#Arreglos - PRMap
|
4
|
|
4
|
|
5
|
|
5
|
|
6
|
|
6
|
|
|
|
|
|
8
|
![main1.png](images/main1.png)
|
8
|
![main1.png](images/main1.png)
|
9
|
![main2.png](images/main2.png)
|
9
|
![main2.png](images/main2.png)
|
10
|
|
10
|
|
|
|
11
|
+[Verano 2016 - Ive]
|
11
|
|
12
|
|
12
|
Los arreglos de datos (*arrays*) nos facilitan guardar y trabajar con grupos de datos del mismo tipo. Los datos se guardan en espacios de memoria consecutivos a los que se puede acceder utilizando el nombre del arreglo e índices o suscritos que indican la posición en que se encuentra el dato. Las estructuras de repetición nos proveen una manera simple de acceder a los datos de un arreglo.
|
13
|
Los arreglos de datos (*arrays*) nos facilitan guardar y trabajar con grupos de datos del mismo tipo. Los datos se guardan en espacios de memoria consecutivos a los que se puede acceder utilizando el nombre del arreglo e índices o suscritos que indican la posición en que se encuentra el dato. Las estructuras de repetición nos proveen una manera simple de acceder a los datos de un arreglo.
|
13
|
|
14
|
|
|
|
|
|
137
|
|
138
|
|
138
|
---
|
139
|
---
|
139
|
|
140
|
|
140
|
-
|
|
|
141
|
-!INCLUDE "../../eip-diagnostic/PRMap/es/diag-prmap-01.html"
|
|
|
142
|
-<br>
|
|
|
143
|
-
|
|
|
144
|
-!INCLUDE "../../eip-diagnostic/PRMap/es/diag-prmap-02.html"
|
|
|
145
|
-<br>
|
|
|
146
|
-
|
|
|
147
|
-!INCLUDE "../../eip-diagnostic/PRMap/es/diag-prmap-03.html"
|
|
|
148
|
-<br>
|
|
|
149
|
-
|
|
|
|
|
141
|
+
|
|
|
142
|
+!INCLUDE "../../eip-diagnostic/PRMap/es/diag-prmap-01.html"
|
|
|
143
|
+<br>
|
|
|
144
|
+
|
|
|
145
|
+!INCLUDE "../../eip-diagnostic/PRMap/es/diag-prmap-02.html"
|
|
|
146
|
+<br>
|
|
|
147
|
+
|
|
|
148
|
+!INCLUDE "../../eip-diagnostic/PRMap/es/diag-prmap-03.html"
|
|
|
149
|
+<br>
|
|
|
150
|
+
|
150
|
---
|
151
|
---
|
151
|
|
152
|
|
152
|
---
|
153
|
---
|
153
|
-
|
|
|
154
|
-
|
|
|
|
|
154
|
+
|
|
|
155
|
+
|
155
|
|
156
|
|
156
|
|
157
|
|
157
|
|
158
|
|
|
|
|
|
168
|
|
169
|
|
169
|
2. Compila y corre el programa. En su estado actual, el programa solo despliega un mapa de Puerto Rico. En este mapa podrás ver los resultados de tu programa. Quizás ves algunas advertencias ("warnings") debido a que hay algunas funciones que están incompletas. Estarás completando estas funciones durante la experiencia de laboratorio.
|
170
|
2. Compila y corre el programa. En su estado actual, el programa solo despliega un mapa de Puerto Rico. En este mapa podrás ver los resultados de tu programa. Quizás ves algunas advertencias ("warnings") debido a que hay algunas funciones que están incompletas. Estarás completando estas funciones durante la experiencia de laboratorio.
|
170
|
|
171
|
|
171
|
-
|
|
|
172
|
3. Abre el archivo `main.cpp`. En este archivo es que estarás escribiendo tu código. El archivo contiene las siguientes funciones:
|
172
|
3. Abre el archivo `main.cpp`. En este archivo es que estarás escribiendo tu código. El archivo contiene las siguientes funciones:
|
173
|
|
173
|
|
174
|
1. `void printArrayOfCities(GISPOI A[], int size)`: Dado un arreglo `A` de objetos de la clase `GISPOI` y su tamaño, imprime todos los pueblos en el arreglo. Puedes usar esta función como parte de tu proceso de depuración ("debugging").
|
174
|
1. `void printArrayOfCities(GISPOI A[], int size)`: Dado un arreglo `A` de objetos de la clase `GISPOI` y su tamaño, imprime todos los pueblos en el arreglo. Puedes usar esta función como parte de tu proceso de depuración ("debugging").
|
175
|
|
175
|
|
176
|
-
|
|
|
177
|
2. `int countLinesInFile(ifstream &file)`: Dada una referencia a un objeto que representa un archivo, esta función cuenta y devuelve el número de filas del archivo.
|
176
|
2. `int countLinesInFile(ifstream &file)`: Dada una referencia a un objeto que representa un archivo, esta función cuenta y devuelve el número de filas del archivo.
|
178
|
|
177
|
|
179
|
-
|
|
|
180
|
3. `void readFileToArray(ifstream &file, GISPOI A[], int numOfCities)`: Dado el objeto `ifstream` de un archivo, un arreglo de pueblos, y el número de registros para leer del archivo, esta función lee los valores del archivo y llena el arreglo con objetos. **Esta es una función que tú implementarás**.
|
178
|
3. `void readFileToArray(ifstream &file, GISPOI A[], int numOfCities)`: Dado el objeto `ifstream` de un archivo, un arreglo de pueblos, y el número de registros para leer del archivo, esta función lee los valores del archivo y llena el arreglo con objetos. **Esta es una función que tú implementarás**.
|
181
|
|
179
|
|
182
|
-
|
|
|
183
|
4. `void maxDistances(GISPOI A[], int size, int &idxCityA, int &idxCityB)` : Dado un arreglo `A` de pueblos, determina los dos pueblos que quedan más lejos. Recuerda que la distancia que calcularás será la distancia *ortodrómica*. La función devuelve (por referencia) los índices de estas ciudades en el arreglo. **Esta es una función que tú implementarás**.
|
180
|
4. `void maxDistances(GISPOI A[], int size, int &idxCityA, int &idxCityB)` : Dado un arreglo `A` de pueblos, determina los dos pueblos que quedan más lejos. Recuerda que la distancia que calcularás será la distancia *ortodrómica*. La función devuelve (por referencia) los índices de estas ciudades en el arreglo. **Esta es una función que tú implementarás**.
|
184
|
|
181
|
|
185
|
-
|
|
|
186
|
5. `void minDistances(GISPOI A[], int size, int &idxCityA, int &idxCityB)`: Dado un arreglo `A` de pueblos, determina los dos pueblos que quedan más cerca. Recuerda que la distancia que calcularás será la distancia *ortodrómica*. La función devuelve (por referencia) los índices de estas ciudades en el arreglo. **Esta es una función que tú implementarás**.
|
182
|
5. `void minDistances(GISPOI A[], int size, int &idxCityA, int &idxCityB)`: Dado un arreglo `A` de pueblos, determina los dos pueblos que quedan más cerca. Recuerda que la distancia que calcularás será la distancia *ortodrómica*. La función devuelve (por referencia) los índices de estas ciudades en el arreglo. **Esta es una función que tú implementarás**.
|
187
|
-
|
|
|
188
|
-
|
|
|
189
|
|
183
|
|
190
|
6. `double cycleDistance(GISPOI A[], int size, int P[])`: Dado un arreglo `A` de pueblos, el tamaño de este arreglo, y un arreglo `P` con una permutación de los enteros en `[0,size-1]`, computa y devuelve la distancia de viajar el ciclo de pueblos `A[P[0]]` $$\rightarrow$$ `A[P[1]]` $$\rightarrow \cdots \rightarrow$$ `A[P[size-1]]`. Recuerda que la distancia que calcularás será la distancia *ortodrómica*.
|
184
|
6. `double cycleDistance(GISPOI A[], int size, int P[])`: Dado un arreglo `A` de pueblos, el tamaño de este arreglo, y un arreglo `P` con una permutación de los enteros en `[0,size-1]`, computa y devuelve la distancia de viajar el ciclo de pueblos `A[P[0]]` $$\rightarrow$$ `A[P[1]]` $$\rightarrow \cdots \rightarrow$$ `A[P[size-1]]`. Recuerda que la distancia que calcularás será la distancia *ortodrómica*.
|
191
|
|
185
|
|
|
|
|
|
194
|
|
188
|
|
195
|
Hay otras dos funciones que debes conocer:
|
189
|
Hay otras dos funciones que debes conocer:
|
196
|
|
190
|
|
197
|
-
|
|
|
198
|
-
|
|
|
199
|
-
|
|
|
200
|
1. `void MainWindow::drawLine(const GISPOI &city01, const GISPOI &city02)`: Dada una referencia a dos objetos `GISPOI`, la función pinta una línea entre ellos.
|
191
|
1. `void MainWindow::drawLine(const GISPOI &city01, const GISPOI &city02)`: Dada una referencia a dos objetos `GISPOI`, la función pinta una línea entre ellos.
|
201
|
|
192
|
|
202
|
-
|
|
|
203
|
2. `void drawPoints(GISPOI* gisLocations, unsigned int size);`: Dado un arreglo de objetos `GISPOI` y su tamaño, despliega sus localizaciones como puntos en el mapa.
|
193
|
2. `void drawPoints(GISPOI* gisLocations, unsigned int size);`: Dado un arreglo de objetos `GISPOI` y su tamaño, despliega sus localizaciones como puntos en el mapa.
|
204
|
|
194
|
|
205
|
|
195
|
|
|
|
|
|
210
|
|
200
|
|
211
|
|
201
|
|
212
|
|
202
|
|
213
|
-
|
|
|
214
|
1. En la función `main()`, añade las instrucciones necesarias para abrir el archivo que contiene la información de los pueblos georeferenciados. El archivo que usarás primero está en el directorio `data` y es `pr10.txt`. Necesitas dar el `path` completo del archivo como parámetro del método `open()` de tu objeto `ifstream`. Como siempre, cuando uses archivos debes verificar si el nombre del archivo que pusiste se puede abrir para leer exitosamente.
|
203
|
1. En la función `main()`, añade las instrucciones necesarias para abrir el archivo que contiene la información de los pueblos georeferenciados. El archivo que usarás primero está en el directorio `data` y es `pr10.txt`. Necesitas dar el `path` completo del archivo como parámetro del método `open()` de tu objeto `ifstream`. Como siempre, cuando uses archivos debes verificar si el nombre del archivo que pusiste se puede abrir para leer exitosamente.
|
215
|
|
204
|
|
216
|
|
205
|
|