Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. struct addinf {
  7. char date[10]; // дата зачисления
  8. float GradePoint; //средний балл
  9. };
  10.  
  11. struct info {
  12. int NumOfBook; // номер зачётки
  13. char *surname;
  14. addinf inf;
  15. };
  16.  
  17. void Enterinf();
  18. void findstudents(int n, struct info *students, char sfind[]);
  19. void RemoveStudents(int n, struct info *students, int num);
  20.  
  21. int main() {
  22. Enterinf();
  23. rewind(stdin);
  24. _getch();
  25. return 0;
  26. }
  27.  
  28. void Enterinf() {
  29. int n, num, size = 0;
  30. struct info *students;
  31. char c, *FindStudent;
  32. printf(" Enter number of students: ");
  33. while (!scanf_s("%d", &n) || n < 1) {
  34. printf(" wrong input, try again\n");
  35. rewind(stdin);
  36. }
  37. while (!(students = (struct info*)malloc(n * sizeof(struct info)))) {
  38. printf("Allocating error");
  39. _getch();
  40. exit(1);
  41. }
  42. for (int i = 0; i < n; i++) {
  43. printf(" Student %d\n ", i + 1);
  44. printf("Number of record book: ");
  45. while (!scanf_s("%d", &students[i].NumOfBook) || students[i].NumOfBook < 0) {
  46. printf(" wrong input, try again: ");
  47. rewind(stdin);
  48. }
  49. rewind(stdin);
  50. printf(" Student's surname: ");
  51. students[i].surname = (char*)malloc(sizeof(char));
  52. while ((c = getchar()) != '\n') {
  53. size++;
  54. students[i].surname = (char*)realloc(students->surname, (1 + size) * sizeof(char));
  55. students[i].surname[size - 1] = c;
  56. students[i].surname[size] = '\0';
  57. }
  58. size = 0;
  59. rewind(stdin);
  60. printf(" Enrollment date (DD.MM.YYYY) : ");
  61. while (!scanf_s("%s", &students[i].inf.date) || students[i].inf.date[2] != '.' || students[i].inf.date[5] != '.') {
  62. printf("\n Incorrect date, try again: ");
  63. rewind(stdin);
  64. }
  65.  
  66. printf(" Grade point average: ");
  67. while (!scanf_s("%f", &students[i].inf.GradePoint) || students[i].inf.GradePoint > 10 || students[i].inf.GradePoint < 0) {
  68. printf("\n wrong gpa, try again");
  69. rewind(stdin);
  70. }
  71. }
  72. printf("\n Enter student's surname, who you want to find: ");
  73. size = 0;
  74. FindStudent = (char*)malloc(sizeof(char));
  75. rewind(stdin);
  76. while ((c = getchar()) != '\n') {
  77. size++;
  78. FindStudent = (char*)realloc(FindStudent, (1 + size) * sizeof(char));
  79. FindStudent[size - 1] = c;
  80. FindStudent[size] = '\0';
  81. }
  82. printf("\n Enter a number of record book to delete: ");
  83. while (!scanf_s("%d", &num)) {
  84. printf("\nwrong input, try again: ");
  85. rewind(stdin);
  86. }
  87. findstudents(n, students, FindStudent);
  88. RemoveStudents(n, students, num);
  89. free(students);
  90. }
  91. void findstudents(int n, struct info* students, char FindStudent[]) {
  92. int i;
  93. for (i = 0; i < n; i++) {
  94. if (strcmp(students[i].surname, FindStudent) == 0) {
  95. printf("\n find a student:\n Number of RB: %d\n Surname %s\n Enrollment date: %s\n GPA: %.1f",
  96. students[i].NumOfBook, students[i].surname, students[i].inf.date, students[i].inf.GradePoint);
  97. }
  98. }
  99. }
  100. void RemoveStudents(int n, struct info *students, int num) {
  101. int i, size;
  102. size = n;
  103. for (i = 0; i < n; i++) {
  104. if (students[i].NumOfBook < num) {
  105. students[i].NumOfBook = students[i + 1].NumOfBook;
  106. size--;
  107. }
  108. }
  109. if (size < 0) {
  110. students = (struct info*)realloc(students, size * sizeof(struct info));
  111. printf("\n updated list\n");
  112. for (i = 0; i < size; i++) {
  113. printf("%s - %d\n", students[i].surname, students[i].NumOfBook);
  114. }
  115. } else {
  116. printf("no one find");
  117. }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement