Alx09

Ex 5

May 8th, 2020
1,838
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.34 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.     unsigned  i, j, cnt = 0; // conori de pozitie si numarul de mutari
  5.     char sir[1000]; // vectorul in care salvam biti
  6.     FILE *f; // variabila de tip fiser
  7.     f = fopen("in.txt", "r"); // deschidem in mod citire
  8.     fscanf(f, "%u%s", &j, sir);// citim dreapta
  9.     fclose(f);// numai avem nevoie de fiser asa ca i-l inchdem
  10.     f = fopen("out.txt", "w"); // deschidem in mod scriere
  11.     j--; // ultimia pozitie din vector este j -1 asa ca-l decrementam
  12.     fprintf(f, "   \n"); // lasam un rand liber sa adaugam numarul ed mutari pe primul rand
  13.     for (i = 0; i < j; i++) { // parcugrem sirul de la stanga la dreapta
  14.         if (sir[i] == '1') // daca am gasit o val de 1 ne uitam daca mai exista vre-un 0 indreapta sa schimam
  15.             for (; i != j; j--)  // parcurgem sirul de la dreapta la stanga
  16.                 if (sir[j] == '0') { // exista 0 in dreapta si facem schimbarea
  17.                     cnt++; // incrementam numarul de mutari
  18.                     sir[i] = '0'; // schimbam
  19.                     sir[j] = '1'; // schimbam
  20.                     fprintf(f, "%u %u\n", i + 1, j + 1); // afisam indici, j + 1 deaorece trebuie afisat [1, n] si noi i avem in pozitie [0, n-1]
  21.                     break; // revenim la primul for
  22.                 }
  23.  
  24.     }
  25.  
  26.     fseek(f, 0, SEEK_SET);// punem cursorul la inceputul fiserului
  27.     fprintf(f, "%u", cnt);// punem numarul de schimbari la inceputul fiserului     
  28.     fclose(f); // inchidem fiserul
  29.  
  30.     return 0;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment