Advertisement
KrimsN

Untitled

Oct 17th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #include <Windows.h>
  5. typedef struct
  6.     {
  7.      char name[33];
  8.      char group[33];
  9.      int ses[5];
  10.      double aver;
  11.     }student;
  12.  
  13. void change(student *dr)
  14.  {
  15.      fflush(stdin);
  16.      int i;
  17.      double av=0;
  18.      printf("введите имя:\n");
  19.         fgets(dr->name,33,stdin);
  20.         printf("введите группу:\n");
  21.             fgets(dr->group,33,stdin);
  22.             printf("введите оценки:\n");
  23.                 for(i=0;i<5;i++)
  24.     {
  25.  scanf("%d",&(dr->ses[i]));
  26.     av+=(dr->ses[i]);
  27.     }
  28.     (dr->aver)=(av/5);
  29.  }
  30.  
  31.  void changesize(student **dr,int x)
  32. {
  33.     x=x+1;
  34.  *dr=(student*)realloc(*dr,x*sizeof(student));
  35. }
  36.  
  37. void changelement(student *dr,student *dr1)
  38. {
  39.     student zamena;
  40.     zamena=*dr;
  41.     *dr=*dr1;
  42.     *dr1=zamena;
  43. }
  44.  
  45. student *del(student dr[5],int n)
  46. {
  47. int i;
  48. student *st,zamena;
  49. st=(student *) malloc (4*sizeof (student));
  50.     zamena=dr[4];
  51.     dr[4]=dr[n];
  52.     dr[n]=zamena;
  53.     for(i=0;i<4;i++)
  54.     {
  55.         st[i]=dr[i];
  56.     }
  57.     return st;
  58. }
  59.  
  60. void out(student dr[4])
  61. {
  62.     int j,i;
  63. for(i=0;i<4;i++)
  64.     {
  65.     printf("|----------------------|\n");
  66.     printf(" фио:%5s",dr[i].name);
  67.     printf("|----------------------|\n");
  68.     printf(" группа:%s",dr[i].group);
  69.     printf("|----------------------|\n");
  70.     printf(" оценки:");
  71.         for (j=0;j<5;j++)
  72.         {
  73.             printf("%d",dr[i].ses[j]);
  74.         }
  75.     printf("\n");
  76.     printf("|----------------------|\n");
  77.     printf(" ср.бал:%0.lf\n",dr[i].aver);
  78.     printf("========================\n");
  79.     }
  80. }
  81.  
  82. student *sort1(student dr[4])
  83. {
  84.  int i,j;
  85.  student bufstud;
  86.  
  87.       for(j = 0;j < 3;j ++ )
  88.     {
  89.     if(dr[j].aver < dr[j+1].aver)
  90.     {
  91.     bufstud=dr[j];
  92.         dr[j]=dr[j+1];
  93.             dr[j+1]= bufstud;
  94.     }
  95.     }
  96.  
  97.     return dr;
  98. }
  99.  
  100. student *sort2(student dr[4])
  101. {
  102.  int i,j;
  103.  student bufstud;
  104.  for(i = 0;i < 4;i ++ )
  105.     {
  106.       for(j = 0;j < 3;j ++ )
  107.     {
  108.     if(dr[j].aver >dr[j+1].aver)
  109.     {
  110.     bufstud=dr[j];
  111.         dr[j]=dr[j+1];
  112.             dr[j+1]= bufstud;
  113.     }
  114.     }
  115.     }
  116.     return dr;
  117. }
  118.  
  119.  
  120.  
  121.  
  122. int main()
  123. {
  124.     //установка кодовой страницы win-cp 1251 в поток ввода
  125.     SetConsoleCP(1251);
  126.     //установка кодовой страницы win-cp 1251 в поток
  127.     SetConsoleOutputCP(1251);
  128.     int i,j,pers,pers1,size,choice;
  129.     char musor[10];
  130.     student *students;
  131.     FILE *f1;
  132.     if(!(f1=fopen("f1.txt","r")))
  133.     {
  134.     perror ("error");
  135.     }
  136.     fscanf(f1,"%d",&size);
  137.     fgets(musor,10,f1);
  138.     if(!(students=(student*)
  139.          malloc(size * sizeof(student))))
  140.     {
  141.     perror("errorss");
  142.     }
  143.     for(i=0;i<4;i++)
  144.     {
  145.     students[i].aver=0;
  146.     fgets(students[i].name,33,f1);
  147.         fgets(students[i].group,33,f1);
  148.             for(j=0;j<5;j++)
  149.     {
  150.         fscanf(f1,"%d",&students[i].ses[j]);
  151.         students[i].aver+=students[i].ses[j];
  152.     }
  153.     students[i].aver=students[i].aver/5;
  154.     fgets(musor,10,f1);
  155.     }
  156.     ///функции:
  157.     ///вывод
  158.     out(students);
  159.     ///изменение элемента массива струтур
  160.     printf("\nу какой персоны вы хотите поменять данные:");
  161.     scanf("%d",&pers);
  162.     pers--;
  163.     change(&students[pers]);
  164.     ///дополнение дин.мас структур новым элементом
  165.     changesize(&students,size);
  166.     printf("\nвведите данные новой персоны:\n");
  167.     change(&students[size]);
  168.     ///замена мест двух элементов
  169.     printf("\nданные каких персон вы хотите поменять местами:\n");
  170.     scanf("%d %d",&pers,&pers1);
  171.     pers--;
  172.     pers1--;
  173.     changelement(&students[pers],&students[pers1]);
  174.     ///удаление элемента
  175.     printf("\nданные какой персоны вы хотите удалить:\n");
  176.     scanf("%d",&pers);
  177.     pers--;
  178.     students=del(students,pers);
  179.     ///вывод
  180.     out(students);
  181.     ///упорядочивание по полю
  182.     printf("Каким образом вы хотите упорядочить:\n");
  183.     printf("1-по возрастанию оценок:\n");
  184.     printf("2-по убыванию оценок:\n");
  185.     scanf("%d",&choice);
  186.     switch (choice)
  187.     {
  188.     case 1:sort1(students);
  189.     break;
  190.     case 2:sort2(students);
  191.     break;
  192.     default:printf("неверный ввод\n");
  193.     exit(0);
  194.     }
  195.     printf("\n========================\n");
  196.     ///вывод
  197.     out(students);
  198.     return(0);
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement