Dimitrija

Laboratoriski ISPITNI - 9 SP ALT

Jan 20th, 2021
1,079
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. /*
  6.  
  7. Во дадена датотека dat.txt да се најде најдолгиот ред во кој има барем 2 цифри. На стандарден излез да се испечатат знаците од најдолгиот ред кои се наоѓаат помеѓу првата и последната цифра (заедно со тие 2 цифри) во истиот редослед. Доколку има повеќе такви редови се печати последниот. Се претпоставува дека ниту еден ред на датотеката не е подолг од 100 знаци.
  8.  
  9. Пример.
  10.  
  11. Влез:
  12. dat.txt:
  13.     aaa123aa222aa2aaa23aaaaa22
  14.     aaaaaaaaaaaa 23aaaa
  15.     123 aaa aaa aaa aaa 12345 aaa aaa 2a
  16.  
  17. Излез:
  18.     123 aaa aaa aaa aaa 12345 aaa aaa 2
  19. For example:
  20.  
  21. Input  
  22. aaa123aa222aa2aaa23aaaaa22 11112 222311111
  23. aaa123aa222aa2aaa23aaaaa22 11112 aaaaaaaa1
  24. aaa123aa222aa2aaa23aaaaa22 11112 2a23111a1
  25. aaa123aa222aa2aaa23aaaaa22 11112 222311aa1
  26. aaa123aa222aa2aaa23aaaaa22 11112 222311111
  27. aaa123aa222aa2aaa21aa11122 11112 aaaa11111
  28. 1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  29.  
  30.  
  31. Result
  32. 123aa222aa2aaa21aa11122 11112 aaaa11111
  33.  
  34.  
  35. */
  36.  
  37.  
  38.  
  39. #define MAX 101
  40. // ne menuvaj ovde
  41. void wtf() {
  42.     FILE *f = fopen("dat.txt", "w");
  43.     char c;
  44.     while((c = getchar()) != EOF) {
  45.         fputc(c, f);
  46.     }
  47.     fclose(f);
  48. }
  49.  
  50. int main() {
  51.     wtf();
  52.     FILE *dat;
  53.    
  54.     if ((dat = fopen("dat.txt","r")) == NULL){
  55.         fprintf(stderr,"ERROR");
  56.         return -1;
  57.     }
  58.    
  59.     char niza[MAX];
  60.     char najniza[MAX];
  61.     char c;
  62.     int i,j;
  63.     int naj=0,br;
  64.     int dol,start,end;
  65.     int finstart,finend;
  66.    
  67.     while ((fgets(niza,100,dat)) != NULL){
  68.    
  69.         br = 0;
  70.         dol = strlen(niza);
  71.        
  72.         for (i=0;i<dol;i++){
  73.             if (isdigit(niza[i])){
  74.                 if (br == 0){
  75.                     start = i;
  76.                 }
  77.                 else{
  78.                     end = i;
  79.                 }
  80.                
  81.                 br++;
  82.             }
  83.         }
  84.        
  85.         if ((br >= 2) && (dol >= naj)){
  86.             naj = dol;
  87.             strcpy(najniza,niza);
  88.             finstart = start;
  89.             finend = end;
  90.         }
  91.        
  92.     }
  93.    
  94.         for (;finstart<=finend;finstart++){
  95.         printf("%c",najniza[finstart]);
  96.         }
  97.  
  98.    
  99.    
  100.     fclose(dat);
  101.     return 0;
  102.    
  103.  
  104. }
RAW Paste Data