{"id":51059126,"url":"https://github.com/remojs/tl-progra1-final","last_synced_at":"2026-06-23T00:01:39.374Z","repository":{"id":361031440,"uuid":"1251525466","full_name":"Remojs/TL-Progra1-Final","owner":"Remojs","description":"Thiago \u0026 Lucas - Proyecto final // Programacion I UTN","archived":false,"fork":false,"pushed_at":"2026-06-10T05:14:13.000Z","size":79,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T07:13:43.807Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Remojs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-27T17:01:53.000Z","updated_at":"2026-06-10T05:14:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Remojs/TL-Progra1-Final","commit_stats":null,"previous_names":["remojs/tlgi-progra1-final","remojs/tl-progra1-final"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Remojs/TL-Progra1-Final","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Remojs%2FTL-Progra1-Final","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Remojs%2FTL-Progra1-Final/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Remojs%2FTL-Progra1-Final/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Remojs%2FTL-Progra1-Final/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Remojs","download_url":"https://codeload.github.com/Remojs/TL-Progra1-Final/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Remojs%2FTL-Progra1-Final/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34669839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-23T00:01:34.256Z","updated_at":"2026-06-23T00:01:39.368Z","avatar_url":"https://github.com/Remojs.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Casino — TP Final\n\nProyecto grupal, no se rompan la cabeza, cualquier duda consultar a Thiago (porfavor no rompan nada)\n\n![dealer](https://media.tenor.com/aR8BhQyiSrYAAAAM/casino-gambling.gif)\n\n---\n\n### Como ejecuto este maravilloso proyecto?\n\n- Para ejecutar el codigo usar el menu poniendo en consola:\n\n**\"gcc main.c pila.c mesas.c clientes.c reclamos.c -o menu\"**\n\ny luego **\"./menu\"**\n\n---\n\n## Cómo está organizado el proyecto\n\nEl proyecto está dividido en archivos, y cada uno tiene su responsabilidad. La idea es que cada uno trabaje en su propio archivo.\n\n```\ncasino/\n│\n├── main.c          → Menú principal (acá traemos todo)\n├── tipos.h         → Las structs, constantes y la matriz de ocupación\n│\n├── clientes.h      → Declaración de cada función para Clientes\n├── clientes.c      → Desarrollo de cada función para Clientes\n│\n├── mesas.h         → Declaración de cada función para Mesas\n├── mesas.c         → Desarrollo de cada función para Mesas\n│\n├── reclamos.h      → Declaración de cada función para la Pila de Reclamos\n├── reclamos.c      → Desarrollo de cada función para la Pila de Reclamos\n```\n\n---\n\n## Para qué sirven el .h y el .c\n\nCada módulo tiene dos archivos: un `.h` y un `.c`.\n\nNo se asusten loco!\n\n- El `.h` es como el **índice de un libro**: lista qué funciones existen y qué parámetros reciben (la declaración que hacen en el main siempre).\n\n- El `.c` es el **contenido del libro**: ahí está el código real de cada función.\n\nSería algo así un ejemplo de declaración en el `.h`:\n```c\nvoid altaCliente(Cliente arreglo[], int* cantidad);\n```\nY en `clientes.c` van a ver esa misma función pero con todo el código adentro.\n\nEstá bueno porque si se necesita usar una función de Clientes, solo ponen `#include \"clientes.h\"` al principio del archivo y listo.\n\n---\n\n## Qué tiene que hacer cada archivo\n\n### `tipos.h`\nAcá están definidas las dos structs principales, las constantes del sistema, **y la matriz de ocupación**. Si hay que cambiar algo acá pregunten primero, si rompen algo se pudre todo.\n\n**Structs:**\n```c\n#define MAX_CLIENTES 200\n#define MAX_MESAS    10   // máximo de mesas simultáneas\n#define MAX_HORAS    24   // horas del día\n\ntypedef struct {\n    int     id;\n    char    nombre[50];\n    int     dni[15];\n    int     nivelVip;      // 1=Bronce, 2=Plata, 3=Oro\n    float   saldo;\n    int     activo;        // 1=activo, 0=dado de baja\n} Cliente;\n\ntypedef struct {\n    int     id;\n    char    nombreJuego[50];  // \"Ruleta\", \"Blackjack\", \"Póker\", etc.\n    int     capacidadMax;\n    int     disponible;       // 1=disponible, 0=ocupada\n    int     activa;           // 1=activa, 0=dada de baja\n} Mesa;\n\ntypedef struct {\n    int     idReclamo;\n    int     idCliente;\n    char    descripcion[200];\n    int     prioridad;\n} Reclamo;\n```\n\n**Matriz de ocupación:** representa cuántos jugadores tiene cada mesa en cada hora del día:\n```c\nint ocupacion[MAX_MESAS][MAX_HORAS];\n```\n\n---\n\n### `clientes.c` — Arreglo **ESTÁTICO**\nTodo lo relacionado con los clientes del casino. Usa un arreglo estático de tamaño fijo (`MAX_CLIENTES`).\n\nFunciones que tiene que tener:\n- `altaCliente` → pedir datos, verificar que el DNI no esté repetido, guardar en archivo\n- `bajaCliente` → buscar por ID, marcarlo como inactivo (`activo = 0`), guardar\n- `modificarCliente` → buscar por ID, cambiar datos (nombre, nivel VIP, saldo), guardar\n- `consultarCliente` → buscar por ID y mostrar todos los datos en pantalla\n- `listarClientesAlfabetico` → ordenar por nombre usando **método Selección**\n- `listarClientesPorId` → ordenar por ID usando **método Inserción**\n- `cargarClientesDesdeArchivo` → leer el archivo binario al iniciar el sistema\n- `guardarClientesEnArchivo` → escribir el archivo binario cada vez que haya cambios\n\n---\n\n### `mesas.c` — Arreglo **DINÁMICO**\nTodo lo relacionado con las mesas del casino. Usa un **arreglo dinámico** (`malloc`/`realloc`) porque el casino puede habilitar nuevas mesas.\n\nFunciones que tiene que tener:\n- `altaMesa` → pedir datos, validar que el tipo de juego sea válido, usar `realloc` para agrandar el arreglo, guardar\n- `bajaMesa` → buscar por ID, eliminarlo del arreglo (compactar), guardar\n- `modificarMesa` → buscar por ID, cambiar datos, guardar\n- `consultarMesa` → buscar por ID y mostrar\n- `consultarMesasPorTipo` → mostrar todas las mesas de un tipo de juego (ej: todas las ruletas)\n- `listarMesasAlfabetico` → ordenar por nombre del juego usando **método Selección**\n- `listarMesasPorCapacidad` → ordenar por capacidad máxima usando **método Inserción**\n- `mostrarOcupacionDiaria` → recorre la matriz `ocupacion[MAX_MESAS][MAX_HORAS]` y muestra un reporte de actividad por mesa y hora\n- `cargarMesasDesdeArchivo` → leer el archivo al iniciar\n- `guardarMesasEnArchivo` → escribir el archivo cuando haya cambios\n\n---\n\n### `reclamos.c` — **PILA**\nLa pila de reclamos urgentes del día (quejas de clientes, problemas técnicos, situaciones VIP). Los reclamos **no se guardan en archivo**, son solo del día.\n\nFunciones que tiene que tener:\n- `agregarReclamo` → agrega un reclamo urgente en el tope de la pila (push)\n- `atenderReclamo` → saca y muestra el reclamo del tope (pop), el más reciente se atiende primero\n- `verReclamos` → recorre y muestra todos los reclamos sin sacarlos\n- `vaciarPila` → descarta todos los reclamos pendientes al cerrar el turno\n\n---\n\n### `main.c` — El menú (quien integra todo)\n- Acá arranca el programa. Llama a las funciones de los otros archivos según lo que elija el usuario.\n- **Que no tenga lógica propia**, solo organiza los menús.\n- Define e inicializa la matriz de ocupación (`int ocupacion[MAX_MESAS][MAX_HORAS]`) con ceros al arrancar.\n\nMenú sugerido:\n```\n=== SISTEMA DE GESTIÓN CASINO ===\n1. Gestión de Clientes\n2. Gestión de Mesas\n3. Reclamos del día\n4. Reporte de ocupación diaria\n0. Salir\n```\n\n---\n\n## Reglas para no pisarse en GitHub\n\n### ✅ Está bien hacer\n- Trabajar solo en tus archivos (el `.c` y el `.h` que te tocan)\n- Hacer commit seguido con mensajes que expliquen qué hiciste\n- Avisar al grupo cuando terminaste algo para que puedan probar\n\n### ❌ No hacer sin hablar con el grupo\n- **No tocar `tipos.h` solo** — si cambiás una struct sin avisar, el código de todos deja de compilar y cobras\n- **Avisar si modificás funciones en el `.h` (la declaración)** — si cambiás los parámetros de una función, el `main.c` deja de funcionar\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremojs%2Ftl-progra1-final","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fremojs%2Ftl-progra1-final","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremojs%2Ftl-progra1-final/lists"}