Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. typedef struct
  5. {
  6. char titlu[50], autor[50], domeniu[50] ; int an, nr_pag;
  7. } carte;
  8. void adaugare(carte *c, int *nr)
  9. {
  10. (*nr)++;
  11. printf("Titlu carte");
  12. gets((c + *nr)->titlu);
  13. gets((c + *nr)->titlu);
  14. printf("autor");
  15. gets((c + *nr)->autor);
  16. printf("domeniu carte");
  17. gets((c + *nr)->domeniu);
  18. printf("an carte");
  19. scanf("%d", &((c + *nr)->an));
  20. printf("numar pagini");
  21. scanf("%d", &((c + *nr)->nr_pag));
  22. }
  23. void afisare(carte *c, char dom[50], int*nr)
  24. {
  25. int i;
  26. for (i = 0; i <= *nr; i++)
  27. {
  28. if (strcmp((c + i)->domeniu, dom) == 0)
  29. {
  30. printf("%s", (c + i)->titlu);
  31. printf("%s", (c + i)->autor);
  32. printf("%d", (c + i)->an);
  33. printf("%d", (c + i)->nr_pag);
  34. }
  35. }
  36. }
  37. void cautare_titlu(carte *c, char ttl[50], int *nr)
  38. {
  39. int i;
  40. for (i = 0; i <= *nr; i++)
  41. {
  42. if (strcmp((c + i)->titlu, ttl) == 0)
  43. {
  44. printf("%s", (c + i)->domeniu);
  45. printf("%s", (c + i)->autor);
  46. printf("%d", (c + i)->an);
  47. printf("%d", (c + i)->nr_pag);
  48. }
  49. break;
  50. }
  51. }
  52.  
  53. void cautare_an(carte *c, int year, int *nr)
  54. {
  55. int i;
  56. for (i = 0; i <= *nr; i++)
  57. if (year == (c + i)->an)
  58. {
  59. printf("%s", (c + i)->domeniu);
  60. printf("%s", (c + i)->autor);
  61. printf("%s", (c + i)->titlu);
  62. printf("%d", (c + i)->nr_pag);
  63. }
  64. }
  65. void stergere(carte*c, char ttl[50], int *nr)
  66. {
  67. int i, k, j;
  68. k = 0;
  69. for (i = 0; i <= *nr; i++)
  70. if (strcmp(ttl, (c + i)->titlu) == 0)
  71. {
  72. k++;
  73. for (j = i; j <= (*nr - k); j++)
  74. *(c + j) = c[j + 1];
  75. }
  76. *nr = *nr - k;
  77. }
  78. void sortare(carte *c, int *nr, char dom)
  79. {
  80. int i, j, k;
  81. carte aux;
  82. k = 1;
  83. for(i=0;i<=*nr;i++)
  84. if(strcmp(dom,(c+i)->domeniu)==0)
  85. do
  86. {
  87. k = 1;
  88. for(j=0; j<=*nr;j++)
  89. if (strcmp((c + j)->titlu, (c + j + 1)->titlu) > 0)
  90. {
  91. aux = *(c + j);
  92. *(c + j) = *(c + j + 1);
  93. *(c + j + 1) = aux;
  94. k = 0;
  95.  
  96. }
  97. } while (!k);
  98. }
  99. int main() {
  100. carte c[50];
  101. int year, opt, i, j, n, k;
  102. char ttl[50], dom[50];
  103. do
  104. {
  105. printf("\n1. Adaugarea unei carti\n");
  106. printf("2. Afisarea cartilor dintr un domeniu\n");
  107. printf("3. cautare carte dupa titlu\n");
  108. printf("4. cautare carte dupa an\n");
  109. printf("5. stergere carte\n");
  110. printf("6. sortare carti dupa titlu\n");
  111. printf("7. iesire\n");
  112. printf("dati optiunea\n");
  113. scanf("%d", &opt);
  114. switch (opt)
  115. {
  116. case 1:
  117. adaugare(&c, &n);
  118. break;
  119. case 2:
  120. printf("\nDomeniu:");
  121. gets(dom);
  122. afisare(&c, dom, &n);
  123. break;
  124. case 3:
  125. printf("\nTitlu");
  126. gets(ttl);
  127. cautare_titlu(&c, ttl, &n);
  128. break;
  129. case 4:
  130. printf("\nAN:");
  131. scanf("%d", &year);
  132. cautare_an(&c, year, &n);
  133. break;
  134. case 5:
  135. printf("\nTitlu");
  136. gets(ttl);
  137. stergere(&c, ttl, &n);
  138. break;
  139. case 6:
  140. printf("\nDomeniulll esteeee:");
  141. gets(dom);
  142. sortare(&c, &n, dom);
  143. afisare(&c, dom, &n);
  144. break;
  145. case 7:
  146. break;
  147. }
  148. } while (opt != 7);
  149. return 0;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement