Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <string.h>
- #define HEADOUTFORMAT "%-15s%-15s%-15s%-15s%-15s\n"
- #define OUTFORMAT "%-15s%-15d%-15d%-15d%-15d\n"
- typedef struct {
- char lastName[64];
- int group, gi, gim, get;
- } person;
- void print(person *persons, int n);
- int input(person *persons)
- {
- int n, i;
- FILE *file = fopen("input.bin", "wb");
- if (!file) { printf("File open error"); _getch(); return 0; }
- printf("input n: "); scanf("%d", &n);
- persons = (person*) malloc(sizeof(person) *n);
- printf("Input persons (by format - LastName Group GradeInfr GradeInMova GradeEcoTeo):\n");
- for (i = 0; i < n; i++)
- {
- scanf("%s %d %d %d %d", persons[i].lastName, &persons[i].group, &persons[i].gi, &persons[i].gim, &persons[i].get);
- }
- for (i = 0; i < n; i++)
- {
- fwrite(&persons[i], sizeof(person), 1, file);
- }
- fclose(file);
- return n;
- }
- person* read(int count)
- {
- int i = 0;
- FILE *file;
- person *persons = NULL;
- file = fopen("input.bin", "rb");
- if (!file) { printf("File open error"); _getch(); return 0; }
- persons = (person*) malloc(sizeof(person) *count);
- //if (fread(&persons, sizeof(person), count, file) == 0) return NULL;
- while (!feof(file))
- {
- fread(&persons[i], sizeof(person), 1, file);
- i++;
- }
- fclose(file);
- return persons;
- }
- void print(person* persons, int n)
- {
- int i = 0;
- FILE *file = fopen("output.txt", "w");
- if (!file) { printf("File open error"); _getch(); return; }
- if (!persons) return;
- putchar('\n'); printf(HEADOUTFORMAT, "LastName", "Group", "GradeInfr", "GradeInMova", "GradeEcoTeo");
- fprintf(file, HEADOUTFORMAT, "LastName", "Group", "GradeInfr", "GradeInMova", "GradeEcoTeo");
- for (i = 0; i < n; i++)
- {
- printf(OUTFORMAT, persons[i].lastName, persons[i].group, persons[i].gi, persons[i].gim, persons[i].get);
- fprintf(file, OUTFORMAT, persons[i].lastName, persons[i].group, persons[i].gi, persons[i].gim, persons[i].get);
- }
- fclose(file);
- }
- int supermans(person *persons, int n, int g)
- {
- int i = 0, c = 0;
- FILE *file = fopen("ageout.txt", "w");
- if (!file) { printf("File open error"); _getch(); return 0; }
- if (!persons) return -1;
- printf(HEADOUTFORMAT, "LastName", "Group", "GradeInfr", "GradeInMova", "GradeEcoTeo");
- fprintf(file, HEADOUTFORMAT, "LastName", "Group", "GradeInfr", "GradeInMova", "GradeEcoTeo");
- for (i = 0; i < n; i++)
- if (persons[i].group == g && persons[i].gim == 5 && persons[i].gi == 5 && persons[i].get == 5)
- {
- printf(OUTFORMAT, persons[i].lastName, persons[i].group, persons[i].gi, persons[i].gim, persons[i].get);
- fprintf(file, OUTFORMAT, persons[i].lastName, persons[i].group, persons[i].gi, persons[i].gim, persons[i].get);
- c++;
- }
- fclose(file);
- return c;
- }
- person *psort(person *p, int n)
- {
- int i, j; person tmp;
- for (i = 0; i < n; i++)
- {
- for (j = i + 1; j < n; j++)
- {
- if (strcmp(p[i].lastName, p[j].lastName) > 0)
- {
- tmp = p[i];
- p[i] = p[j];
- p[j] = tmp;
- }
- }
- }
- return p;
- }
- int main()
- {
- int n = 1, g = 0;
- person *p = NULL;
- printf("input group: ");
- scanf("%d", &g);
- n = input(p);
- supermans(p, n, g);
- p = read(n);
- p = psort(p, n);
- print(p, n);
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment