Alx09

Ex23

Apr 24th, 2020
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5. char a, b, i; // variabile ajutatoare
  6. FILE *f, *g; // variabile de tip fiser
  7. f = fopen("in.txt", "r"); // deschidem in mod citire
  8. g = fopen("out.txt", "w"); // deschidem in mod afisare
  9. while(!feof(f) && fscanf(f, "%c", &a) != EOF) { // citim pana dam de ssfarsitul fiserului
  10. if (a < '0' || a > '9') // daca a este diferit de cifra consideram ca s-a terminat secventa si sarim pana gasim alta
  11. continue; // sarim toti pasii si ne intoarcem inapoi la primul while
  12. for (i = 49; i <= a; i++) // trebuie sa deschidem a paranteze rotunde
  13. fprintf(g, "(");//deshicem parantezele
  14. fprintf(g, "%c", a); // afisam cifra a
  15. while (!feof(f) && fscanf(f, "%c", &b) != EOF)// mergem pana la sfarsitul linei sau pana cand intalnim un cracter diferit de cifra
  16. {
  17. if (b < '0' || b > '9') // daca b este diferit de cifra parasim buca while
  18. break; // parasirea buclei
  19. if (a > b) // daca a este mai mare ca b
  20. for (i = 1; i <= a - b; i++) // atunci inchdem difernta lor paranteze
  21. fprintf(g, ")");
  22. else
  23. for (i = 1; i <= b - a; i++) // altfel deschidem diferenta lor paranteze daca a = b se vor deschide 0
  24. fprintf(g, "(");
  25. fprintf(g, "%c", b);// afisam cifra curenta acum
  26. a = b;// pastram in memorie cifra curenta pentru a face urmatoarea comparatie
  27. }
  28. for (i = 49; i <= a; i++)// dupa ce am parasit while trebuie sa inchdem b paranteze rounde deoarece nu se mai afla alt numar
  29. fprintf(g, ")");
  30. fprintf(g, "\n");// sarim la rand nou
  31. }
  32. fclose(g);// inchidem fiser
  33. fclose(f);// inchidem fiser
  34. return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment