Alx09

Untitled

Nov 14th, 2019
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct Bibloteca {
  6. char *nume, *titlu, *domeniu;
  7. unsigned short an_ap, nr_pag;
  8. struct Bibloteca *urm;
  9. }B;
  10.  
  11. B *Addbook(B *, char *, char *, unsigned short, unsigned short, char *);
  12. void Afisare(B *);
  13.  
  14. int main() {
  15. unsigned short an_ap, nr_pag, opt;
  16. char titlu[25] , autor[25], domeniu[25];
  17. char temp;
  18. B *prim = NULL;
  19. do {
  20. printf("0. Iesire\n");
  21. printf("1. Adaugare carte in bibloteca\n");
  22. printf("2. Afisare lista\n");
  23. printf("Optiunea dumeanoastra este: "); scanf("%hu", &opt);
  24. scanf("%c", &temp);
  25. switch (opt)
  26. {
  27. case 0: exit(0); break;
  28. case 1: system("cls");
  29. printf("Titlu carte: "); fgets(titlu, 25, stdin);
  30. printf("Nume autor: "); fgets(autor, 25, stdin);
  31. printf("Anul aparitei: "); scanf("%hu", &an_ap);
  32. printf("Numarul de pagini: "); scanf("%hu", &nr_pag);
  33. scanf("%c", &temp);
  34. printf("Domeniul: "); fgets(domeniu, 25, stdin);
  35. system("cls");
  36. prim = Addbook(prim, titlu, autor, an_ap, nr_pag, domeniu);
  37. break;
  38. case 2:
  39. system("cls");
  40. Afisare(prim); break;
  41. default:system("cls");
  42. printf("A-ti introdus o optiunea invalida !!! \n");
  43. break;
  44. }
  45. } while (1);
  46.  
  47. }
  48.  
  49. B *Addbook(B *prim, char *title, char *author, unsigned short year_ap, unsigned short pageNumber, char *domain) {
  50. B * q, *p;
  51. p = (B *)malloc(sizeof(B));
  52. p->nume = (char *)malloc(sizeof(author) + 1);
  53. strcpy(p->nume, author);
  54. p->titlu = (char *)malloc(sizeof(title) + 1);
  55. strcpy(p->titlu, title);
  56. p->an_ap = year_ap;
  57. p->nr_pag = pageNumber;
  58. p->domeniu = (char *)malloc(sizeof(strlen(domain) + 1));
  59. strcpy(p->domeniu, domain);
  60. p->urm = NULL;
  61. if (p == NULL || p->nume == NULL || p->titlu == NULL || p->domeniu == NULL) {
  62. printf("Eroare la alocarea memoriei !!!");
  63. exit(0);
  64.  
  65. }
  66.  
  67. if (prim == NULL) return p;
  68.  
  69. if (strcmp(p->titlu, title ) > 0) {
  70. p->urm = prim;
  71. return p;
  72. }
  73.  
  74. q = prim;
  75. while (q->urm != NULL && strcmp(q->urm->titlu, title) < 0) q = q->urm;
  76. p->urm = q->urm;
  77. q->urm = p;
  78. return prim;
  79. }
  80.  
  81. void Afisare(B *prim) {
  82. B *q = prim;
  83. while (q)
  84. {
  85. printf("\nTitlu: %s",q->titlu);
  86. printf("Autor: %s", q->nume);
  87. printf("An aparitie: %hu \n", q->an_ap);
  88. printf("Numar de pagini: %hu \n", q->nr_pag);
  89. printf("Domeniu: %s\n\n", q->domeniu);
  90. q = q->urm;
  91. }
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment