Advertisement
mixone

What does it do?

Jan 5th, 2015
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.75 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 5
  5. #define LIC 500
  6.  
  7. typedef struct pecas{
  8.         int valorbase;
  9.         int valorvendido;
  10.         char nome[100];
  11.         char descricao[100];
  12.         char tipo[10];
  13. }PECA;
  14.  
  15.  
  16. typedef struct licitacao{
  17.         int valorlicitacao;
  18.     char nomelicitador[50];
  19.         char nome2[100];
  20. }LICITACAO;
  21.  
  22.  
  23.  
  24. /* CASE 1*/
  25.  
  26. int inserir (PECA pecas[], int cont){
  27.         int x=0,y=0;
  28.  
  29. do{
  30.         y=0;
  31.         printf ("Introduza o nome da peca\n");
  32.         fflush (stdin);
  33.         gets (pecas[cont].nome);
  34.         for(x=0;x<cont;x++){
  35.                 if(strcmp(pecas[cont].nome,pecas[x].nome)==0){
  36.                         y=1;
  37.                 }
  38.         }
  39. }while(strcmp(pecas[cont].nome,"")==0 || y==1);
  40.  
  41.  
  42. do{
  43.         printf ("Introduza o tipo de peca (Quadro, Livro, Joia ou Escultura)\n");
  44.         fflush (stdin);
  45.         gets (pecas[cont].tipo);
  46. }while(stricmp(pecas[x].tipo,"Quadro")!=0 && stricmp(pecas[x].tipo,"Livro")!=0 && stricmp(pecas[x].tipo,"Joia")!=0 && stricmp(pecas[x].tipo,"Escultura")!=0);
  47.        
  48.  
  49. do{
  50.         printf ("Introduza o valor base\n");
  51.         scanf ("%i",&pecas[cont].valorbase);
  52.        
  53. }       while(pecas[cont].valorbase<=0);
  54.        
  55.        
  56.         printf ("Introduza uma breve descricao\n");
  57.         fflush (stdin);
  58.         gets (pecas[cont].descricao);
  59.        
  60.        
  61.        
  62.         return (cont+1);
  63.        
  64. }
  65.  
  66.  
  67.  
  68. /* CASE 2 */
  69.  
  70. void listartudo(PECA pecas[], int cont){
  71.         int x=0;
  72.     for(x=0;x<cont;x++){
  73.         printf("\n\nNome: %s\nTipo: %s\nValor base: %i\nDescricao: %s\n",pecas[x].nome,pecas[x].tipo,pecas[x].valorbase,pecas[x].descricao);
  74.     }
  75. }
  76.  
  77.  
  78.  
  79. /* CASE 3 */
  80.  
  81. int licitar(PECA pecas[], int cont, LICITACAO licitacao[], int contl){
  82.         int x=0,y=0,w=0,maiorl=0,i=0,k=0,t=0;
  83.         if(cont>0){
  84.     do{
  85.     printf("Introduza o nome do licitador \n");
  86.     fflush(stdin);
  87.     gets(licitacao[contl].nomelicitador);
  88.     }
  89.     while(strcmp(licitacao[contl].nomelicitador,"")==0);
  90.     printf("Introduza o nome da peca em que prentende licitar \n");
  91.     fflush(stdin);
  92.     gets(licitacao[contl].nome2);
  93.     for(i=0;i<cont;i++){
  94.     if(strcmp(licitacao[contl].nome2,pecas[i].nome)==0){
  95.         y=1;
  96.         w=i;
  97.         k=1;
  98.     }
  99.     }
  100.     if(k!=1){
  101.     do{
  102.     printf("Nome nao disponivel, introduza novamente \n");
  103.     fflush(stdin);
  104.     gets(licitacao[contl].nome2);
  105.     for(i=0;i<contl;i++){
  106.     if(strcmp(licitacao[contl].nome2,pecas[i].nome)==0){
  107.         y=1;
  108.         w=i;
  109.     }
  110.     }
  111.     }while(strcmp(licitacao[contl].nome2,"")==0 || y!=0);}
  112.    
  113.     maiorl=pecas[w].valorbase;
  114.     for(i=0;i<contl;i++){
  115.     if(strcmp(licitacao[i].nome2,pecas[w].nome)==0){
  116.         if(licitacao[i].valorlicitacao>maiorl){
  117.             maiorl=licitacao[i].valorlicitacao;
  118.         }
  119.     }
  120.     }
  121.     if(pecas[w].valorvendido==0){
  122.         t=0;
  123.     while(licitacao[contl].valorlicitacao<=0 || t==0){
  124.         printf("Introduza a licitacao maior que %i \n : ", maiorl);
  125.         fflush(stdin);
  126.         scanf("%i", &licitacao[contl].valorlicitacao);
  127.         if(licitacao[contl].valorlicitacao>maiorl){
  128.             t=1;
  129.         }
  130.     }
  131.     }
  132. else{
  133.     printf("A peca introduzida nao se encontra disponivel \n");
  134. }
  135.        
  136.  
  137. }else{
  138.         printf(" nao ha pecas para licitar");
  139. }
  140.         return (contl+1);
  141. }
  142.  
  143.  
  144.  
  145. /* CASE 4 */
  146.  
  147. void listarlics(LICITACAO licitacao[], int contl){
  148.         int x=0;
  149.         if(contl>0){
  150.                 for(x=0;x<contl;x++){
  151.                 printf ("Nome: %s\nNome Licitador: %s\nValor licitacao: %i\n\n",licitacao[x].nome2,licitacao[x].nomelicitador,licitacao[x].valorlicitacao);
  152.         }
  153.         }else{
  154.                 printf("ainda nao foram feitas licitacoes");
  155.         }
  156. }
  157.  
  158.  
  159.  
  160. /* CASE 5 */
  161.  
  162. void listarlicpeca(LICITACAO licitacao[], int contl, int cont,PECA pecas[]){
  163.     int x=0,i=0,y=0;
  164.     char nome[50];
  165.     if(contl>0){
  166.         printf("Introduza o nome da peca \n");
  167.     fflush(stdin);
  168.     gets(nome);
  169.     for(x=0;x<contl;x++){
  170.     if(strcmp(nome,licitacao[x].nome2)==0){
  171.     printf("licitador: %s\npeca: %s\nlicitacao: %i \n\n", licitacao[x].nomelicitador, licitacao[x].nome2, licitacao[x].valorlicitacao);
  172.     y=1;
  173.        }
  174.        if(y==0){
  175.                         printf("a peca ainda nao foi licitada");
  176.        }
  177. }
  178.     }
  179. }
  180.  
  181.  
  182.  
  183. /* CASE 6 */
  184.  
  185. int fecharleilao(PECA pecas[], LICITACAO licitacao[], int cont, int contl,int *soma){
  186.     int x=0, maiorlic=0, maiorlicfinal=0,y=0;
  187.     char pecaescolhida[100];
  188.     system("cls");
  189.     printf ("Introduza o nome da peca que deseja encerrar o leilao: \n");
  190.     fflush(stdin);
  191.     gets(pecaescolhida);
  192.     for(x=0;x<contl;x++){
  193.         if(strcmp(pecaescolhida,licitacao[x].nome2)==0){
  194.             if(licitacao[x].valorlicitacao>maiorlic){
  195.                 maiorlic=licitacao[x].valorlicitacao;
  196.                 maiorlicfinal=x;
  197.                 y=1;
  198.             }
  199.         }
  200.     }
  201.     for(x=0;x<cont;x++){
  202.         if(strcmp(pecaescolhida,licitacao[x].nome2)==0){
  203.             pecas[x].valorvendido=maiorlic;
  204.         }
  205.         *soma+=pecas[x].valorvendido;
  206.     }
  207.     if(y==1){
  208.         printf ("A peca %s foi vendida a %s por %i euros \n", pecaescolhida, licitacao[maiorlicfinal].nomelicitador, maiorlic);
  209.        
  210.     }else{
  211.         printf("a peca introduzida e invalida");
  212.     }
  213.    
  214.     return *soma;
  215. }
  216.  
  217.  
  218.  
  219. /* CASE 8 */
  220.  
  221. void iva(PECA pecas[], int cont){
  222. int x=0;
  223. float iva=0;
  224.     for(x=0;x<cont;x++){
  225.         if(pecas[x].valorvendido>0){
  226.                  if(stricmp(pecas[x].tipo,"Quadro")==0 || stricmp(pecas[x].tipo,"Joia")==0 || stricmp(pecas[x].tipo,"Escultura")==0){
  227.             iva+=pecas[x].valorvendido*0.23;
  228.         }
  229.         else{
  230.             iva+=pecas[x].valorvendido*0.06;
  231.         }
  232.     }
  233.         }
  234.        
  235.     printf ("O total de IVA a pagar e de %.2f \n", iva);
  236. }
  237.  
  238.  
  239.  
  240. /* CASE 9 */
  241.  
  242. void pecasnaovendidas(PECA pecas[], int cont){
  243. int x=0,y=0;
  244.     for(x=0;x<cont;x++){
  245.         if(pecas[x].valorvendido==0){
  246.                 printf ("Nome: %s\nTipo: %s\nDescricao: %s\nValor base: %i\n\n", pecas[x].nome, pecas[x].tipo, pecas[x].descricao, pecas[x].valorbase);
  247.                 y=1;
  248.         }
  249.         if(y==0){
  250.             printf ("As pecas foram todas vendidas \n");
  251.         }
  252.     }
  253. }
  254.  
  255. /* CASE 10 */
  256.  
  257. void pecasvendidas(PECA pecas[], int cont){
  258.         int x=0,y=0;
  259.     for(x=0;x<cont;x++){
  260.         if(pecas[x].valorvendido>0){
  261.                 printf ("Nome: %s\nTipo: %s\nDescricao: %s\nValor base: %i\nValor final: %i\n\n", pecas[x].nome, pecas[x].tipo, pecas[x].descricao, pecas[x].valorbase,pecas[x].valorvendido);
  262.                 y=1;
  263.                 }
  264.                 if(y==0){
  265.                         printf("nao foi vendida nenhuma peca");
  266.                 }
  267.     }
  268. }
  269.  
  270.  
  271.  
  272. /* CASE 11 */
  273.  
  274. void pecasportipo(PECA pecas[], int cont){
  275.         int x=0,y=0;
  276.         char tipo[50];
  277.     printf ("Introduza o tipo de peca\n");
  278.     fflush(stdin);
  279.     gets(tipo);
  280.     for(x=0;x<cont;x++){
  281.         if(strcmp(tipo,pecas[x].tipo)==0){
  282.                 printf("Nome: %s\nTipo: %s\nDescricao: %s\nValor base: %i\n\n", pecas[x].nome, pecas[x].tipo, pecas[x].descricao, pecas[x].valorbase);
  283.                 y=1;
  284.         }
  285.         if(y==0){
  286.                 printf("ERRO: tipo de peca introduzido invalido \n");
  287.         }
  288.         }
  289. }
  290.  
  291.  
  292.  
  293. /* CASE 12 */
  294.  
  295. void mediapecasvendidas(PECA pecas[], int cont){
  296.         int x=0, soma=0;
  297.         float media=0;
  298.         if(cont>0){
  299.                 for(x=0;x<cont;x++){
  300.         if(pecas[x].valorvendido>0){
  301.                 soma=soma+pecas[x].valorvendido;
  302.                 media=soma/cont;
  303.         }
  304.     }
  305.     printf ("Valor medio de venda das pecas = %.2f \n", media);
  306.        
  307.         }else{
  308.                 printf("nao inseridas pecas");
  309.         }
  310.    
  311. }
  312.  
  313.  
  314.  
  315. /* CASE 13 */
  316.  
  317. void medialicitacoespecasvendidas(LICITACAO licitacao[], PECA pecas[], int cont, int contl){
  318. int x=0, soma=0;
  319. float media=0;
  320. if(contl>0){
  321.         for(x=0;x<cont;x++){
  322.         if(pecas[x].valorvendido>0){
  323.             soma=soma+licitacao[x].valorlicitacao;
  324.             media=soma/contl;
  325.         }
  326.     }
  327.     printf("Media das licitacoes das pecas vendidas = %.2f \n", media);
  328. }else{
  329.                 printf("ainda nao foram feitas licitacoes");
  330. }
  331.    
  332. }
  333.  
  334. /* main */
  335.  
  336. int main(int argc, char *argv[]) {
  337.     int opcao=0,cont=0,contl=0,soma=0;
  338.     PECA pecas[MAX];
  339.     LICITACAO licitacao[LIC];
  340.     do {
  341.         printf ("\n\n***   LEILAO   ***\n\n");
  342.         printf (" 1- Inserir peca\n 2- Listar pecas\n 3- Fazer licitacao\n 4- Listar licitacoes\n 5- Listar licitacoes de uma peca\n 6- Fechar leilao\n 7- Dinheiro recebido\n");
  343.         printf (" 8- IVA a pagar\n 9- Listar pecas nao vendidas\n10- Listar pecas vendidas\n11- Listar pecas de uma categoria\n12- Valor media das pecas\n13- Licitacao media\n 0- Sair\n\n");
  344.         printf ("Selecione uma opcao:\n"); scanf ("%i",&opcao);
  345.         switch(opcao){
  346.             case 1:
  347.                                 system("cls");
  348.                 cont = inserir (pecas,cont);
  349.                 break;
  350.                                
  351.             case 2:
  352.                 listartudo(pecas,cont);
  353.                 break;
  354.                            
  355.             case 3:
  356.                 contl = licitar(pecas,cont,licitacao,contl);
  357.                 break;
  358.                            
  359.             case 4:
  360.                 listarlics(licitacao,contl);
  361.                 break;
  362.                        
  363.             case 5:
  364.                 listarlicpeca(licitacao,contl,cont,pecas);
  365.                 break;
  366.                                
  367.             case 6:
  368.                 fecharleilao(pecas,licitacao,cont,contl,&soma);
  369.                                 break;
  370.        
  371.                         case 7:
  372.                                 printf ("Soma de todas as licitacoes= %i",soma);
  373.                                 break;
  374.                                
  375.                         case 8:
  376.                                 iva(pecas,cont);
  377.                                 break;
  378.                                                
  379.             case 9:
  380.                 pecasnaovendidas(pecas,cont);
  381.                 break;
  382.                              
  383.             case 10:
  384.                 pecasvendidas(pecas,cont);
  385.                 break;
  386.                                
  387.             case 11:
  388.                 pecasportipo(pecas,cont);
  389.                 break;
  390.                                
  391.             case 12:
  392.                 mediapecasvendidas(pecas,cont);
  393.                 break;
  394.                                
  395.             case 13:
  396.                 medialicitacoespecasvendidas(licitacao,pecas,cont,contl);
  397.                 break;
  398.         }
  399.     }
  400.         while(opcao!=0);
  401.         return 0;
  402. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement