- /*
- * File: main.c
- * Author: leleobhz
- *
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- /* Mas hein? Declaracao estranha de ponteiro para array: http://eli.thegreenplace.net/2010/04/06/pointers-vs-arrays-in-c-part-2d/ */
- void assento_vago (int (*mtrz)[][5], int *linhalivre, int *colunalivre, int tipo)
- {
- int i;
- int j;
- int colunafinal;
- /* Executiva */
- if (tipo==1)
- {
- j=0;
- colunafinal=1;
- } else
- /* Peao :P */
- if (tipo==2)
- {
- j=2;
- colunafinal=4;
- }
- for (i=0;i<=3;i++)
- {
- for (j=0;j<=colunafinal;j++)
- {
- if (*mtrz[i][j]==0)
- {
- *linhalivre = i;
- *colunalivre = j;
- goto end;
- }
- }
- }
- end:;
- }
- void bilhete (int *linha, int *coluna)
- {
- /* Montar a string bonitinha */
- char assento[2];
- assento[0] = (char) *linha + 1;
- switch (*coluna)
- {
- case 0: assento[1]='A'; break;
- case 1: assento[1]='B'; break;
- case 2: assento[1]='C'; break;
- case 3: assento[1]='D'; break;
- case 4: assento[1]='E'; break;
- }
- /* POG: Tentar achar o windows pra ver como limpar a tela: Mea Culpa: Grosseria */
- #if defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__BORLANDC__)
- system("cls");
- #else
- fprintf(stdout, "\033[2J");
- fprintf(stdout, "\033[1;1H");
- #endif
- /* Cabia num printf so, mas pra ficar legal de ler*/
- printf("*********************************************************");
- printf("*\t\t\t\t\t\t\t*");
- printf("* Reserva de passagem aerea\t\t\t\t*");
- printf("*\t\t\t\t\t\t\t*");
- printf("*\t\t\t\t\t\t\t*");
- printf("* Assento reservado: %s\t\t\t\t\t*", assento);
- printf("*\t\t\t\t\t\t\t*");
- printf("*\t\t\t\t\t\t\t*");
- printf("*********************************************************");
- }
- int main(int argc, char** argv)
- {
- int i;
- int j;
- /* Sim, eu sei que são objetos separados */
- int linhalivre;
- int colunalivre;
- char opcao;
- /* Inicia matriz */
- int mtrz[4][5]={{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0} };
- printf ("Reserva de passagens\n\n");
- printf ("Para classe economica, digite 1\n");
- printf ("Para classe executiva, digite 2\n");
- /* Bem que tentei evitar o Enter no final, mas foi triste */
- opcao = getchar();
- switch (opcao)
- {
- case '1':
- assento_vago(&mtrz,&linhalivre,&colunalivre,2);
- *mtrz[linhalivre,colunalivre]=1;
- bilhete(&linhalivre,&colunalivre);
- break;
- case '2':
- assento_vago(&mtrz,&linhalivre,&colunalivre,1);
- *mtrz[linhalivre,colunalivre]=1;
- bilhete(&linhalivre,&colunalivre);
- break;
- default:
- break;
- }
- return (EXIT_SUCCESS);
- }