Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. typedef struct
  5. {
  6. char nume[50], facultate[50]; int grupa;
  7. } student;
  8. void citire(student*st, int*nr)
  9. {
  10. (*nr)++;
  11. printf("Dati numele studentului: ");
  12. gets((st + *nr)->nume);
  13. gets((st + *nr)->nume);
  14. printf("Dati facultatea: ");
  15. gets((st + *nr)->facultate);
  16. printf("Dati grupa: ");
  17. scanf("%d", &((st + *nr)->grupa));
  18. }
  19. void afisare(student*st, int nr)
  20. {
  21. printf("\n%5s \t %5s \t %5d", (st + nr)->nume, (st + nr)->facultate, st[nr].grupa);
  22. }
  23. void cautare_facultate(student*st, int*nr, char fac[50])
  24. {
  25. int i;
  26. for (i = 0; i <= (*nr); i++)
  27. if (strcmp((st + i)->facultate, fac) == 0)
  28. afisare(st, i);
  29. }
  30. void cautare_grupa(student*st, int*nr, int gr)
  31. {
  32. int i;
  33. for (i = 0; i <= (*nr); i++)
  34. if ((st + i)->grupa == gr)
  35. afisare(st, i);
  36. }
  37. void cautare_nume(student*st, int*nr, char nu[50])
  38. {
  39. int i; for (i = 0; i <= (*nr); i++)
  40. if (strcmp((st + i)->nume, nu) == 0)
  41. afisare(st, i);
  42. }
  43. void stergere(student*st, int*nr, char nu[50])
  44. {
  45. int k = 0, i, j;
  46. for (i = 0; i <= (*nr); i++)
  47. if (strcmp((st + i)->nume, nu) == 0)
  48. {
  49. k++; for (j = i; j <= (*nr - k); j++)
  50. *(st + j) = st[j + 1];
  51. }
  52. *nr = *nr - k;
  53. }
  54. void sortare(student*st, int*nr)
  55. {
  56. int i, k; student aux;
  57. do
  58. {
  59. k = 1;
  60. for (i = 0; i <= (*nr - 1); i++)
  61. if (strcmp((st + i)->nume, (st + i + 1)->nume) > 0)
  62. {
  63. aux = *(st + i);
  64. *(st + i) = *(st + i + 1);
  65. *(st + i + 1) = aux;
  66. k = 0;
  67. }
  68. } while (!k);
  69. }
  70. int main()
  71. {
  72. student st[50]; int opt, n = -1, i, j, gr; char nu[50], fac[50];
  73. do
  74. {
  75. printf("\n1. Adaugarea unui student\n");
  76. printf("2. Afisarea tuturor studentilor\n");
  77. printf("3. Afisarea tuturor studentilor de la o anumita facultate\n");
  78. printf("4. Afisarea tuturor studentilor dintr-o anumita grupa\n");
  79. printf("5. Cautarea unui student dupa nume\n");
  80. printf("6. Stergerea unui student dupa nume\n");
  81. printf("7. Sortarea studentilor dupa nume\n");
  82. printf("0. Exit \n");
  83. printf("Dati optiunea \n");
  84. scanf("%d", &opt);
  85. switch (opt)
  86. {
  87. case 1:
  88. citire(&st[0], &n);
  89. break;
  90. case 2:
  91. for (i = 0; i <= n; i++)
  92. afisare(st, i);
  93. break;
  94. case 3: printf("\nFacultate: ");
  95. scanf("%s", fac);
  96. cautare_facultate(st, &n, fac);
  97. break;
  98. case 4:
  99. printf("Dati grupa dorita: ");
  100. scanf("%d", &gr);
  101. cautare_grupa(&st[0], &n, gr);
  102. break;
  103. case 5:
  104. printf("Dati numele dorit: ");
  105. scanf("%s", nu);
  106. cautare_nume(&st[0], &n, nu);
  107. break;
  108. case 6:
  109. printf("Dati numele pe care doriti sa il stergeti: ");
  110. scanf("%s", nu);
  111. stergere(&st[0], &n, nu);
  112. break;
  113. case 7:
  114. sortare(&st[0], &n);
  115. for (i = 0; i <= n; i++)
  116. afisare(&st[0], i);
  117. break;
  118. case 0:
  119. break;
  120. }
  121. } while (opt != 0);
  122. return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement