Advertisement
Draegon

LP1 Trabalho Extra (Elcius)

Oct 5th, 2014
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 14.70 KB | None | 0 0
  1. /****************************************************************************
  2.  * Autor: Elcius Ferreira Barbosa Júnior                                    *
  3.  * Data: 04/10/2014                                                         *
  4.  * LP1 (2014.2): Trabalho extra.                                            *
  5.  * Instruções: Este programa foi executado e compilado no Windows 7 sendo   *
  6.  *             a IDE usada na criação o Code::Blocks,que possui o compilador*
  7.  *             MinGW.                                                       *
  8.  *                                                                          *
  9.  ****************************************************************************/
  10.  
  11. /* Inclusão das bibliotecas utilizadas. */
  12. #include <stdio.h>  
  13. #include <stdlib.h>
  14.  
  15. /* Definição de algumas constantes simbólicas. */
  16. #define TIME 25000
  17. #define TIME2 15000
  18.  
  19. /* Início da função principal. */
  20. int main()
  21. {
  22.    
  23. int opcao,i,j,q,g,comp,aux=1,aux2=0;   // Declaração das variáveis inteiras do programa.
  24. float valormenor,ano;   // Declaração das variáveis reais do programa.
  25.  
  26. system("color 4f");  // Alteração da cor do prompt.
  27.  
  28. /* Declaração da estrutura de cadastro. */
  29. typedef struct {  
  30.    char marca[10]; // Elemento da estrutura referente às marcas dos carros.
  31.    int ano;   // Elemento da estrutura referente aos anos dos carros.
  32.    char cor[10];   // Elemento da estrutura referente às cores dos carros.
  33.    float preco;  // Elemento da estrutura referente ao preço dos carros.
  34.    }cadastro;  // Nome dado à estrutura.
  35.  
  36. cadastro cad[10];  // Declaração do array cujo tipo é definido pela estrutura criada.
  37.  
  38. /* Apresentação do programa e do seu objetivo ao usuário. */
  39. printf ("|------------------------------------------------------------------------------|");
  40. printf ("|ESTE PROGRAMA PROPORCIONA O CADASTRO DE 10 CARROS E A CONSULTA DOS MESMOS.PARA|"); f
  41. printf ("|UTILIZA-LO, SIGA O MENU ABAIXO:                                               |");
  42. printf ("|------------------------------------------------------------------------------|");
  43.  
  44. /* Temporização. */
  45. for ( i=0 ; i<=TIME ; ++i)    
  46. for ( j=0 ; j<=TIME ; ++j) {}
  47. for ( i=0 ; i<=TIME ; ++i)
  48. for ( j=0 ; j<=TIME ; ++j) {}
  49.  
  50. /* Apresentação do menu com as opções disponíveis ao usuário. */
  51. menu:
  52. printf ("\n*************************************MENU***************************************\n");
  53. printf ("\n DIGITE O NUMERO DA OPCAO DESEJADA.\n");
  54. printf ("\n OPCAO 1 > CADASTRAR CARROS.");                                              
  55. printf ("\n OPCAO 2 > DIGITE UM VALOR E CONSULTE OS CARROS DE VALOR MENOR OU IGUAL.");
  56. printf ("\n OPCAO 3 > DIGITE UM ANO E CONSULTE OS CARROS DE ANO MAIOR OU IGUAL.");
  57. printf ("\n OPCAO 4 > ENCERRAR O PROGRAMA.\n");
  58. printf ("\n********************************************************************************\n");
  59.  
  60. /* Temporização. */
  61. for ( i=0 ; i<=TIME ; ++i)    
  62. for ( j=0 ; j<=TIME ; ++j) {}
  63.  
  64. printf ("\n DIGITE O NUMERO DA SUA OPCAO AQUI: ");   // Solicitação de uma opção ao usuário.
  65. scanf ("%d", &opcao);  // Leitura da opção introduzida pelo usuário referente às opções do menu.
  66.  
  67. system("cls");  // Limpeza da tela
  68.  
  69. if (opcao < 1 || opcao > 4) {   // Eliminação de opções não disponíveis no menu.
  70.     /* Temporização. */    
  71.     for ( i=0 ; i<=TIME2 ; ++i)
  72.     for ( j=0 ; j<=TIME2 ; ++j) {}
  73.     printf ("\n OPCAO INVALIDA!\n");
  74.     /* Temporização. */
  75.     for ( i=0 ; i<=TIME ; ++i)  
  76.     for ( j=0 ; j<=TIME ; ++j) {}
  77.     for ( q=0 ; q<=TIME2 ; ++q)
  78.     for ( g=0 ; g<=TIME2 ; ++g) {}
  79.     goto menu; }  // Retorno ao menu para introdução de uma opção válida.
  80.  
  81. /* Switch case referente às opções do menu. */
  82.  switch (opcao) {
  83.      
  84.   /* Case 1 referente à opção de cadastro. */
  85.   case 1:  
  86.      cadastro:
  87.          
  88.       for ( i=0 ; i<10 ; ++i) {   // Laço para o preenchimento de 10 carros.
  89.         printf ("\n DIGITE A MARCA DO CARRO: ");  // Solicitação das marcas dos carros.
  90.         scanf ("%s", &cad[i].marca);   // Leitura das marcas.
  91.  
  92.         printf ("\n DIGITE O ANO DO CARRO: ");  // Solicitação dos anos dos carros.
  93.         scanf ("%d", &cad[i].ano);   // Leitura dos anos.
  94.  
  95.         printf ("\n DIGITE A COR DO CARRO: "); // Solicitação das cores dos carros.
  96.         scanf ("%s", &cad[i].cor);  // Leitura das cores.
  97.  
  98.         printf ("\n DIGITE O PRECO DO CARRO: ");  // Solicitação dos preços dos carros.
  99.         scanf ("%f", &cad[i].preco);  // Leitura dos preços..
  100.         printf ("\n********************************************************************************\n");
  101.         /* Temporização. */
  102.         for ( q=0 ; q<=TIME2 ; ++q)
  103.         for ( g=0 ; g<=TIME2 ; ++g) {}  
  104.  
  105.       }
  106.      
  107.       system("cls"); // Limpeza da tela
  108.      
  109.       for (i=0 ; i<10 ; i++) {   // Laço para impressão em tela dos dados dos 10 carros cadastrados.
  110.         printf ("\n********************************************************************************\n");
  111.         printf ("\n\tDADOS CADASTRADOS\n");
  112.         /* Temporização. */
  113.         for ( q=0 ; q<=TIME ; ++q)
  114.         for ( g=0 ; g<=TIME ; ++g) {}  
  115.        
  116.         printf ("\n   %d", aux + i);  // Numeração dos carros cadastrados.
  117.         printf ("\n\tMARCA DO CARRO: %s\n", cad[i].marca);  // Impressão das marcas dos carros.
  118.         printf ("\n\tANO DO CARRO: %i\n", cad[i].ano);   // Impressão dos anos dos carros.
  119.         printf ("\n\tCOR DO CARRO: %s\n", cad[i].cor);   // Impressão das cores dos carros.
  120.         printf ("\n\tPRECO DO CARRO: %0.1f\n", cad[i].preco);   // Impressão dos preços dos carros.
  121.         printf ("\n********************************************************************************\n");
  122.  
  123.       }
  124.      
  125.       aux2=1; // Variável usada para confirmar ao programa que a opção 1 do menu já foi acessada e o cadastramento realizado.
  126.    
  127.       /* Temporização. */
  128.       for ( q=0 ; q<=TIME ; ++q)
  129.       for ( g=0 ; g<=TIME ; ++g) {}
  130.        
  131.       goto menu;  // Direcionamento ao menu para a possibilidade de escolha das outras opções.
  132.       break;
  133.  
  134.   /*Case referente à opção de consulta a partir de um valor introduzido pelo usuário. */
  135.   case 2:  
  136.      
  137.       /* If usado para informar ao usuário que para acessar a opção 2 é necessário primeiro realizar o cadastro dos carros. */
  138.       if (aux2==0) {   // Se a variável aux2 ainda obtiver o valor zero, o usuário é direcionado ao cadastro.
  139.            
  140.           printf ("|----------------------------------------------------------------------------|");
  141.           printf ("\n|PARA ACESSAR ESSA OPCAO EH NECESSARIO QUE A OPCAO 1 DO MENU SEJA SELECIONADA|");
  142.           printf ("\n|PRIMEIRO,OU SEJA, EH NECESSARIO QUE OS CARROS JA ESTEJAM CADASTRADOS. COMO  |");
  143.           printf ("\n|AINDA NAO FORAM CADASTRADOS VOCE SERA REDIRECIONADO(A) PARA O CADASTRAMENTO.|");
  144.           printf ("\n|E EM SEGUIDA PODERA ACESSAR A OPCAO 2 NORMALMENTE!                          |\n");
  145.           printf ("|----------------------------------------------------------------------------|");
  146.      
  147.           /* Temporização. */
  148.           for ( i=0 ; i<=TIME ; ++i)    
  149.           for ( j=0 ; j<=TIME ; ++j) {}
  150.           for ( i=0 ; i<=TIME ; ++i)    
  151.           for ( j=0 ; j<=TIME ; ++j) {}
  152.  
  153.           printf ("\n DIRECIONANDO PARA O CADASTRO");  
  154.          
  155.           /* Temporização. */  
  156.           for ( q=0 ; q<=TIME2 ; ++q)
  157.           for ( g=0 ; g<=TIME2; ++g) {}  
  158.           printf (".");
  159.           for ( q=0 ; q<=TIME2 ; ++q)
  160.           for ( g=0 ; g<=TIME2; ++g) {}
  161.           printf (".");
  162.           for ( q=0 ; q<=TIME2 ; ++q)
  163.           for ( g=0 ; g<=TIME2; ++g) {}  
  164.           printf (".\n");
  165.           for ( q=0 ; q<=TIME2 ; ++q)
  166.           for ( g=0 ; g<=TIME2; ++g) {}
  167.  
  168.           goto cadastro;  // Direcionamento.
  169.           }
  170.          
  171.      /* If que garante que o usuário já cadastrou os carros na opção 1 do menu. */
  172.      if ( aux2 ==1 ) {  // Se a variável possui o valor de um, temos a certeza de que os carros já foram cadastrados.
  173.  
  174.            printf("\n DIGITE O VALOR PARA A CONSULTA: ");   // Solicitação do valor para a consulta.
  175.            scanf ("%f", &valormenor);  // Leitura do valor inserido.
  176.            
  177.            printf ("\n CONSULTANDO");
  178.            /* Temporização. */
  179.            for ( q=0 ; q<=TIME2 ; ++q)
  180.            for ( g=0 ; g<=TIME2; ++g) {}
  181.            printf (".");
  182.            for ( q=0 ; q<=TIME2 ; ++q)
  183.            for ( g=0 ; g<=TIME2; ++g) {}  
  184.            printf (".");
  185.            for ( q=0 ; q<=TIME2 ; ++q)
  186.            for ( g=0 ; g<=TIME2; ++g) {}
  187.            printf (".\n");
  188.            for ( q=0 ; q<=TIME2 ; ++q)
  189.            for ( g=0 ; g<=TIME2; ++g) {}
  190.            
  191.            /* Laço usado para imprimir em tela os carros que possuem valor menor do que o valor inserido na opção 2. */
  192.            for ( i=0 ; i<10; ++i) {  
  193.             if ( valormenor >= cad[i].preco ) {
  194.             printf ("\n> %s  %i  %s  %0.1f\n", cad[i].marca,cad[i].ano, cad[i].cor,cad[i].preco); }  }
  195.            
  196.             /* Conjunto que garante ao usuário que não há carros com preço menor do que o valor inserido na opção 2. */
  197.             if ( valormenor < cad[0].preco ) {      
  198.                if ( valormenor < cad[1].preco ) {  
  199.                     if ( valormenor < cad[2].preco ){
  200.                         if ( valormenor < cad[3].preco ){
  201.                             if ( valormenor < cad[4].preco ){
  202.                                 if ( valormenor < cad[5].preco ){
  203.                                     if ( valormenor < cad[6].preco ) {
  204.                                         if ( valormenor < cad[7].preco ){
  205.                                             if ( valormenor < cad[8].preco ){
  206.                                                 if ( valormenor < cad[9].preco ){
  207.                                                     printf ("\n > NENHUM CARRO DISPONIVEL.\n");} } } } } } } } } }
  208.          /* Temporização. */                                              
  209.          for ( q=0 ; q<=TIME ; ++q)
  210.          for ( g=0 ; g<=TIME ; ++g) {}  
  211.          goto menu; }  // Retorno ao menu para a possibilidade de escolha de uma nova opção do mesmo.
  212.          
  213.       break;
  214.      
  215.   /* Case referente à opção de consulta a partir do ano inserido pelo usuário. */
  216.   case 3:
  217.      
  218.       /* If usado para informar ao usuário que para acessar a opção 3 é necessário primeiro realizar o cadastro dos carros. */
  219.       if (aux2==0) {  // Se a variável aux2 ainda obtiver o valor zero, o usuário é direcionado ao cadastro.
  220.         printf ("|----------------------------------------------------------------------------|");
  221.         printf ("\n|PARA ACESSAR ESSA OPCAO EH NECESSARIO QUE A OPCAO 1 DO MENU SEJA SELECIONADA|");
  222.         printf ("\n|PRIMEIRO,OU SEJA, EH NECESSARIO QUE OS CARROS JA ESTEJAM CADASTRADOS. COMO  |");
  223.         printf ("\n|AINDA NAO FORAM CADASTRADOS VOCE SERA REDIRECIONADO(A) PARA O CADASTRAMENTO.|");
  224.         printf ("\n|E EM SEGUIDA PODERA ACESSAR A OPCAO 3 NORMALMENTE!                          |\n");
  225.         printf ("|----------------------------------------------------------------------------|");
  226.  
  227.         /* Temporização. */
  228.         for ( i=0 ; i<=TIME ; ++i)    
  229.         for ( j=0 ; j<=TIME ; ++j) {}
  230.         for ( i=0 ; i<=TIME ; ++i)    
  231.         for ( j=0 ; j<=TIME ; ++j) {}
  232.         printf ("\n");
  233.         printf ("\n DIRECIONANDO PARA O CADASTRO");
  234.  
  235.         /* Temporização. */
  236.         for ( q=0 ; q<=TIME2 ; ++q)
  237.         for ( g=0 ; g<=TIME2; ++g) {}  
  238.         printf (".");
  239.         for ( q=0 ; q<=TIME2 ; ++q)
  240.         for ( g=0 ; g<=TIME2; ++g) {}
  241.         printf (".");
  242.         for ( q=0 ; q<=TIME2 ; ++q)
  243.         for ( g=0 ; g<=TIME2; ++g) {}  
  244.         printf (".\n");
  245.         for ( q=0 ; q<=TIME2 ; ++q)
  246.         for ( g=0 ; g<=TIME2; ++g) {}
  247.  
  248.         goto cadastro;  // Direcionamento.
  249.           }
  250.          
  251.      /* If que garante que o usuário já cadastrou os carros na opção 1 do menu. */
  252.      if ( aux2 ==1 ) {   // Se a variável possui o valor de um, temos a certeza de que os carros já foram cadastrados.
  253.  
  254.       printf("\n DIGITE O ANO PARA A CONSULTA: ");  // Solicitação do ano para a consulta.
  255.       scanf ("%f", &ano);  // Leitura do ano inserido.
  256.  
  257.       printf ("\n CONSULTANDO");
  258.       /* Temporização. */
  259.       for ( q=0 ; q<=TIME2 ; ++q)
  260.       for ( g=0 ; g<=TIME2; ++g) {}
  261.       printf (".");
  262.       for ( q=0 ; q<=TIME2 ; ++q)
  263.       for ( g=0 ; g<=TIME2; ++g) {}
  264.       printf (".");
  265.       for ( q=0 ; q<=TIME2 ; ++q)    
  266.       for ( g=0 ; g<=TIME2; ++g) {}
  267.       printf (".\n");
  268.       for ( q=0 ; q<=TIME2 ; ++q)
  269.       for ( g=0 ; g<=TIME2; ++g) {}
  270.  
  271.       /* Laço usado para imprimir em tela os carros que possuem anor maior do que o ano inserido na opção 2. */
  272.       for ( i=0 ; i<10; ++i) {  
  273.         if (ano <= cad[i].ano ) {
  274.             printf ("\n> %s  %i  %s  %0.1f\n", cad[i].marca,cad[i].ano, cad[i].cor,cad[i].preco);
  275.         }
  276.       }
  277.      
  278.       /* Conjunto que garante ao usuário que não há carros com ano maior do que o ano inserido na opção 3. */
  279.       if ( ano > cad[0].ano ) {  
  280.             if ( ano > cad[1].ano ) {  
  281.                     if ( ano > cad[2].ano ){
  282.                         if ( ano > cad[3].ano ){
  283.                             if ( ano > cad[4].ano ){
  284.                                 if ( ano > cad[5].ano ){
  285.                                     if ( ano > cad[6].ano ) {
  286.                                         if ( ano > cad[7].ano ){
  287.                                             if ( ano > cad[8].ano ){
  288.                                                 if ( ano > cad[9].ano ){
  289.                                                     printf ("\n > NENHUM CARRO DISPONIVEL.\n");} } } } } } } } } }
  290.                                                    
  291.       /* Temporização. */
  292.       for ( q=0 ; q<=TIME ; ++q)
  293.       for ( g=0 ; g<=TIME ; ++g) {}
  294.       goto menu; }   // Retorno ao menu para a possibilidade de escolha de uma nova opção do mesmo.
  295.      
  296.       break;
  297.      
  298.   /* Case referente à opção de encerramento do programa. */
  299.   case 4:  
  300.      
  301.       /* Temporização. */
  302.       for ( q=0 ; q<=TIME ; ++q)
  303.       for ( g=0 ; g<=TIME ; ++g) {}
  304.       printf ("\n O PROGRAMA SERA ENCERRADO");  
  305.       for ( q=0 ; q<=TIME2 ; ++q)
  306.       for ( g=0 ; g<=TIME2; ++g) {}  
  307.       printf (".");
  308.       for ( q=0 ; q<=TIME2 ; ++q)
  309.       for ( g=0 ; g<=TIME2; ++g) {}
  310.       printf (".");
  311.       for ( q=0 ; q<=TIME2 ; ++q)
  312.       for ( g=0 ; g<=TIME2; ++g) {}  
  313.       printf (".\n");
  314.       for ( q=0 ; q<=TIME ; ++q)
  315.       for ( g=0 ; g<=TIME; ++g) {}
  316.      
  317.       goto fim;  // Direcionamento para o fim da função principal.
  318.       break;
  319. }
  320.     /* Fim da função principal. */
  321.     fim:
  322.     return 0;
  323. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement