Está en la página 1de 5

Informática 2020-2021. 1º Curso.

Grado de MECANICA y doble grado MECANICA-


ELECTRICIDAD. Examen de evaluación continua. PROGRAMACION. T2
Apellidos: Nombre: DNI: Grupo
prácticas:
Total:
Aclaraciones: a) se permite entregarlo a lápiz siempre que sea legible; b) copiar de cualquier forma implica un cero
en esta prueba y por tanto, suspenso en la convocatoria correspondiente. c) se permite calculadora.

(1,5 puntos). Implemente una función que reciba por parámetros de entrada un vector de números enteros
llamado enteros, el tamaño del mismo (tam), otro vector, también de números enteros, llamado posiciones,
y un valor n. Dicha función buscará el valor n en el vector enteros y, aquellas posiciones donde se haya
encontrado dicho valor se guardarán en el vector posiciones.
Nota: las posiciones deberán estar guardadas de forma consecutiva, sin dejar huecos en medio.

El prototipo de la función es el siguiente:


void buscaPosiciones(int enteros[], int posiciones[], int tam, int n);
(2,5 puntos). Dadas las siguientes estructuras, las cuales están ya definidas en el programa, y que permiten
almacenar información sobre un grupo de estudiantes de la Universidad de Sevilla:
struct Asignatura{
char nombreAsig[100]; //Nombre de la asignatura
float nota;
int aula;
};
struct Estudiante{
char nombreEst[100]; //Nombre del estudiante
char apellidosEst[100]; //Apellidos del estudiante
struct Asignatura asignaturas[10]; //Vector que contiene las
// asignaturas del estudiante
};
struct Grupo{
struct Estudiante estudiantes[50]; //Vector que contiene los
// estudiantes del grupo
int numEstudiantes; // Número de estudiantes registrados
};

Escriba en C una función que toma como argumento de entrada una variable con toda la información de un
grupo de estudiantes (g), y una cadena de caracteres conteniendo el nombre de una asignatura (nAsig). Esta
función devuelve el porcentaje (en número entero) de los estudiantes aprobados de la asignatura nAsig.
Nota1: tenga en cuenta que no todos los estudiantes tienen por qué estar matriculados en la asignatura con
nombre nAsig.
Nota2: Supondremos que todos los estudiantes del grupo g tienen siempre 10 asignaturas.

El prototipo de la función es el siguiente:


int porcentajeAprobadosAsignatura(struct Grupo g, char nAsig[]);
(1 punto). Escriba en C una función que reciba tres números enteros como argumentos de entrada (a, b y c)
y devuelva el máximo común divisor de los tres números.

El prototipo de la función es el siguiente:


int calculaMaximoComunDivisor (int a, int b, int c);
(1,5 puntos). Escriba en C el cuerpo de la función escribeIniciales, que toma como argumento una
cadena s que contiene una serie de palabras escritas en minúsculas, y separadas por espacios (un espacio
entre cada palabra), y escribe en pantalla las iniciales de cada palabra, en mayúsculas.
Ejemplo: si s = "escuela politecnica superior", en pantalla debe aparecer: EPS

El prototipo de la función es el siguiente:


void escribeIniciales (char s[]);
EFERENCIA RÁPIDA DE LENGUAJE C Y SQL
Tipos básicos de datos Operadores aritméticos Constantes
char + - * / (de menor a mayor prioridad) #define NOMBRE_CTE valor (no se termina en ; )
short % (operador módulo. Resto de la división)
int ( ) (paréntesis, para agrupar operaciones)
long
float Asignación de variables
double variable = expresion;
Operadores relacionales Operadores lógicos para condiciones Bucle FOR
== != < > <= >= && (AND lógico) for (inicializ;condicion;actualiz) {
|| (OR lógico) cuerpo del bucle
! (NOT lógico) }
Condiciones Condicional múltiple IF-ELSE-IF Condicional múltiple SWITCH-CASE
if (condicion) { if (condicion1) { switch (expresion) {
bloque si condición cierta bloque1 case CONSTANTE1:
} } else if (condicion2) { ...
else { bloque2 break;
bloque si condición falsa } ... case CONSTANTE2:
} else { ...
OPCIONAL bloque por defecto break;
} default:
OPCIONAL ...
}
Bucle WHILE Bucle DO-WHILE Vectores
while (condicion) { do { Tipo nombre[DIMENSION];
cuerpo del bucle cuerpo del bucle Índices válidos: 0 a DIMENSION-1
} } while (condicion); Tipo nombre[] = {valor, valor, valor...};
Funciones Cadenas
Prototipo (antes de main() ): char nombre[NUMCARACTERES];
tipo_devuelto nombre (tipo1 arg1, tipo2 arg2, .... , tipoN argN); char nombre[] = "Texto de la cadena";
Implementación (después de main() ):
tipo_devuelto nombre (tipo1 arg1, tipo2 arg2, .... , tipoN argN) { Estructuras anidadas
declaración de variables... Uso:
bloque de código... struct nom_estructura_anidada var;
return valor_a_devolver (si tipo_devuelto no es void)
} var.campo1.campoX...
Llamada a una función (desde cualquier función):
funcion(val1, val2, ...); (si funcion es void)
variable = funcion(val1, val2, ...); (si funcion no es void)
Estructuras Estructuras Estructuras con typedef Estructuras con typedef
Definición: Uso: Definición: Uso:
struct nom_estructura { struct nom_estructura var; typedef struct { Tnom_estructura var;
tipo1 campo1; tipo1 campo1;
tipo2 campo2; var.campo1 tipo2 campo2; var.campo1
... var.campo2 ... var.campo2
}; ... } Tnom_estructura; ...
Biblioteca math.h (funciones matemáticas)
sqrt (v) Raiz cuadrada de v
pow (x, y) Eleva el valor x a la potencia y
abs (x) Devuelve el valor absoluto de x
Biblioteca stdio.h (funciones de manejo de pantalla, teclado y ficheros)
printf ("cadena de formato", exp1, Escribe el mensaje o valores de exp1, exp2 según las secuencias de sustitución de la cadena de formato
exp2, ...);
scanf ("cadena de formato", Pide por teclado valores según se especifique en su cadena de formato y la asigna a una o más variables. No
&variable); olvidar el & antes de la variable.
putchar(c); Escribe el carácter cuyo código ASCII es c, en pantalla
“%d” “%c” “%x” “%f” “%lf” “%s” Secuencias de sustitución para imprimir, o pedir por teclado: un entero decimal, un carácter, un valor
hexadecimal, un valor float, un valor double, y una cadena (en scanf, los espacios terminan la cadena)
Biblioteca string.h (funciones de manejo de cadenas)
strcpy (a, b); Copia la cadena b a la cadena a
strcat (a, b); Añade por la derecha el contenido de la cadena b a la cadena a
strcmp (a, b); Compara alfabéticamente la cadena a con b. Devuelve 0 si son iguales, 1 si a>b y -1 si a<b
strlen (a) Devuelve el número de caracteres en la cadena a
gets (a); Pide por teclado un valor de texto que se almacenará en la cadena a
puts (a); Escribe por pantalla el contenido de la cadena a
SQL
Sintáxis básica de una consulta: tabla1,tabla2…. deben ser entidades, o relaciones de muchos a muchos.
SELECT [DISTINCT] tabla1.campo1, tabla2.campo2,…… GROUP BY da un resultado igual a DISTINCT sólo si los campos de GROUP BY son los mismos que hay en
FROM tabla1, tabla2, tabla3….. SELECT
WHERE condición….. (opcional) Si en GROUP BY hay menos campos que en SELECT, los campos que haya en SELECT que no estén en
GROUP BY tabla.campo,……. (opcional) GROUP BY sólo pueden ser campos agregados
ORDER BY tabla.campo,….. [DESC] (opcional) Las sentencias encerradas en [ ] son opcionales. Pueden no usarse en una consulta.
Agregados:
COUNT() AVG() MAX() MIN() SUM()

También podría gustarte