Question 1
A partir de la siguiente definicion de tipos de datos:
#define MAX_ROBOTS 25
#define MAX_IDENT 4
typedef char TCadena[MAX_IDENT];
typedef struct {
int estadoBateria;
int atascado;
int averiado;
} TIncidencia;
typedef struct {
TCadena identificador;
int hayIncidencias;
TIncidencia incidencias;
double metros2;
int activo;
} TRobot;
typedef struct{
TRobot robot;
int ocupado;
} TCasilla;
typedef TCasilla TRobots[MAX_ROBOTS];
Se ha codificado una función cuyo prototipo es int buscarRobot(const TRobots t, const TCadena id, int *lugar);. Esta función busca en la lista de robots aquel cuyo id coincide con el valor que se pasa como parámetro, y devuelve, como resultado de la función, un 0 si no lo ha localizado, y un 1 si sí lo ha localizado, y en este caso, en lugar, la posición del vector t en la que se ha localizado el robot. Suponiendo que en la función llamante se han declarado las variables (no significa que todas se deban utilizar):
TRobots robots;
TCadena ident;
int resultado;
int sitio;
[b]Indica si las siguientes invocaciones a la función buscarRobot desde la función llamante son correctas (V) o incorrectas (F):[/b]
resultado = buscarRobot (robots, ident, sitio); Falso
resultado = buscarRobot (robots, ident, *sitio); Falso
if ( buscarRobot (robots, ident, *sitio)) Falso
if( buscarRobot (robots, ident, &sitio) ) Verdadero
Question 2
A partir de la siguiente definicion de tipos de datos:
#define MAX_ROBOTS 25
#define MAX_IDENT 4
typedef char TCadena[MAX_IDENT];
typedef struct { int estadoBateria; int atascado; int averiado;
} TIncidencia;
typedef struct { TCadena identificador; int hayIncidencias; TIncidencia incidencias; double metros2; int activo; } TRobot;
typedef struct{ TRobot robot; int ocupado;} TCasilla;
typedef TCasilla TRobots[MAX_ROBOTS];
[b]Indicar cómo se preguntaría si está averiado el robot cuya descripción está en la posición i (de tipo entero) del array robots (de tipo TRobots):[/b]
if ( robots.robot.incidencias.averiado == 1 ) { } Falso
if ( robots.robot.incidencias[i].averiado == 1 ) { }Falso
if ( robots[i].robot.incidencias.averiado == 1 ) { }Verdadero
if ( robots.robot[i].incidencias.averiado == 1 ) { } Falso
Question 3
A partir de la siguiente definicion de tipos de datos:
#define MAX_ROBOTS 25
#define MAX_IDENT 4
typedef char TCadena[MAX_IDENT];
typedef struct { int estadoBateria; int atascado; int averiado;}TIncidencia;
typedef struct { TCadena identificador; int hayIncidencias; TIncidencia incidencias; double metros2; int activo;
} TRobot;
typedef struct{ TRobot robot; int ocupado;} TCasilla;
typedef TCasilla TRobots[MAX_ROBOTS];
[b]Si una función está manejando un objeto de tipo TCadena, llamado cadena, y un objeto robots de tipo TRobots, indicar si las siguientes expresiones o asignaciones son sintacticamente correctas (V) o incorrectas (F):[/b]
robots[10].robot.identificador[0] = cadena[2]; Verdadero
robots[1].robot = cadena; Falso
(robots[MAX_ROBOTS].robot.identificador[0] == cadena[0]); Falso
strcpy(robots[0].robot.identificador, cadena); Verdadero
Question 4
A partir de la siguiente definicion de tipos de datos:
#define MAX_ROBOTS 25
#define MAX_IDENT 4
typedef char TCadena[MAX_IDENT];
typedef struct {
int estadoBateria;
int atascado;
int averiado;
} TIncidencia;
typedef struct {
TCadena identificador;
int hayIncidencias;
TIncidencia incidencias;
double metros2;
int activo;
} TRobot;
typedef struct{
TRobot robot;
int ocupado;
} TCasilla;
typedef TCasilla TRobots[MAX_ROBOTS];
Y del prototipo de la función:
double recogerMetros(const TCadena id_robot );
[b]Indicar cómo se debe invocar a esta función para recoger la superficie limpiada por el robot cuya descripción está en la posición i del array robots.
[/b]
robots.robot[i].metros2 = recogerMetros( robots[i].robot.identificador ); Falso
robots[i].robot.metros2 = recogerMetros( robots[i].robot.identificador ); Verdadero
robots.robot[i].metros2 = recogerMetros( robots[i].robot[i].identificador );
Falso
robots.robot.metros2 = recogerMetros( robots.robot.identificador );
Falso
Question 5
A partir de la siguiente definicion de tipos de datos:
#define MAX_ROBOTS 25
#define MAX_IDENT 4
typedef char TCadena[MAX_IDENT];
typedef struct {
int estadoBateria;
int atascado;
int averiado;
} TIncidencia;
typedef struct {
TCadena identificador;
int hayIncidencias;
TIncidencia incidencias;
double metros2;
int activo;
} TRobot;
typedef struct{
TRobot robot;
int ocupado;
} TCasilla;
typedef TCasilla TRobots[MAX_ROBOTS];
Si hubiera que realizar la operación de actualizar los datos de un robot se podría diseñar el siguiente algoritmo parametrizado:
Algoritmo cambiarDatos ( robots, ident )
ENTORNO
robots: Parámetro dato/resultado de tipo TRobots. Guarda la información de todos los robots.
ident: Parámetro dato de tipo TCadena. Contiene el identificador del robot cuyos datos se quieren cambiar.
esta: variable lógica (entera). Toma el valor verdadero (1) si se encuentra el robot con el identificador indicado, y falso (0) en caso contrario.
donde: variable entera. Indica la casilla de la tabla donde está la información del robot con el identificador indicado (si es que está).
ACCIONES
ubicarRobot(robots, ident, esta, donde)
si esta entonces
modificarDatos (robots[donde].robot)
finSi
[b]Indica cuáles de las siguientes afirmaciones son correctas (V) y cuáles son incorrectas (F):[/b]
La función correspondiente al algoritmo parametrizado ubicarRobot podría tener como prototipo: int ubicarRobot ( const TRobots r, const TCadena identificador, int *sitio); Verdadero
El parámetro del algoritmo modificarDatos se puede pasar por referencia a la función correspondiente a dicho algoritmo.Verdadero
El cuarto parámetro del algoritmo ubicarRobot es de entrada/salida. Falso
Una posible invocación a la función que codifica el algoritmo ubicarRobot podría ser ubicarRobot (robots, ident, &esta, &donde ); Verdadero