bogdan2004333

Untitled

Dec 22nd, 2022 (edited)
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.11 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct robot{
  6.     int hour;
  7.     float metrs;
  8.     char mode[15];
  9. }rob;
  10.  
  11. unsigned string_count(FILE *text){
  12.     int count=0;
  13.     while(!feof(text)){
  14.         if(fgetc(text)=='\n') count++;
  15.     }
  16.     fseek(text,0,SEEK_SET);
  17.     return count;
  18. }
  19.  
  20. int read_file(char* name,rob** robot){
  21.     FILE *text=fopen(name,"r");
  22.     if(!text) printf("Error opening file!Try again\n");
  23.     unsigned strings = string_count(text);
  24.     rob* arr= calloc(strings, sizeof(rob));
  25.     for(int i=0;i<strings;i++){
  26.         if(fscanf(text,"%d %f %s",&arr[i].hour,&arr[i].metrs,arr[i].mode)!=3)
  27.             printf("Error reading!Try again\n");
  28.     }
  29.     *robot=arr;
  30.     free(arr);
  31.     fclose(text);
  32.     return (int)strings;
  33. }
  34.  
  35. void sort_metr(rob sorting_robot[], int* strings) {
  36.     for (int i = 0; i < *strings; i++) {
  37.         for (int j = 0; j < *strings - i - 1; j++) {
  38.             if (sorting_robot[j].metrs < sorting_robot[j + 1].metrs) {
  39.                 rob temp = sorting_robot[j];
  40.                 sorting_robot[j] = sorting_robot[j + 1];
  41.                 sorting_robot[j + 1] = temp;
  42.             }
  43.         }
  44.     }
  45. }
  46.  
  47. void sort_hour(rob sorting_robot[], int* strings,) {
  48. for(int i=0;i<*strings;i++) {
  49.     if(strcmp(sorting_robot[i].mode,"поломка")==0) {
  50.         for (int j = 0; j < *strings - i - 1; j++) {
  51.             if (sorting_robot[j].hour < sorting_robot[j + 1].hour) {
  52.                 rob temp = sorting_robot[j];
  53.                 sorting_robot[j] = sorting_robot[j + 1];
  54.                 sorting_robot[j + 1] = temp;
  55.             }
  56.         }
  57.     }
  58. }
  59. }
  60.  
  61. int main() {
  62.    char filename[80]={0};
  63.    printf("Put filename:\n");
  64.    scanf("%s",filename);
  65.    rob* robot=NULL;
  66.    int strings = read_file(filename,&robot);
  67.    if(strings<0) exit(1);
  68.    sort_metr(robot,&strings);
  69.    printf("Максимальная глубина погружения: %f\n",robot[0].metrs);
  70.     sort_hour(robot,&strings);
  71.     printf("Максимальная длительность поломки: %d\n",robot[0].hour);
  72.     free(robot);
  73.     return 0;
  74. }
  75.  
Advertisement
Add Comment
Please, Sign In to add comment