hozer

VitasLab4(files)

Jun 3rd, 2014
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.25 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. #define HEADOUTFORMAT "%-15s%-15s%-15s%-15s%-15s\n"
  8. #define OUTFORMAT "%-15s%-15d%-15d%-15d%-15d\n"
  9.  
  10. typedef struct {
  11.     char lastName[64];
  12.     int group, gi, gim, get;
  13. } person;
  14.  
  15. void print(person *persons, int n);
  16.  
  17. int input(person *persons)
  18. {
  19.     int n, i;
  20.     FILE *file = fopen("input.bin", "wb");
  21.     if (!file) { printf("File open error"); _getch(); return 0; }
  22.  
  23.     printf("input n: "); scanf("%d", &n);
  24.     persons = (person*) malloc(sizeof(person) *n);
  25.  
  26.     printf("Input persons (by format - LastName Group GradeInfr GradeInMova GradeEcoTeo):\n");
  27.     for (i = 0; i < n; i++)
  28.     {
  29.         scanf("%s %d %d %d %d", persons[i].lastName, &persons[i].group, &persons[i].gi, &persons[i].gim, &persons[i].get);
  30.     }
  31.  
  32.     for (i = 0; i < n; i++)
  33.     {
  34.         fwrite(&persons[i], sizeof(person), 1, file);
  35.     }
  36.  
  37.     fclose(file);
  38.     return n;
  39. }
  40.  
  41. person* read(int count)
  42. {
  43.     int i = 0;
  44.     FILE *file;
  45.     person *persons = NULL;
  46.     file = fopen("input.bin", "rb");
  47.  
  48.     if (!file) { printf("File open error"); _getch(); return 0; }
  49.  
  50.     persons = (person*) malloc(sizeof(person) *count);
  51.     //if (fread(&persons, sizeof(person), count, file) == 0) return NULL;
  52.     while (!feof(file))
  53.     {
  54.         fread(&persons[i], sizeof(person), 1, file);
  55.         i++;
  56.     }
  57.  
  58.  
  59.     fclose(file);
  60.     return persons;
  61. }
  62.  
  63.  
  64. void print(person* persons, int n)
  65. {
  66.     int i = 0;
  67.     FILE *file = fopen("output.txt", "w");
  68.     if (!file) { printf("File open error"); _getch(); return; }
  69.  
  70.     if (!persons) return;
  71.     putchar('\n'); printf(HEADOUTFORMAT, "LastName", "Group", "GradeInfr", "GradeInMova", "GradeEcoTeo");
  72.     fprintf(file, HEADOUTFORMAT, "LastName", "Group", "GradeInfr", "GradeInMova", "GradeEcoTeo");
  73.     for (i = 0; i < n; i++)
  74.     {
  75.         printf(OUTFORMAT, persons[i].lastName, persons[i].group, persons[i].gi, persons[i].gim, persons[i].get);
  76.         fprintf(file, OUTFORMAT, persons[i].lastName, persons[i].group, persons[i].gi, persons[i].gim, persons[i].get);
  77.     }
  78.  
  79.     fclose(file);
  80. }
  81.  
  82.  
  83. int supermans(person *persons, int n, int g)
  84. {
  85.     int i = 0, c = 0;
  86.     FILE *file = fopen("ageout.txt", "w");
  87.     if (!file) { printf("File open error"); _getch(); return 0; }
  88.  
  89.     if (!persons) return -1;
  90.     printf(HEADOUTFORMAT, "LastName", "Group", "GradeInfr", "GradeInMova", "GradeEcoTeo");
  91.     fprintf(file, HEADOUTFORMAT, "LastName", "Group", "GradeInfr", "GradeInMova", "GradeEcoTeo");
  92.     for (i = 0; i < n; i++)
  93.         if (persons[i].group == g && persons[i].gim == 5 && persons[i].gi == 5 && persons[i].get == 5)
  94.         {
  95.             printf(OUTFORMAT, persons[i].lastName, persons[i].group, persons[i].gi, persons[i].gim, persons[i].get);
  96.             fprintf(file, OUTFORMAT, persons[i].lastName, persons[i].group, persons[i].gi, persons[i].gim, persons[i].get);
  97.             c++;
  98.         }
  99.  
  100.     fclose(file);
  101.     return c;
  102. }
  103.  
  104. person *psort(person *p, int n)
  105. {
  106.     int i, j; person tmp;
  107.     for (i = 0; i < n; i++)
  108.     {
  109.         for (j = i + 1; j < n; j++)
  110.         {
  111.             if (strcmp(p[i].lastName, p[j].lastName) > 0)
  112.             {
  113.                 tmp = p[i];
  114.                 p[i] = p[j];
  115.                 p[j] = tmp;
  116.             }
  117.         }
  118.     }
  119.  
  120.     return p;
  121. }
  122.  
  123. int main()
  124. {
  125.     int n = 1, g = 0;
  126.     person *p = NULL;
  127.     printf("input group: ");
  128.     scanf("%d", &g);
  129.     n = input(p);
  130.     supermans(p, n, g);
  131.     p = read(n);
  132.     p = psort(p, n);
  133.     print(p, n);
  134.  
  135.     _getch();
  136.     return 0;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment