Advertisement
Guest User

Untitled

a guest
May 21st, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.70 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement