Advertisement
Guest User

Untitled

a guest
Jun 5th, 2017
548
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.47 KB | None | 0 0
  1. /*
  2.  Catalogo de Livraria
  3. Exemplo de como usar "Arrays with Struct" em C
  4.  
  5.  Autor: Cooler_
  6.  contato: c00f3r@gmail.com , tony.unix@yahoo.com.br
  7.  webSite: BotecoUnix.com.br
  8. erro
  9. catalogo5.c: In function ‘main’:
  10. catalogo5.c:104: error: invalid operands to binary ^ (have ‘struct livro’ and ‘struct livro’)
  11. catalogo5.c:104: error: expected ‘)’ before ‘;’ token
  12.  
  13. */
  14. #include <stdio.h>
  15. #include <string.h>
  16. #include <stdlib.h>
  17. #define SWAP(x, y) (x ^= y; y^= x; x^= y)
  18. #define MAX 100          
  19.  
  20. void opcao_menu() {
  21.  int i;
  22.  char *banner[] = {
  23.   "-----------------------------------------------------------",
  24.   "Programa Livraria",
  25.   "coded by Cooler_",
  26.   "(1)Listar",
  27.   "(2)Adicionar ",
  28.   "(3)Procurar livro",
  29.   "(4)Remover livro",
  30.   "(5)Mostrar dados em Ordem Alfabética usando QuickSort",
  31.   "(6)Fim",
  32.   "-----------------------------------------------------------",
  33.  };
  34.  for(i=0; i<=9; i++) printf("%s\n",banner[i]);
  35. }
  36.  
  37. int sort_char( const void *a, const void *b) {
  38.  return( strcmp(a,b) );
  39. }
  40.  
  41. struct livro {                  
  42.  char titulo[MAX];
  43.  char autor[MAX];
  44.  float valor;
  45. };
  46.  
  47. int main() {
  48.  int op=0;  
  49.  struct livro livraria[MAX], pon;  
  50.  int count=0;
  51.  int x,index;
  52.  char achar[MAX];
  53.  
  54.  while(op!=6)
  55.  {
  56.   opcao_menu();
  57.   scanf("%d",&op); getchar();
  58.  
  59.   switch(op)
  60.   {
  61.    case 1:
  62.     printf("Listando livros:\n");
  63.     for (index = 0; index < count; index++)
  64.      printf("%s de %s , valor: $%.2f\n", livraria[index].titulo,
  65.           livraria[index].autor, livraria[index].valor);
  66.     break;
  67.  
  68.    case 2:
  69.     printf("Digite Titulo do livro.\n");
  70.      fgets(livraria[count].titulo,sizeof(livraria[count].titulo),stdin);
  71.      livraria[count].titulo[strlen(livraria[count].titulo)-1] = '\0';
  72.     printf("Digite o autor.\n");
  73.      fgets(livraria[count].autor,sizeof(livraria[count].autor),stdin);
  74.      livraria[count].autor[strlen(livraria[count].autor)-1] = '\0';
  75.     printf("Digite o valor.\n");
  76.      scanf("%f", &livraria[count++].valor);
  77.      while (getchar() != '\n') continue;              
  78.     break;
  79.  
  80.    case 3:
  81.     printf("Digite Titulo do livro a procurar.\n");
  82.      fgets(achar,sizeof(achar),stdin);
  83.      achar[strlen(achar)-1] = '\0';  
  84.     for (index = 0; index < count; index++)
  85.     {
  86.       if(strstr(livraria[index].titulo, achar) != NULL)
  87.        printf("%s de %s , valor: $%.2f\n", livraria[index].titulo,
  88.           livraria[index].autor, livraria[index].valor);
  89.     }        
  90.     break;
  91.  
  92.    case 4:
  93.     x=1;
  94.     printf("Digite Titulo do livro a deletar.\n");
  95.      fgets(achar,sizeof(achar),stdin);
  96.      achar[strlen(achar)-1] = '\0';  
  97.     for (index = 0; index < count; index++)
  98.     {
  99.       if(strstr(livraria[index].titulo, achar) != NULL)
  100.       {  
  101.        printf("dado a ser removido \n %s de %s , valor: $%.2f\n", livraria[index].titulo,
  102.        livraria[index].autor, livraria[index].valor);
  103. /*
  104.        pon=livraria[index];
  105.        livraria[index]=livraria[index+1];
  106.        livraria[index+1]=pon;
  107. */
  108.        SWAP(livraria[index], livraria[index+1]);
  109.        x=0;
  110.       }
  111.     }            
  112.     if(!x) count--;
  113.     break;
  114.    
  115.    case 5:
  116.     printf("Listando livros em Ordem Alfabética:\n");
  117.     qsort((void *)livraria, count, sizeof(livraria[0]), sort_char);
  118.     for (index = 0; index < count; index++)
  119.     printf("%s de %s , valor: $%.2f\n", livraria[index].titulo,
  120.           livraria[index].autor, livraria[index].valor);
  121.     break;
  122.   }  
  123.  
  124.  }
  125.  return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement