Skip to content

Instantly share code, notes, and snippets.

@erseco
Last active May 12, 2022 11:09
Show Gist options
  • Save erseco/bdf57a233dfefc5863ecaabb351b967a to your computer and use it in GitHub Desktop.
Save erseco/bdf57a233dfefc5863ecaabb351b967a to your computer and use it in GitHub Desktop.
Código para realizar el sorteo de bolas de una oposición a Profesor de Enseñanza Secundaria, Especialidad Informática
// Código para realizar el sorteo de bolas de una oposición a Profesor de Enseñanza Secundaria, Especialidad Informática
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
// Colores ansi para la consola
#define BLACK "\033[0m"
#define RED "\033[31m"
#define GREEN "\033[32m"
#define YELLOW "\033[33m"
#define BLUE "\033[34m"
#define MAGENTA "\033[35m"
#define CYAN "\033[36m"
#define WHITE "\033[37m"
#define BOLD "\033[1m" // Negrita
const int nBOLAS = 5;
const int nTEMAS = 74;
// Estructura que almacenará la tupla numero:tema
struct tema {
int numero;
char* descripcion;
};
struct tema temas[nTEMAS];
void inicializarTemas(){
// Establecemos los numeros de los temas
for(int i=0;i<nTEMAS;i++){
temas[i].numero = i+1;
}
// Establecemos los temas
temas[0].descripcion = "Representación y comunicación de la información.";
temas[1].descripcion = "Elementos funcionales de un ordenador digital.";
temas[2].descripcion = "Componentes, estructura y funcionamiento de la Unidad Central de Proceso.";
temas[3].descripcion = "Memoria interna. Tipos. Direccionamiento. Características y funciones.";
temas[4].descripcion = "Microprocesadores. Estructura. Tipos: Comunicación con el exterior:";
temas[5].descripcion = "Sistemas de almacenamiento externo. Tipos. Características y funcionamiento.";
temas[6].descripcion = "Dispositivos periféricos de entrada/salida. Características y funcionamiento.";
temas[7].descripcion = "Hardware» comercial de un ordenador. Placa base. Tarjetas controladoras de dispositivos y de entrada/salida:";
temas[8].descripcion = "Lógica de circuitos. Circuitos combinacionales y secuenciales.";
temas[9].descripcion = "Representación interna de los datos.";
temas[10].descripcion = "Organización lógica de los datos. Estructuras estáticas.";
temas[11].descripcion = "Organización lógica de los datos. Estructuras dinámicas.";
temas[12].descripcion = "Ficheros. Tipos. Características. Organizaciones.";
temas[13].descripcion = "Utilización de ficheros según su organización.";
temas[14].descripcion = "Sistemas operativos. Componentes. Estructura. Funciones. Tipos.";
temas[15].descripcion = "Sistemas operativos: Gestión de procesos.";
temas[16].descripcion = "Sistemas operativos: Gestión de memoria.";
temas[17].descripcion = "Sistemas operativos: Gestión de entradas/salidas.";
temas[18].descripcion = "Sistemas operativos: Gestión de archivos y dispositivos.";
temas[19].descripcion = "Explotación y Administración de sistemas operativos monousuario. y. multiusuario.";
temas[20].descripcion = "Sistemas informáticos. Estructura física y funcional.";
temas[21].descripcion = "Planificación y explotación de sistemas Informáticos. Configuración. Condiciones de instalación. Medidas de seguridad. Procedimientos de uso.";
temas[22].descripcion = "Diseño de algoritmos. Técnicas descriptivas.";
temas[23].descripcion = "Lenguajes de programación. Tipos. Características.";
temas[24].descripcion = "Programación estructurada. Estructuras básicas. Funciones y Procedimientos.";
temas[25].descripcion = "Programación modular. Diseño de funciones. Recursividad. Librerías.";
temas[26].descripcion = "Programación orientada a objetos. Objetos. Clases. Herencia. Polimorfismo. Lenguajes.";
temas[27].descripcion = "Programación en tiempo real. Interrupciones. Sincronización y comunicación entre tareas. Lenguajes.";
temas[28].descripcion = "Utilidades para el desarrollo y prueba de programas. Compiladores. Intérpretes. Depuradores:";
temas[29].descripcion = "Prueba y documentación de programas. Técnicas.";
temas[30].descripcion = "Lenguaje C: Características generales. Elementos del lenguaje. Estructura de un programa. Funciones de librería y usuario. Entorno de compilación. Herramientas para la elaboración y depuración de programas en lenguaje C.";
temas[31].descripcion = "Lenguaje C: Manipulación de estructuras de datos dinámicas y estáticas. Entrada y salida de datos., Gestión de punteros. Punteros a funciones.";
temas[32].descripcion = "Programación en lenguaje ensamblador. Instrucciones básicas. Formatos. Direccionamientos.";
temas[33].descripcion = "Sistemas gestores de base de datos. Funciones. Componentes. Arquitecturas de referencia y operacionales. Tipos de sistemas.";
temas[34].descripcion = "La definición de datos. Niveles de descripción. Lenguajes. Diccionario de datos.";
temas[35].descripcion = "La manipulación de datos. Operaciones. Lenguajes. Optimización de consultas.";
temas[36].descripcion = "Modelo de datos jerárquico y en red. Estructuras. Operaciones.";
temas[37].descripcion = "Modelo de datos relacional. Estructuras. Operaciones. Algebra relacional.";
temas[38].descripcion = "Lenguajes para la definición y manipulación de datos en sistemas de base de datos relacionales. Tipos. Características. Lenguaje SQL.";
temas[39].descripcion = "Diseño de bases de datos relacionales.";
temas[40].descripcion = "Utilidades de los sistemas gestores de base de datos para. el desarrollo de aplicaciones. Tipos. Características.";
temas[41].descripcion = "Sistemas de base de datos distribuidos.";
temas[42].descripcion = "Administración de sistemas de base de datos.";
temas[43].descripcion = "Técnicas y procedimientos para la seguridad de los datos.";
temas[44].descripcion = "Sistemas de información. Tipos. Características. Sistemas de Información en la empresa.";
temas[45].descripcion = "Aplicaciones informáticas de propósito general y para la gestión empresarial. Tipos. Funciones. Características.";
temas[46].descripcion = "Instalación y explotación de aplicaciones informáticas. Compartición de datos.";
temas[47].descripcion = "Ingeniería del «software». Ciclo de desarrollo del «software». Tipos de ciclos de desarrollo: Metodologías de desarrollo. Características distintivas de las principales metodologías de desarrollo utilizadas en la Unión Europea.";
temas[48].descripcion = "Análisis de sistemas: Modelización de tratamientos. Modelo de flujo de datos y control. Técnicas descriptivas. Documentación.";
temas[49].descripcion = "Análisis de sistemas: Modelización conceptual de datos. Técnicas descriptivas. Documentación.";
temas[50].descripcion = "Análisis de sistemas: Especificación funcional del sistema. Búsqueda y descripción de requisitos funcionales. Especificación de soluciones técnicas. Análisis de amabilidad técnica y económica.";
temas[51].descripcion = "Diseño lógico de funciones. Definición de funciones. Descomposición modular. Técnicas descriptivas. Documentación.";
temas[52].descripcion = "Diseño lógico de datos. Transformación del modelo conceptual y modelos lógicos. Análisis relacional de datos. Documentación.";
temas[53].descripcion = "Diseño de interfaces de usuario: Criterios de diseño. Descripción de interfaces. Documentación. Herramientas para la construcción de interfaces.";
temas[54].descripcion = "Diseño físico de datos y funciones. Criterios de diseño. Documentación.";
temas[55].descripcion = "Análisis y diseño orientado a objetos.";
temas[56].descripcion = "Calidad del «software». Factores y métricas. Estrategias de prueba.";
temas[57].descripcion = "Ayudas automatizadas para el desarrollo de «software» (herramientas CASE). Tipos. Estructura. Prestaciones.";
temas[58].descripcion = "Gestión y control de proyectos Informáticos. Estimación de recursos. Planificación temporal y organizativa. Seguimiento.";
temas[59].descripcion = "Sistemas basados en el conocimiento. Representación del conocimiento. Componentes y arquitectura.";
temas[60].descripcion = "Redes y servicios de comunicaciones.";
temas[61].descripcion = "Arquitecturas de sistemas de comunicaciones. Arquitecturas basadas en niveles. Estándares.";
temas[62].descripcion = "Funciones y servidos del nivel físico. Tipos y medios de transmisión. Adaptación al medio de transmisión. Limitaciones a la transmisión. Estándares.";
temas[63].descripcion = "Funciones y servidos del nivel de enlace. Técnicas. Protocolos.";
temas[64].descripcion = "Funciones y servicios del nivel de red y del nivel de transporte. Técnicas. Protocolos.";
temas[65].descripcion = "Funciones y servicios en niveles sesión, presentación y aplicación. Protocolos. Estándares.";
temas[66].descripcion = "Redes de área local. Componentes. Topologías. Estándares. Protocolos.";
temas[67].descripcion = "Software» de sistemas en red. Componentes. Funciones. Estructura.";
temas[68].descripcion = "Integración de sistemas. Medios de Interconexión. Estándares. Protocolos de acceso a redes de área extensa.";
temas[69].descripcion = "Diseño de sistemas en red local. Parámetros de diseño. Instalación y configuración de sistemas en red local.";
temas[70].descripcion = "Explotación y administración de sistemas en red local. Facilidades de gestión.";
temas[71].descripcion = "La seguridad en sistemas en red: Servicios de seguridad. Técnicas y sistemas de protección. Estándares.";
temas[72].descripcion = "Evaluación y mejora de prestaciones, en un sistema en red. Técnicas y procedimientos de medidas.";
temas[73].descripcion = "Sistemas multimedia.";
}
int main(){
printf("Sorteo:\n");
printf("-------\n");
inicializarTemas();
// Inicializamos el vector de bolas a 0
int bolas[nBOLAS] = {0};
// Establecemos la semilla del random, para que de valores aleatorios
srand(time(0));
for (int i=0; i<nBOLAS; i++){
int random = rand() % nTEMAS;
// Comprobamos si ya ha salido esta bola
for(int h=0; h<i; h++){
if (bolas[h] == random){
// Se podría dar el caso de que el nuevo numero ya estuviera, con lo que no es perfecto
random = rand() % nTEMAS;
}
}
bolas[i] = random;
}
for (int i=0; i<nBOLAS; i++){
printf("Tema %d: %s%s%s\n", temas[bolas[i]].numero, GREEN, temas[bolas[i]].descripcion, BLACK);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment