SHARE
TWEET

Untitled

a guest May 21st, 2019 57 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. FILE *fb,*f,*f1,*c,*fn,*fm;
  5.  
  6. int i,j,n,v[101],m,k,ok;
  7.  
  8. void matrice(int n,int m);
  9. void secventa(int n);
  10. void sub_numar(int n);
  11. void paritate(int n);
  12.  
  13. int main()
  14. {
  15.     int caz;
  16.         printf("Apasati 1 pentru a permuta coloanele unei matrici\n");
  17.         printf("Apasati 2 pentru a afisa numarul secvente din fisier au lungimea k si valori mai mici sau egale cu t\n");
  18.         printf("Apasati 3 pentru a afisa sub-numerele care apar de mai multe ori\n");
  19.         printf("Apasati 4 pentru a afisa cea mai lunga secventa de numere cu paritati diferite din fisier\n");
  20.         scanf("%d",&caz);
  21.     switch(caz)
  22.     {
  23.     case '1' :
  24.         matrice(n,m);break;
  25.     case '2' :
  26.         secventa(n);break;
  27.     case '3' :
  28.         sub_numar(n);break;
  29.     case '4' :
  30.         paritate(n);break;
  31.     }
  32.     return 0;
  33. }
  34.  
  35.  
  36.  
  37.  
  38. void sub_numar(int n)
  39. {
  40.    fn=fopen("in.txt","r");
  41.    fm=fopen("out.txt","w");
  42.  
  43.  
  44.  
  45.    int maxi=0;
  46.  
  47.    for(i=10;i<99;i++)
  48.     v[i]=0;//initializarea vectorului de frecventa cu 0
  49.    while(!feof(fn))
  50.    {
  51.        fscanf(fn,"%d",&n);
  52.        while(n>10)
  53.        {
  54.            v[n%100]++;
  55.            //cresterea frecventei oricarui numar format din 2 cifre extras din numarul n
  56.            n/=10;
  57.  
  58.        }
  59.    }
  60.    for(i=10;i<99;i++)
  61.     if(v[i]>maxi)
  62.     maxi=v[i];
  63.    //aflarea frecventei maxime a unui subnumar
  64.  
  65.    for(i=0;i<99;i++)
  66.     if(v[i]==maxi)
  67.     fprintf(fm,"%d ",i);
  68.    //afisarea subnumerelor cu frecventa maxima
  69.  
  70.  
  71. }
  72.  
  73.  
  74.  
  75.  
  76. void paritate(int n)
  77.  
  78. {
  79.     int lc=0,lmax=0;
  80.     //se deschid fisierele
  81.      f=fopen("in.txt","r");
  82.      f1=fopen("out.txt","w");
  83.  
  84.      fscanf(f,"%d",&n);//se citeste numarul de elemente ale fisierului in.txt
  85.      for(i=0;i<n;i++)
  86.  
  87.          fscanf(f,"%d",&v[i]);//se citesc elementele din fisierul in.txt
  88.          lc=0;
  89.          lmax=0;
  90.  
  91.          for(i=0;i<n-1;i++)
  92.          {
  93.  
  94.                 if(v[i]%2!=v[i+1]%2)//se verifica daca paritatile a 2 numere consecutive difera intre ele
  95.                     lc++;
  96.                 else
  97.                     lc=0;
  98.                 if(lc>lmax)//se afla lungimea maxima a unei secvente care indeplineste conditia precizata
  99.                     lmax=lc;
  100.                     }
  101.                 lc=0;
  102.                 for(i=0;i<n-1;i++)
  103.                     {
  104.                     if(v[i]%2!=v[i+1]%2)
  105.                     lc++;
  106.                     else
  107.                         lc=0;
  108.                         if(lc==lmax)//se verifica daca secventa a atins lungimea maxima iar in caz afirmativ este afisata in out.txt
  109.                         {
  110.                            for(j=i-lmax+1;j<=i+1;j++)
  111.                             fprintf(f1,"%d ",v[j]);
  112.                             fprintf(f1,"\n");
  113.         }
  114.         }
  115.      fclose(f);
  116.  
  117.      fclose(f1);
  118.  
  119.  
  120.  
  121. }
  122.  
  123.  
  124.  
  125.  
  126. void secventa(int n)
  127. {
  128.     int v[20],nr=0,t;
  129.      c=fopen("in.txt","r");
  130.         fscanf(c,"%d",&t);                  //am citit t , k , n din fisier
  131.             fscanf(c,"%d",&k);
  132.                 fscanf(c,"%d",&n);
  133.  
  134.      for(i=0;i<n;i++)                       //am citit sirul de elemente din fisier de lungimea n
  135.         fscanf(c,"%d",&v[i]);
  136.  
  137.  
  138.     for(i=0;i<=n-k;i++)
  139.         {ok=0;                              //am folosit 2 for-uri pentru a lua secvente de lungimea k
  140.         for(j=i;j<i+k;j++)
  141.          {  if(v[j]<=t)
  142.                 ok++;                       //am luat un contor ok pentru a vedeea cate secvente de lungimea k au val mai mici ca t
  143.  
  144.             if(ok==k)
  145.                 nr++;
  146.          }
  147.         }
  148.  
  149.      fclose(c);
  150.  
  151.      c=fopen("out.txt","w");
  152.         fprintf(c,"Numarul de secvente din sir care au lungimea %d si sunt formate din valori mai mici sau egale cu %d: %d ",k,t,nr);
  153.                                             //am afisat numarul de secvente
  154.      fclose (c);
  155.  
  156.  }
  157.  
  158.  
  159.  
  160.  
  161. void matrice(int n,int m)
  162. {
  163.     int a[50][50],aux,z;
  164.     fb = fopen("in.txt","r");
  165.  
  166.     fscanf(fb,"%d",&n);
  167.     fscanf(fb,"%d",&m);
  168.     fscanf(fb,"%d",&k);
  169.  
  170.  
  171.  
  172.     for (i=1;i<=n;i++)
  173.         for(j=1;j<=m;j++)
  174.             fscanf(fb,"%d",&a[i][j]); //Citeste matricea din fisier
  175.  
  176.     for(z=1;z<=k;z++)
  177.         {for(i=1;i<=n;i++)
  178.             for(j=1;j<m;j++)
  179.             {
  180.                 aux=a[i][j];
  181.                 a[i][j]=a[i][j+1];
  182.                 a[i][j+1]=aux;          //Permuta de k ori coloanele matriciei
  183.             }
  184.         }
  185.         fclose(fb);
  186.         fb = fopen("out.txt","w");
  187.  
  188.                for (i=1;i<=n;i++)
  189.         {
  190.             for(j=1;j<=m;j++)
  191.                 fprintf(fb,"%4d ",a[i][j]);
  192.                 fprintf(fb,"\n");                //Afisarea matricei permutate in fisierul Output
  193.  
  194.         }
  195.             fclose(fb);
  196. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top