OSCAR/PROGRAMA.CPP
2021-09-12 19:50:38 +02:00

423 lines
8.1 KiB
C++

//bibliotecas empleadas
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
//declaracion de funciones
void inicio();
void recuadro(int x,int y,int x1,int y1);
void principal(void);
void orden(int numeros[4],int ordenado[4]);
char menu(char o);
char menu1(char peliculas[4][15],int sesiones[3],int salas[4]);
char menu2(char peliculas[4][15],int sesiones[3],int cliente[100][3],
int importe[50],int c[1]);
char menu3(int cliente[100][3],int importe[50],int c[1]);
void error(void);
void final(void);
//funcion principal
void main(void)
{
clrscr();
principal();
}
//funcion que llama a todas las funciones
void principal()
{
char o=' ';
char peliculas[4][15]={"0","0","0","0"};
int sesiones[3]={0,0,0};
int salas[4]={0,0,0,0};
int cliente[100][3];
int importe[50];
int i,i1;
int c[1]={0};
//inicializa cliente
for(i=0;i<3;i++)
for(i1=0;i1<100;i1++)
cliente[i1][i]=0;
//inicializa importe
for(i=0;i<50;i++)
importe[i]=0;
inicio();
while(o!='4')
{
o=menu(o);
switch(o)
{
case '1':
o=menu1(peliculas,sesiones,salas);
break;
case '2':
o=menu2(peliculas,sesiones,cliente,importe,c);
break;
case '3':
o=menu3(cliente,importe,c);
break;
case '4':
final();
break;
default :
error();
}
}
}
//funcion crea un recuadro en la coordenadas indicadas
void recuadro(int x,int y,int x1,int y1)
{
int a,b;
for(a=x;a!=x1+1;a++)
for(b=y;b!=y1+1;b++)
{
gotoxy(a,b);
cprintf("Û");
}
}
//funcion para el menu principal
char menu(char o)
{
textbackground(0);
clrscr();
textcolor(4);
recuadro(26,8,56,18);
textbackground(4);
textcolor(15);
gotoxy(28,10);
cprintf("1.-Peliculas en proyeccion");
gotoxy(28,12);
cprintf("2.-Ventas");
gotoxy(28,14);
cprintf("3.-Resultados");
gotoxy(28,16);
cprintf("4.-Finalizar el programa");
if(o==' ')o=getch();
return o;
}
//menu primero
char menu1(char peliculas[4][15],int sesiones[3],int salas[4])
{
char o='0',pp='0';
int i,n;
textbackground(0);
textcolor(1);
recuadro(3,3,34,12);
textbackground(1);
textcolor(15);
gotoxy(4,4);
cprintf("1.-Dar de alta a 4 peliculas");
gotoxy(4,6);
cprintf("2.-Modificar una pelicula");
gotoxy(4,8);
cprintf("3.-Precios para las sesiones");
gotoxy(4,10);
cprintf("4.-Capacidad de las salas");
gotoxy(27,24);
cprintf("úPulse <SPACE> para regresarú");
o=getch();
switch(o)
{
//Dar de alta a 4 peliculas
case '1':
clrscr();
for(i=0;i<4;i++)
{
gotoxy(30,i+12);
cprintf("Introduzca Pelicula %i¦:",i+1);
gotoxy(53,i+12);
gets(peliculas[i]);
//gotoxy(53,i+12);
//printf(" ");
}
break;
//modificar una pelicula
case '2':
clrscr();
for(i=0;i<4;i++)
{
gotoxy(30,12+i);
cprintf("%i.-%s",i+1,peliculas[i]);
}
gotoxy(25,18);
cprintf("Introduzca pelicula a cambiar:");
scanf("%d",&n);
//se pone getchar porque sino no sale
getchar();
gotoxy(25,20);
cprintf("Introduzca nuevo nombre:");
gets(peliculas[n-1]);
break;
//poner los precios de las 3 sesiones
case '3':
clrscr();
for(i=0;i<3;i++)
{
gotoxy(30,i+12);
cprintf("Precio de la %i¦ Sesi¢n: ",i+1);
gotoxy(54,i+12);
scanf("%d",&sesiones[i]);
//gotoxy(53,12);
//printf(" ");
}
break;
//capacidad de las 4 salas
case '4':
clrscr();
for(i=0;i<4;i++)
{
if(i==0)pp='A';
if(i==1)pp='B';
if(i==2)pp='C';
if(i==3)pp='D';
gotoxy(30,i+12);
cprintf("Capacidad de sala %c:",pp);
gotoxy(52,i+12);
scanf("%i",&salas[i]);
//gotoxy(51,12);
//printf(" ");
}
break;
default :
if(o!=' ') error();
}
if(o==' ') return ' ';
else return '1';
}
//menu segundo
char menu2(char peliculas[4][15],int sesiones[3],int cliente[100][3],int importe[50],int c[1])
{
char pp;
int i,n,ent,sesi;
textbackground(2);
textcolor(15);
clrscr();
gotoxy(27,24);
cprintf("úPulse <SPACE> para regresarú");
printf("\t\t\t SELECCIONE UNA PELICULA");
for(i=0;i<4;i++)
{
if(i==0)pp='A';
if(i==1)pp='B';
if(i==2)pp='C';
if(i==3)pp='D';
gotoxy(10,5+i);
cprintf("%i.-%s EN LA SALA %c",i+1,peliculas[i],pp);
}
gotoxy(13,10);
cprintf("Elija pelicula:");
scanf("%i",&n);
cliente[c[1]][0]=n;
if(n==1)pp='A';
if(n==2)pp='B';
if(n==3)pp='C';
if(n==4)pp='D';
//clrscr();
printf("\t\t\t SELECCIONE UNA SESION");
gotoxy(18,13);for(i=0;i<3;i++)
{
gotoxy(39,15+i);
cprintf("%i.-%d",i+1,sesiones[i]);
}
gotoxy(42,19);
cprintf("Elija sesion:");
scanf("%i",&n);
cliente[c[1]][1]=n;sesi=n;
//clrscr();
printf("\t\t\t SELECCIONE UNA ENTRADA");
gotoxy(45,22);
cprintf("Numero de entradas:");
scanf("%i",&n);ent=n;
cliente[c[1]][2]=n;
clrscr();
//calculo del importe
importe[c[1]]=(cliente[c[1]][2])*(sesiones[cliente[c[1]][1]-1]);
gotoxy(34,9);
cprintf("PELICULA: %s en sala %c",peliculas[cliente[c[1]][0]],pp);
gotoxy(34,11);
cprintf("%i entradas para la %i¦ sesi¢n ",ent,sesi);
gotoxy(34,13);
cprintf("IMPORTE TOTAL:%i",importe[c[1]]);
c[1]++;
getch();
return ' ';
}
//menu tercero
char menu3(int cliente[100][3],int importe[50],int c[1])
{
char o='0';
int i;
int suma[4]={0,0,0,0},sumax[4]={0,0,0,0};
textbackground(0);
textcolor(3);
recuadro(49,14,80,24);
textbackground(3);
textcolor(15);
gotoxy(52,16);
cprintf("1.-Localidades por sala");
gotoxy(52,19);
cprintf("2.-Importe total de ventas");
gotoxy(52,22);
cprintf("3.-Localidades por sesion");
gotoxy(27,24);
cprintf("úPulse <SPACE> para regresarú");
o=getch();
switch(o)
{
case '1':
clrscr();
for(i=0;i<c[1]+1;i++)
{
if(cliente[i][0]==1) suma[0]=suma[0]+cliente[i][2];
if(cliente[i][0]==2) suma[1]=suma[1]+cliente[i][2];
if(cliente[i][0]==3) suma[2]=suma[2]+cliente[i][2];
if(cliente[i][0]==4) suma[3]=suma[3]+cliente[i][2];
}
for(i=0;i<4;i++)
sumax[i]=suma[i];
orden(sumax,suma);
for(i=1;i<5;i++)
{
gotoxy(30,12+i);
cprintf("Localidades de sala %i¦:%i",i,suma[i-1]);
}
getch();
break;
case '2':
clrscr();
for(i=0;i<c[1];i++)
{
suma[0]=suma[0]+importe[i];
}
gotoxy(35,10);
cprintf("Importe total:%i",suma[0]);
getch();
break;
case '3':
clrscr();
for(i=0;i<c[1]+1;i++)
{
if(cliente[i][1]==1) suma[0]=suma[0]+cliente[i][2];
if(cliente[i][1]==2) suma[1]=suma[1]+cliente[i][2];
if(cliente[i][1]==3) suma[2]=suma[2]+cliente[i][2];
}
for(i=1;i<4;i++)
{
gotoxy(30,12+i);
cprintf("Localidades de sesion %i¦:%i",i,suma[i-1]);
}
getch();
break;
default :
if(o!=' ') error();
}
if(o==' ') return ' ';
else return '3';
}
//error
void error()
{
textcolor(10);
gotoxy(32,2);
cprintf("Eleccion incorrecta");
getch();
printf(" ");
}
//pantalla de presentacion
void inicio()
{
char texto[12]={"BIENVENIDO"};
int x,y,z,pp,pa;
randomize();
z=(rand() %14)+1;
textcolor(z);
for(x=1;x<70;x++)
{
pp=x*20;
gotoxy(x,12);
cprintf(" %s",texto);
sound(pp);
delay(10);
nosound();
delay(25);
}
for(x=70;x>34;x--)
{
pp=x*20;
gotoxy(x,12);
cprintf("%s ",texto);
sound(pp);
delay(10);
nosound();
delay(25);
}
delay(1000);
for(y=13;y!=24;y++)
for(x=35;x<45;x=x+2)
{
pp=y*20;pa=x*100;
gotoxy(x,y-1);
cprintf(" ");
gotoxy(x,y);
cprintf("%c",texto[x-35]);
sound(pp);
delay(10);
nosound();
gotoxy(x+1,25-y);
cprintf(" ");
gotoxy(x+1,24-y);
cprintf("%c",texto[x-34]);
sound(pa);
delay(10);
nosound();
delay(50);
}
}
//final del programa
void final()
{
int x,y;
textbackground(0);
for(y=8;y<19;y++)
{
for(x=26;x<57;x++)
{
gotoxy(x,y);
cprintf(" ");
delay(10);
}
}
}
void orden(int numeros[4],int ordenado[4])
{
//int numeros[4]={1,5,6,4};
//int ordenado[4]={0,0,0,0};
int a=0,i,ind[4]={-1,-1,-1,-1};
clrscr();
while(a<4)
{
for(i=0;i<4;i++)
{
if((numeros[i]>ordenado[a])&&(ind[0]!=i)&&(ind[1]!=i)&&(ind[2]!=i))
{
ordenado[a]=numeros[i];
ind[a]=i;
}
}
a++;
}
for(i=0;i<4;i++)
{
printf("%i",ordenado[i]);
}
}