Dimitrija

Laboratoriski ISPITNI - 9 SP

Jan 5th, 2021 (edited)
765
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.32 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #define MAX 100
  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.  
  20. */
  21.  
  22.  
  23. // ne menuvaj ovde
  24. void wtf() {
  25.     FILE *f = fopen("dat.txt", "w");
  26.     char c;
  27.     while((c = getchar()) != EOF) {
  28.         fputc(c, f);
  29.     }
  30.     fclose(f);
  31. }
  32.  
  33. int main() {
  34.     wtf();
  35.     FILE *dat;
  36.    
  37.     if ((dat = fopen("dat.txt","r")) == NULL){
  38.         fprintf(stderr,"ERROR!!11");
  39.         return -1;
  40.     }
  41.  
  42.     char niza[MAX][MAX];
  43.     int kol=0;
  44.     int red[MAX]={0,};
  45.     char c;
  46.     int nums=0;
  47.     int maxred=0;
  48.     int maxkol=0;
  49.     int DELETOR;
  50.     int i;
  51.  
  52.     while ((c = getc(dat)) != EOF){
  53.    
  54.         if (c == '\n'){
  55.        
  56.             DELETOR=0;
  57.             for (i=red[kol];i!=-1;i--){
  58.                 if (isalpha(niza[kol][i])){
  59.                     DELETOR++;
  60.                
  61.                 }
  62.                 if (isdigit(niza[kol][i])){
  63.                     break;
  64.                 }
  65.            
  66.             }
  67.             red[kol]-=DELETOR;
  68.        
  69.        
  70.        
  71.  
  72.             if ((nums >= 2) && (red[kol] >= maxred)){
  73.                 maxred = red[kol];
  74.                 maxkol = kol;
  75.             }
  76.            
  77.             kol++;
  78.             nums=0;
  79.             continue;
  80.        
  81.         }
  82.        
  83.         if (isdigit(c)){
  84.             nums++;
  85.         }
  86.        
  87.         if (nums>0){
  88.         niza[kol][red[kol]] = c;
  89.         red[kol]++;
  90.         }
  91.        
  92.     }
  93.    
  94.    
  95.     for (i=0; i< maxred;i++){
  96.         printf("%c",niza[maxkol][i]);
  97.     }
  98.    
  99.     return 0;
  100.    
  101.    
  102. }
Add Comment
Please, Sign In to add comment