Update PR3
This commit is contained in:
parent
036bb9d949
commit
fbaedb6630
@ -22,6 +22,7 @@
|
||||
- [16.7 Tabla de tipos estructurados](#167-tabla-de-tipos-estructurados)
|
||||
- [16.7.1 Tablas de tuplas](#1671-tablas-de-tuplas)
|
||||
- [16.7.2 Tabla de tablas](#1672-tabla-de-tablas)
|
||||
- [16.8 Ejercicios](#168-ejercicios)
|
||||
|
||||
|
||||
|
||||
@ -1192,6 +1193,188 @@ Comentarios:
|
||||
|
||||
### 16.7.2 Tabla de tablas
|
||||
|
||||
En este caso vamos a definir otro tipo estructurado. Para facilitar el uso vamos a mantener la información de todos los cines en una única variable. Definimos una tabla donde cada elemento sea una tabla con la recaudación de las salas de cada cine.
|
||||
|
||||
```alg
|
||||
const
|
||||
MAX_THEATERS: integer = 20;
|
||||
MAX_MOVIES: integer = 15;
|
||||
end const
|
||||
|
||||
type
|
||||
{declaration of a type for dates}
|
||||
tDate = record
|
||||
day: integer;
|
||||
month: integer;
|
||||
year: integer;
|
||||
end record;
|
||||
|
||||
{declaration of type for theater information}
|
||||
tTheaterDescription = record
|
||||
name: string;
|
||||
capacity: integer;
|
||||
collect: real;
|
||||
date: tDate;
|
||||
end record;
|
||||
|
||||
{table with the information of each theater}
|
||||
tTheater = record
|
||||
movieTheaters: vector[MAX_THEATERS] of tTheaterDescription;
|
||||
numTheaters: integer;
|
||||
end record;
|
||||
|
||||
{declaration of a table of tTheater}
|
||||
tCompany = record
|
||||
movies: vector[MAX_MOVIES] of tTheater;
|
||||
numMovies: integer;
|
||||
end record;
|
||||
|
||||
end type
|
||||
|
||||
algorithm movieTheater
|
||||
var
|
||||
theMovieCompany: tCompany;
|
||||
m, k: integer;
|
||||
end var
|
||||
|
||||
{we can access the information in the folowing way}
|
||||
|
||||
{to access to the name of the third theater of the first movie}
|
||||
theMovieCompany.movies[1].movieTheaters[3].name;
|
||||
|
||||
{to access to the field collect of the k th theater of the m th movie}
|
||||
theMovieCompany.movies[m].movieTheaters[k].collect;
|
||||
|
||||
{to access to the capacity of the last theater of the last movie}
|
||||
theMovieCompany.movies[theMovieCompany.numMovies].movieTheaters[theMovieCompany.movies[theMovieCompany.numMovies].numTheaters].capacity;
|
||||
|
||||
end algorithm
|
||||
```
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#define MAX_THEATERS 20
|
||||
#define MAX_MOVIES 15
|
||||
|
||||
typedef struct {
|
||||
int day;
|
||||
int month;
|
||||
int year;
|
||||
} tDate;
|
||||
|
||||
typedef struct {
|
||||
tString name;
|
||||
int capacity;
|
||||
float collect;
|
||||
tDate date;
|
||||
} tTheaterDescription;
|
||||
|
||||
typedef struct {
|
||||
tTheaterDescription movieTheaters[MAX_THEATERS];
|
||||
int numTheaters;
|
||||
} tTheater;
|
||||
|
||||
/* declaration of a table of tTheater */
|
||||
typedef struct {
|
||||
tTheater movies[MAX_MOVIES];
|
||||
int numMovies;
|
||||
} tCompany;
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
tCompany theMovieCompany;
|
||||
int m, k;
|
||||
|
||||
/* we can access the information in the folowing way */
|
||||
/* to access to the name of the third theater of the first movie */
|
||||
theMovieCompany.movies[0].movieTheaters[2].name;
|
||||
|
||||
/* to access to the field collect of the k th theater of the m th movie */
|
||||
theMovieCompany.movies[m-1].movieTheaters[k-1].collect;
|
||||
|
||||
/* to access to the capacity of the last theater of the last movie */
|
||||
theMovieCompany.movies[theMovieCompany.numMovies-1].movieTheaters[theMovieCompany.movies[theMovieCompany.numMovies-1].numTheaters-1].capacity;
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## 16.8 Ejercicios
|
||||
|
||||
- **Ejercicio 1**: Dada una tabla de reales, implementa un algoritmo que calcule la media de los valores de la tabla.
|
||||
- **Ejercicio 2**: Dada una tabla de reales, implementa un algoritmo que calcule el valor máximo de la tabla.
|
||||
- **Ejercicio 3**: Dada una tabla de reales, implementa un algoritmo que calcule el valor mínimo de la tabla.
|
||||
- **Ejercicio 4**: Dada una tabla de reales, implementa un algoritmo que calcule la suma de los valores de la tabla.
|
||||
|
||||
Tabla de reales:
|
||||
```
|
||||
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 -1.0
|
||||
```
|
||||
|
||||
Soluciones:
|
||||
|
||||
- **Ejercicio 1**:
|
||||
|
||||
```alg
|
||||
type
|
||||
tReal = record
|
||||
collect: vector[10] of real;
|
||||
position: integer;
|
||||
end record
|
||||
end type
|
||||
|
||||
action mediaValores(in tabla: tReal)
|
||||
var
|
||||
suma: real;
|
||||
i: integer;
|
||||
end var
|
||||
|
||||
suma:= 0;
|
||||
for i:= 1 to tabla.position do
|
||||
suma:= suma + tabla.collect[i];
|
||||
end for
|
||||
|
||||
writeReal(suma / tabla.position);
|
||||
end action
|
||||
|
||||
algorithm simulation
|
||||
var
|
||||
tabla: tReal;
|
||||
end var
|
||||
|
||||
tabla.collect[1]:= 1.0;
|
||||
tabla.collect[2]:= 2.0;
|
||||
tabla.collect[3]:= 3.0;
|
||||
tabla.collect[4]:= 4.0;
|
||||
tabla.collect[5]:= 5.0;
|
||||
tabla.collect[6]:= 6.0;
|
||||
tabla.collect[7]:= 7.0;
|
||||
tabla.collect[8]:= 8.0;
|
||||
tabla.collect[9]:= 9.0;
|
||||
tabla.collect[10]:= 10.0;
|
||||
tabla.position:= 10;
|
||||
|
||||
mediaValores(tabla);
|
||||
end algorithm
|
||||
```
|
||||
|
||||
[Solución en c](./soluciones_c/solucion1/media.c)
|
||||
|
||||
- **Ejercicio 2**:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- **Ejercicio 3**:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- **Ejercicio 4**:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
BIN
fundamentos-programacion/PR3/soluciones_c/solucion1/media
Executable file
BIN
fundamentos-programacion/PR3/soluciones_c/solucion1/media
Executable file
Binary file not shown.
29
fundamentos-programacion/PR3/soluciones_c/solucion1/media.c
Normal file
29
fundamentos-programacion/PR3/soluciones_c/solucion1/media.c
Normal file
@ -0,0 +1,29 @@
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float collect[10];
|
||||
int position;
|
||||
} tReal;
|
||||
|
||||
void mediaValores(tReal *tabla)
|
||||
{
|
||||
float suma = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < tabla->position; i++)
|
||||
{
|
||||
suma += tabla->collect[i];
|
||||
}
|
||||
|
||||
printf("La media de los valores de la tabla es: %f\n", suma / tabla->position);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
tReal tabla = {{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}, 10};
|
||||
|
||||
mediaValores(&tabla);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user