|
@@ -10,7 +10,7 @@
|
10
|
10
|
|
11
|
11
|
|
12
|
12
|
|
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
|
+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 con í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.
|
14
|
14
|
|
15
|
15
|
|
16
|
16
|
Un *objeto* es una entidad que se utiliza en muchos lenguajes de programación para integrar los datos y el código que opera en ellos, haciendo más fácil el modificar programas grandes. Una tarea bien común en programación usando C++ es el trabajar con arreglos de objetos. En la experiencia de laboratorio de hoy estarás trabajando con datos *georeferenciados* de pueblos en Puerto Rico, en donde tendrás atributos, como el nombre del pueblo, la latitud y longitud de su localización, que utilizarás para ilustrar propiedades en un mapa.
|
|
@@ -50,7 +50,7 @@ Antes de llegar al laboratorio debes haber:
|
50
|
50
|
1. Repasado los conceptos relacionados a arreglos de objetos.
|
51
|
51
|
|
52
|
52
|
|
53
|
|
-2. Repasado los conceptos relacionados funciones que utilizan arreglos de objetos.
|
|
53
|
+2. Repasado los conceptos relacionados con funciones que utilizan arreglos de objetos.
|
54
|
54
|
|
55
|
55
|
|
56
|
56
|
3. Repasado cómo leer datos de un archivo.
|
|
@@ -91,7 +91,7 @@ Fajardo 18.3258 -65.6525
|
91
|
91
|
```
|
92
|
92
|
|
93
|
93
|
|
94
|
|
-**Figura 1.** Parte del contenido de una archivo de datos georeferenciados de pueblos en Puerto Rico; contiene nombre del pueblo, coordenadas de latitud y coordenada de longitud.
|
|
94
|
+**Figura 1.** Parte del contenido de una archivo de datos georeferenciados de pueblos en Puerto Rico; contiene nombre del pueblo, coordenada de latitud y coordenada de longitud.
|
95
|
95
|
|
96
|
96
|
|
97
|
97
|
---
|
|
@@ -105,7 +105,7 @@ Para calcular la distancia entre dos puntos en el plano Euclidiano, trazas el se
|
105
|
105
|
|
106
|
106
|
|
107
|
107
|
|
108
|
|
-###La clase `GPOI`
|
|
108
|
+###La clase `GISPOI`
|
109
|
109
|
|
110
|
110
|
|
111
|
111
|
La manera más común para los programadores en C++ encapsular datos asociados a un ente es utilizando **clases**. Por ejemplo, en el caso de datos georeferenciados, una manera práctica de encapsular la información para cada pueblo sería implementando una clase `GeoreferencedPointOfInterest` que contenga al menos datos (o atributos) para: el nombre del pueblo, su latitud y su longitud. La clase `GPOI` también necesitará implementar métodos para acceder, modificar y hacer operaciones en sus atributos.
|
|
@@ -153,7 +153,7 @@ Remigio 88
|
153
|
153
|
Andrea 43
|
154
|
154
|
```
|
155
|
155
|
|
156
|
|
-Para **leer** un archivo de texto como parte de un programa en C++, debemos conocer cómo están organizados los datos en el archivo y qué tipo de datos deseamos leer. El archivo ejemplo `nameAge.txt` contiene cuatro líneas y cada línea contiene un string y un entero. A continuación un programa para leer el archivo de principio a fin mientras se imprimen los datos que se van leyendo en cada línea. Lee los comentarios del programa para entiendas sus partes:
|
|
156
|
+Para **leer** un archivo de texto como parte de un programa en C++, debemos conocer cómo están organizados los datos en el archivo y qué tipo de datos deseamos leer. El archivo ejemplo `nameAge.txt` contiene cuatro líneas y cada línea contiene un string y un entero. A continuación un programa para leer el archivo de principio a fin mientras se imprimen los datos que se van leyendo en cada línea. Lee los comentarios del programa para que entiendas sus partes:
|
157
|
157
|
|
158
|
158
|
|
159
|
159
|
```
|
|
@@ -329,7 +329,7 @@ A continuación algunos pedazos de código C++ para tareas comunes de lectura de
|
329
|
329
|
|
330
|
330
|
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*.
|
331
|
331
|
|
332
|
|
- Por ejemplo, si los pueblos que se leen del archivo fueran Mayagüez, Ponce, Yauco y San Juan (en ese orden) y la permutación `P` es $$(3, 1, 0, 2$$, la función debe computar la distancia del ciclo San Juan $$\rightarrow$$ Ponce $$\rightarrow$$ Mayagüez $$\rightarrow$$ Yauco $$\rightarrow$$ San Juan.**Esta es una función que tú implementarás**.
|
|
332
|
+ Por ejemplo, si los pueblos que se leen del archivo fueran Mayagüez, Ponce, Yauco y San Juan (en ese orden) y la permutación `P` es $$(3, 1, 0, 2)$$, la función debe computar la distancia del ciclo San Juan $$\rightarrow$$ Ponce $$\rightarrow$$ Mayagüez $$\rightarrow$$ Yauco $$\rightarrow$$ San Juan.**Esta es una función que tú implementarás**.
|
333
|
333
|
|
334
|
334
|
|
335
|
335
|
Hay otras dos funciones que debes conocer:
|
|
@@ -380,7 +380,7 @@ Recuerda que solo estarás cambiando código en el archivo `main.cpp`. Tu primer
|
380
|
380
|
Una vez que tengas la información de los pueblos georeferenciados en el arreglo de objetos, puedes comenzar a procesarlos de muchas formas interesantes. Comenzaremos con algunas operaciones básicas.
|
381
|
381
|
|
382
|
382
|
|
383
|
|
-1. Lee la documentación e implementa la la función `void maxDistances(GISPOI A[], int size, int &idxCityA, int &idxCityB)`. Invoca la función desde `main()`.
|
|
383
|
+1. Lee la documentación e implementa la función `void maxDistances(GISPOI A[], int size, int &idxCityA, int &idxCityB)`. Invoca la función desde `main()`.
|
384
|
384
|
|
385
|
385
|
|
386
|
386
|
2. Usa el método `void drawLine(const GISPOI &city01, const GISPOI &city02)` del objeto `w` para dibujar una línea que conecte los pueblos más lejanos. Nota que el segundo y tercer parámetro de este método son **referencias a los objetos que representan los pueblos** (no sus índices en el arreglo).
|