MartinSRB

Тема 5 - Задатак 2

Dec 12th, 2021 (edited)
893
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define MARKA_LEN (20 + 1)
  6.  
  7. #define MAX_EL 30
  8.  
  9. typedef struct M{
  10.     char marka[MARKA_LEN];
  11.     unsigned int kubikaza;
  12.     unsigned int godist;
  13. } MARKA;
  14.  
  15. FILE* otvoriti(char*, char*);
  16. int ucitaj_st(FILE*,MARKA*);
  17. int najnoviji(MARKA*,int,int);
  18. void ispis(MARKA, int);
  19.  
  20. void main(int argc, char **argv){
  21.     FILE *auti;
  22.     MARKA m[MAX_EL];
  23.     int n;
  24.     auti = otvoriti(argv[1],"r");
  25.     n = ucitaj_st(auti,m);
  26.     fclose(auti);
  27.     n = najnoviji(m,atoi(argv[2]),n);
  28.     ispis(m[n],atoi(argv[2]));
  29. }
  30.  
  31. FILE* otvoriti(char* naziv, char* mode){
  32.     FILE *f = fopen(naziv,mode);
  33.     if(f == NULL){
  34.         printf("Nije moguce otvoriti datoteku %s.",naziv);
  35.         exit(EXIT_FAILURE);
  36.     }
  37.     return f;
  38. }
  39.  
  40. int ucitaj_st(FILE* stream, MARKA* m){
  41.     int n = 0;
  42.     while(fscanf(stream,"%s %u %u",
  43.                             m[n].marka,
  44.                             &(m[n].kubikaza),
  45.                             &(m[n].godist)) != EOF){
  46.         n++;
  47.     }
  48.     return n;
  49. }
  50.  
  51. int najnoviji(MARKA* m,int kubikaza, int n){
  52.     int naj = 0,
  53.         i;
  54.     for(i = 0; i < n; i++){
  55.         if((m[i].godist > m[naj].godist) && m[i].kubikaza <= kubikaza){
  56.             naj = i;
  57.         }
  58.     }
  59.     return naj;
  60. }
  61.  
  62. void ispis(MARKA m,int kubikaza){
  63.     char naziv[32];
  64.     strcpy(naziv,strcat(m.marka,".txt"));
  65.     FILE *ispis = otvoriti(naziv,"w");
  66.     if(m.kubikaza <= kubikaza){
  67.         fprintf(ispis,"%s %u %u",m.marka,m.kubikaza,m.godist);
  68.     }
  69.     fclose(ispis);
  70. }
Advertisement
Add Comment
Please, Sign In to add comment