Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.13 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6. #include <stdlib.h>
  7.  
  8.  
  9. struct gd {
  10.     int id;
  11.     int hh;
  12.     int mm;
  13.     char dest[21];
  14.     int delta;
  15. };
  16.  
  17.  
  18. void words(char *str) {
  19.     int i = 0;
  20.     while (str[i]) {
  21.         str[i] = toupper(str[i]);
  22.         i++;
  23.     }
  24. }
  25.  
  26.  
  27. void sort(struct gd *arr, int n) {
  28.     for (int i = 0; i < n; i++) {
  29.         for (int j = 0; j < n - i - 1; j++) {
  30.             int flag = 1;
  31.             if (arr[j].hh > arr[j + 1].hh)
  32.                 flag = 0;
  33.             else if (arr[j].hh == arr[j + 1].hh && arr[j].mm > arr[j + 1].mm)
  34.                 flag = 0;
  35.             else if (arr[j].hh == arr[j + 1].hh && arr[j].mm == arr[j + 1].mm &&
  36.                      strcmp(arr[j].dest, arr[j + 1].dest) > 0)
  37.                 flag = 0;
  38.             else if (arr[j].hh == arr[j + 1].hh && arr[j].mm == arr[j + 1].mm &&
  39.                      strcmp(arr[j].dest, arr[j + 1].dest) == 0 && arr[j].id > arr[j + 1].id)
  40.                 flag = 0;
  41.             if (!flag) {
  42.                 struct gd t = arr[j];
  43.                 arr[j] = arr[j + 1];
  44.                 arr[j + 1] = t;
  45.             }
  46.         }
  47.     }
  48. }
  49.  
  50.  
  51. int time(int m1, int h1, int m2, int h2) {
  52.     int sum = (m2 - m1) + (h2 - h1) * 60;
  53.     return sum;
  54. }
  55.  
  56. int main() {
  57.     FILE *fin = fopen("D:/Projects/CLionProjects/Lab_6/input.txt", "rt");
  58.     FILE *fout = fopen("D:/Projects/CLionProjects/Lab_6/output.txt", "wt");
  59.     int k, n;
  60.     fscanf(fin, "%d%d", &k, &n);
  61.     struct gd *arr = (struct gd *) malloc(sizeof(struct gd) * n);
  62.     for (int i = 0; i < n; i++) {
  63.         fscanf(fin, "%d %d:%d %s", &arr[i].id, &arr[i].hh, &arr[i].mm, arr[i].dest);
  64.         words(arr[i].dest);
  65.     }
  66.     sort(arr, n);
  67.     fprintf(fout, "%03d %02d:%02d %s %d\n", arr[0].id, arr[0].hh, arr[0].mm, arr[0].dest, time(0, 0, arr[0].mm, arr[0].hh));
  68.     for (int i = 1; i < k; i++) {
  69.         fprintf(fout, "%03d %02d:%02d %s %d\n", arr[i].id, arr[i].hh, arr[i].mm, arr[i].dest,
  70.                 time(arr[i - 1].mm, arr[i - 1].hh, arr[i].mm, arr[i].hh));
  71.     }
  72.     fclose(fin);
  73.     fclose(fout);
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement