Advertisement
Guest User

funçoes gerais para o enunciado .cpp

a guest
Mar 26th, 2019
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. #include "Utils.h"
  2. #include "LinkedListFuncs.h"
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #include "FileOps.h"
  7.  
  8.  
  9. char* printBooks(void* book) {
  10.  
  11. char* ret = (char*)malloc(sizeof(char) * 1000);
  12.  
  13. *ret = NULL;
  14.  
  15. strcat(ret, "Author -> ");
  16. strcat(ret, ((Book*)(book))->author);
  17. strcat(ret, " // Title -> ");
  18. strcat(ret, ((Book*)(book))->title);
  19. strcat(ret, " // Availability -> ");
  20.  
  21. if (((Book*)(book))->state) {
  22. strcat(ret, "Available!");
  23. }
  24. else {
  25. strcat(ret, "Not available!");
  26. }
  27.  
  28. return ret;
  29.  
  30. }
  31.  
  32. char* printMembers(void* member) {
  33.  
  34. char* ret = (char*)malloc(sizeof(char) * 1000);
  35. *ret = NULL;
  36.  
  37. int numberSize = 0;
  38. int number = ((Member*)(member))->memNumber;
  39.  
  40. while (number != 0) {
  41. number /= 10;
  42. numberSize++;
  43. }
  44.  
  45. char* aux = (char*)malloc(sizeof(char) * numberSize);
  46.  
  47. strcat(ret, "Name -> ");
  48. strcat(ret, ((Member*)(member))->name);
  49. strcat(ret, " // Number -> ");
  50.  
  51. sprintf(aux, "%d", ((Member*)(member))->memNumber);
  52.  
  53. strcat(ret, aux);
  54. strcat(ret, " // Book requested -> ");
  55.  
  56. if (((Member*)(member))->solicited != NULL) {
  57. strcat(ret, (((Member*)(member))->solicited)->title);
  58. }
  59. else {
  60. strcat(ret, "This member has no books in his possession!");
  61. }
  62.  
  63. return ret;
  64.  
  65. }
  66.  
  67. void modifyBooks(List* bookList) {
  68.  
  69. int op;
  70.  
  71.  
  72. do {
  73.  
  74. printf("1 - Add\n"
  75. "2 - Remove\n"
  76. "0 - Exit\n");
  77.  
  78. scanf("%d", &op);
  79.  
  80. switch (op) {
  81. case 1:
  82. //Qnd este case acaba o registo que contem os dados do pData adicionado
  83. //é alterado e so o valor do book->state é que se mantem
  84. //os valores de book->title e book->author desaparem e sao substituidos
  85. //por lixo como se pode ver ao dar debug com a janela memory1 aberta
  86. Status x;
  87. do {
  88. x = addBook(bookList);
  89.  
  90. } while (x == ERROR);
  91. break;
  92. }
  93.  
  94. } while (op != 0);
  95. }
  96.  
  97. Status addBook(List* bookList) {
  98.  
  99. int aux;
  100.  
  101. Book b = Book();
  102. Book* ptr = &b;
  103.  
  104. while ((getchar()) != '\n') {}
  105.  
  106. printf("Book name: \n");
  107. scanf("%[^\n]", ptr->title);
  108.  
  109. while ((getchar()) != '\n') {}
  110.  
  111. printf("Book author: \n");
  112. scanf("%[^\n]", ptr->author);
  113.  
  114. while ((getchar()) != '\n') {}
  115.  
  116. do {
  117.  
  118. printf("Book availability(0/1): \n");
  119. scanf("%d", &aux);
  120.  
  121. } while (aux != 0 && aux != 1);
  122.  
  123. (aux == 1) ? ptr->state = true : ptr->state = false;
  124.  
  125. return InsertEnd(bookList, ptr);
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement