From 441143482ac3f60e3ecc452fc950734afd5257eb Mon Sep 17 00:00:00 2001 From: Mauro Vietri Date: Wed, 23 Apr 2025 21:09:12 -0300 Subject: [PATCH] Initial commit --- Makefile | 11 +++++++ empanada.c | 48 +++++++++++++++++++++++++++++ empanada.h | 26 ++++++++++++++++ empanada.o | Bin 0 -> 2728 bytes horno.c | 26 ++++++++++++++++ horno.h | 10 ++++++ horno.o | Bin 0 -> 2200 bytes horno_simulator | Bin 0 -> 16416 bytes main.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ main.o | Bin 0 -> 4368 bytes utils.c | 22 ++++++++++++++ utils.h | 8 +++++ utils.o | Bin 0 -> 2872 bytes 13 files changed, 230 insertions(+) create mode 100644 Makefile create mode 100644 empanada.c create mode 100644 empanada.h create mode 100644 empanada.o create mode 100644 horno.c create mode 100644 horno.h create mode 100644 horno.o create mode 100755 horno_simulator create mode 100644 main.c create mode 100644 main.o create mode 100644 utils.c create mode 100644 utils.h create mode 100644 utils.o diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..855c76c --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +CC=gcc +CFLAGS=-Wall -Wextra -std=c99 +OBJ=main.o horno.o empanada.o utils.o + +all: horno_simulator + +horno_simulator: $(OBJ) + $(CC) $(CFLAGS) -o horno_simulator $(OBJ) + +clean: + rm -f *.o horno_simulator diff --git a/empanada.c b/empanada.c new file mode 100644 index 0000000..8218e38 --- /dev/null +++ b/empanada.c @@ -0,0 +1,48 @@ +#include "empanada.h" +#include +#include + +void inicializarEmpanada(Empanada* e, const char* relleno) { + strncpy(e->relleno, relleno, 29); + e->tiempo_coccion = 5 + rand() % 6; + e->tiempo_actual = 0; + e->activa = 1; + e->estado = CRUDA; + + int azar = rand() % 100; + if (azar < 5) { + e->estado = CUANTICA; + } else if (azar < 15) { + e->estado = SIN_RELLENO; + e->tiene_relleno = 0; + } else { + e->tiene_relleno = 1; + } +} + +void cocinar(Empanada* e) { + if (e->activa == 0) return; + if (e->estado == CUANTICA || e->estado == SIN_RELLENO || e->estado == QUEMADA) return; + + e->tiempo_actual++; + + if (e->tiempo_actual < e->tiempo_coccion) { + e->estado = EN_COCINA; + } else if (e->tiempo_actual == e->tiempo_coccion) { + e->estado = LISTA; + } else { + e->estado = QUEMADA; + } +} + +const char* estadoToString(Estado estado) { + switch (estado) { + case CRUDA: return "Cruda"; + case EN_COCINA: return "En cocina"; + case LISTA: return "Lista"; + case QUEMADA: return "Quemada"; + case CUANTICA: return "Cuantica"; + case SIN_RELLENO: return "Sin relleno"; + default: return "Desconocido"; + } +} diff --git a/empanada.h b/empanada.h new file mode 100644 index 0000000..68d15b5 --- /dev/null +++ b/empanada.h @@ -0,0 +1,26 @@ +#ifndef EMPANADA_H +#define EMPANADA_H + +typedef enum { + CRUDA, + EN_COCINA, + LISTA, + QUEMADA, + CUANTICA, + SIN_RELLENO +} Estado; + +typedef struct { + char relleno[30]; + int tiempo_coccion; + int tiempo_actual; + Estado estado; + int tiene_relleno; + int activa; +} Empanada; + +const char* estadoToString(Estado estado); +void cocinar(Empanada* e); +void inicializarEmpanada(Empanada* e, const char* relleno); + +#endif diff --git a/empanada.o b/empanada.o new file mode 100644 index 0000000000000000000000000000000000000000..ead395d3b3b2678ccd39f8225afddd83d72e75ae GIT binary patch literal 2728 zcmbuAL1-Lh6oB7scAKhAnwARHDj77$uBPKAq>3VCWV7Z!MA_N~6)bf+J2ul~XO`Jn zniQ4@F~YD0_SlQyQL0x#JY}|r)EqR_OAkE+N?~gI#4y!I24ro%LplRtX9! zscn6N@?$egTZ_#!(P&j>?lSw<_(uB-3x8F^e^Nmh{ym=A2^PBbh3?X=VrDnUch_s( z^|oF?HpGdcMmxk8PkE*d|p4^<;uwW1CM#NZH-rSap0&JeIWEjv71MPvyy(&{9wBqN z-0Nz3?wy5IkhqHxvG0x84PTJ%`LFf-A98xlfQR%E9*-{1$^yDqC# zHXOWP%>>)AP1{(uuNq#SQ>gf!W0qIJGn^vCec^$HeNlAJxo3UPb}r${0MW~gn(mJ7 zvb!Hk25l1J^r;bijUbB5zvTO)cYVt)mR|H9+XN&GL)Rf+Q{=n@xw z^pV6xAAwd`E&0Yp)V>$%MPcDb!q9wc#Rsiu;Fm6S{Cg8`1~TN-`< zPGW1BOMHIGscL1Q7j-%7<5=t%nh2BS6g=ojEmeqMYU#R{AB z2^`eJI*xuR6GTyYKJ^)y2MMAaj}^RtnmF}(zsyjR3=nBMFo`j==6}t91#@Xl`Ela; z@1w6@cv(F(h1Q_@8__=${>Ac0s-KWt|7m3O{49=s`J8V^eA9(b)GzcLI)p7^NPi_4 z#GP{Nd&q}z$l)Si-j~=vUk>OyN^8pbw>el5fn3Y^myr)TKb1Em<9T#`kK+*eqJIWG wn^FqAA#T$IWdsL3N6vo?ncO>wAk8m&mL`27pWhMm4a#5S`(N$LB~#A-7am7)-2eap literal 0 HcmV?d00001 diff --git a/horno.c b/horno.c new file mode 100644 index 0000000..c062893 --- /dev/null +++ b/horno.c @@ -0,0 +1,26 @@ +#include +#include "horno.h" + +void mostrarEmpanadas(Empanada horno[], int cantidad) { + int mostradas = 0; + for (int i = 0; i < cantidad; i++) { + if (horno[i].activa == 0) continue; + + printf("Empanada %d: %s - %s (%d/%d)", + i + 1, + horno[i].relleno, + estadoToString(horno[i].estado), + horno[i].tiempo_actual, + horno[i].tiempo_coccion + ); + if (horno[i].tiene_relleno == 0) printf(" [SIN RELLENO]"); + + printf("\n"); + mostradas++; + } + + if (mostradas == 0) { + printf("El horno está vacio!\n"); + } +} + diff --git a/horno.h b/horno.h new file mode 100644 index 0000000..1d24d00 --- /dev/null +++ b/horno.h @@ -0,0 +1,10 @@ +#ifndef HORNO_H +#define HORNO_H + +#include "empanada.h" + +#define MAX_EMPANADAS 10 + +void mostrarEmpanadas(Empanada horno[], int cantidad); + +#endif diff --git a/horno.o b/horno.o new file mode 100644 index 0000000000000000000000000000000000000000..6be2bbb1197959868fb733b0fde145d5a30b72c9 GIT binary patch literal 2200 zcmbtU%}*0i5T9*P{NPK&0mPVR0;VLemPVsuG>f>hMuG_+2?-Ki+VY{a+w5))m=F&Y z!lr2W13c)>qepKRFyh681BV_w=)nXd7w<-#*}ezcO`9}2$=jLv&F?qw?VD|%s{OYD zk_5sexDE%IKmnQ#9mI+oDo_WtFrqo%dxnR!%r4WMg}jsA-c)y}zNzk#`_Yfxvg)oD z-O`*bP0DG~mbUgaAe^(VWz{@pStY!ftAEy1A^m3d0jsF(Xlq3@CFE?n=hmFHN(7p- zjs5op1K%2is?xY-#rUrr*JhCQ{Ak+3?43nUoL}# zd;4+}5{6})x+!L70S-iu8Njb9I<1@JEjq|&dZ5wW(=2}P6|9C2 zB7j)XgEw=W_=i3C9Us3LYhKsJp+5;YQucoJ(#!;Z`NZFb^CMj!EfDw&p3 zrjd%9_B?8+Q+)dVq^T$3`&<7{z)(!DN_Xoug(u>>5;cA;B83)=Xg10|QV2fL5Yck( z6W};{(uyBP6UWbSoYOf9@WsCoulV5(#Hr`M>bp=&J&R_Ex!C^(#$NO9e+7$#(eKD> zXLv*LUm3jCm6%P2%CGMZMgNGPUPrp9J0YwnG_v`5^ zEH(dS0@1{rY5w$|CG-L>wKwVB^8NFapw-}_mVQ0;^v@n4Smxk0N<8MjzY|z1rGLfG LZ+o;9`t^SSC?ii3 literal 0 HcmV?d00001 diff --git a/horno_simulator b/horno_simulator new file mode 100755 index 0000000000000000000000000000000000000000..7914b1e33a20cf9e98b0dcb3f3e533ea25115f00 GIT binary patch literal 16416 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 P`>cM>{vDTrixmG2HXuuN literal 0 HcmV?d00001 diff --git a/main.c b/main.c new file mode 100644 index 0000000..5ced2c6 --- /dev/null +++ b/main.c @@ -0,0 +1,79 @@ +#include +#include +#include +#include +#include +#include "empanada.h" +#include "horno.h" +#include "utils.h" + +int main() { + Empanada horno[MAX_EMPANADAS]; + srand(time(NULL)); + + for (int i = 0; i < MAX_EMPANADAS; i++) { + horno[i].activa = 0; + } + + while (1) { + limpiarPantalla(); + imprimirHeader(); + printf("\n1. Agregar empanada\n2. Cocinar 1 segundo\n3. Mostrar horno\n4. Sacar empanada\n5. Salir\n> "); + int opcion; + scanf("%d", &opcion); + getchar(); + + switch (opcion) { + case 1: + char relleno[30]; + printf("Relleno: "); + fgets(relleno, sizeof(relleno), stdin); + relleno[strcspn(relleno, "\n")] = '\0'; + + int index = -1; + for (int i = 0; i < MAX_EMPANADAS; i++) { + if (horno[i].activa == 0) { + index = i; + break; + } + } + if (index != -1) { + inicializarEmpanada(&horno[index], relleno); + } + else { + printf("El horno está lleno.\n"); + } + break; + case 2: + for (int i = 0; i < MAX_EMPANADAS; i++) { + cocinar(&horno[i]); + } + printf("Cocinando...\n"); + sleep(1); + break; + case 3: + mostrarEmpanadas(horno, MAX_EMPANADAS); + pausar(); + break; + case 4: + int cual; + printf("¿Cual queré sacar? [1 a %d]?", MAX_EMPANADAS); + scanf("%d", &cual); + getchar(); + cual--; + + if (cual >= 0 && cual < MAX_EMPANADAS && horno[cual].activa == 1) { + printf("\nQue disfrutes tu empanada de '%s [%s]', campeón", horno[cual].relleno, estadoToString(horno[cual].estado)); + horno[cual].activa = 0; + } else { + printf("Ahi no hay nada!"); + } + pausar(); + break; + case 5: + exit(0); + } + } + + return 0; +} diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..46509b1bd25bb08ba8e8f4856acd68e16ffafdc3 GIT binary patch literal 4368 zcmb`Je~1)S9KheKXL_67U3!LK$Sb%!L5JJ(S6b*D*X2MNrb&Uw`P`Yio7$b(W@hP5 zNU3GBZCw)jBme0S|1%L1(vtAUUWOY5vGj*Vf5asS%0(IV$3e#R{l0l`_c`p8L|=IG z-uE-#U+>MEH*FgySCQ>Cg==`QjhVXSgn z!Z>bJmT{!j=cZdlG0Nfn%5eSC%CG<)*Z?4XOV^+*POm;azfNk!vrrXEt$1E8$Y7a| z|7}6aq*%>>jFfXQr#bJz;q;So@(*3m19(;3=b0sRAlvYIX+YYc4^{uhIW4g(8I^E&=fd_Eh^&B_3UZ=ZRTJ_t2 zBx8HYt(5ebWS5o6SdP1ek|Y_rpEzW2 z+@_98$Jr#s$vqn8X?fi~G_-~GZhwByYMNTF_vEBfzntOwWVMU`N;6iJ`?0a1wvPJZZ{=4oq<=T=MzC4Ea#_&xsd}|Ef5ySVy@Vzmd#c(@@ zzY)XVisA3Z@MAIjL<~O}!#|7RB+G0^PxFohcGe=k#~hPn>}<|v-cIHOER$gbRL{=Z zo?$W5@(3tSFiJ*7Y~M|9-aO)`nKMeptROwkJmLqY?T}GWeHeRbKj#qJvC}rZ)CZY2 zEY1g#%Y#8WJRyjmv8)`)hDU=m@kx&5eFzD!J2TxE-Q59X9wXL-9l(qTq5O(_I((<# zDB`k8;rLESKB@2p3NI)e_qMdh=Yj%ZLNPFC8DCfeC+vE32 z+JCO_2Nixza2e;0&~L=>Un2Zvq5moRXq^c>2tY9YB51OnrGle9zRQxYRP1pb4nRX$ zt=M;fF73Znc&EaDh{Q252*?e^9?uUM=P@i01nYSSn&g`W#}4Z`2n}UWu~*|ft8hGv zWE@lBOBL=Y9M52Be^_wrFz-=lC`T20bw7L;w5}k#Y9p0HjUXKZuS9zA(aXiux!zfyg+a23Osm%m(ZL^nn-l<8tI#8Kwu;L_lNSM* zLL8iO^m{)53}sr(Kh&E47gApV1Kdjk5{Ujd9)2Llgg>4Qm`7lO-)oe|p&^f?ArynQ z5b<~#ch +#include + +void limpiarPantalla() { + printf("\033[2J\033[H"); +} + +void pausar() { + printf("\nPresione ENTER para continuar..."); + getchar(); +} + +void imprimirHeader() { + printf("▗▄▄▄▖▗▖ ▗▖ ▗▄▄▖▗▄▄▄▖▗▄▄▖ ▗▄▖ ▗▄▄▖ ▗▄▄▖ ▗▄▄▖\n"); + printf("▐▌ ▐▛▚▖▐▌▐▌ ▐▌ ▐▌ ▐▌ ▐▌ ▐▌▐▌ ▐▌▐▌ ▐▌▐▌ \n"); + printf("▐▛▀▀▘▐▌ ▝▜▌▐▌▝▜▌▐▛▀▀▘▐▛▀▚▖ ▐▛▀▜▌▐▛▀▘ ▐▛▀▘ ▝▀▚▖\n"); + printf("▐▙▄▄▖▐▌ ▐▌▝▚▄▞▘▐▙▄▄▖▐▌ ▐▌ ▐▌ ▐▌▐▌ ▐▌ ▗▄▄▞▘\n"); + printf("\n"); + printf(" - Horno Simulator 2025 \n"); + printf("\n"); +} diff --git a/utils.h b/utils.h new file mode 100644 index 0000000..d8d313e --- /dev/null +++ b/utils.h @@ -0,0 +1,8 @@ +#ifndef UTILS_H +#define UTILS_H + +void limpiarPantalla(); +void pausar(); +void imprimirHeader(); + +#endif diff --git a/utils.o b/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..311cb3aca9b12abe70fa5da02a57929062e70b47 GIT binary patch literal 2872 zcmbtW&x;&Y5U!cck2NM?BRNDihejk(FzxP;5E3Pf88#Ub32`-otdf11^kzGm=^ozn zkWDTsh!{vFyn6E>#QOTZ>Us0h1ER%rSJhWv)vNcTAM^Rj z`{(Ml8i~~C3{5;iiJtDB*v-Oh(tg@USK9Y}Z$H=xqFqA3RW(Cw6YrXl~zF~O|m!{DjkNQq0>13 zcAS4Dzr1ksAh6nrnvlmdF7qKm&P$8Ko--9f3*&q=&hHo5Yyd(anYukv}v2`mHCFTZMqYOJub>LWZFKy zbJpEV$r+z{yna89bJOGtT-&-Voh(ZUJ4U(1sAe`Ey*qL&Xs0?!gAe20u&c6E2aTo1 z35S5SJKt)Z4&FF_>B^hI^6{_{E*GSw#?ncm9bA?vgfD~{RHxd{z~mdNdHz9;L27qb zskXIHTim;Qe#GR%jNySS;`QGCg|F+aeY-wp0=tO43!EjuOX6#j_@}^GHt>>oT^Rzf z3PGPc=+EaBA(|^^F&&*NW;>0&#O^B&znBAKuky1nO)b2D-{1=mKIAArRs6RZ2mc+A zSc*BaKEqEHzcmA=VHS4>VTZbLuOBOYStXh3b`|w?oMao+SHpqQbR)_-o2;3n<6f-W zk-8pf>JPI4UPX*YAd+jd&h{KXe?K=O`;4=Ivmy9vY(s>PI0W;9`26DrE^v$`bbzzB3l1N9BK!|L{uAqeGK0VF@ekVry*Y!Qdi=+he|rZ1O9#h2FMWRF)p;EgWEmM% ztb;qRhYs%62`r9uTcSXk9xmr^-NWUaQ8>8M%hWa2nKpV;EFE=Km_=I|h1XT4D7-cp zP^eSmbkbfgN;sCJSrqc!aBPsN&MoWTNQPlwr~OE0cQ^-?qRp!tTJ<8^$^TOUr(+9t zd1ac`|H;Gcc9kgB1!u8YBF0!R{t6In+k}@HhKV~0a>yt;!WuZf30Hn|9mlriN(AQ_ zHUDe=GUuYEyZ7vxKQFA;ynyr%4&)R+$X|lvNXs@PceRA1f6-?-AhvLzulf_RL7%(I zIKFqUO6zO1|uW)!0axw-?^L mo$y}90Qvc-S+!IP_WWJsxGVnp9pGS9e$!sqnVZbEpZ^aO`!>t~ literal 0 HcmV?d00001