cmiN

nat-2-p1.c

Sep 7th, 2020 (edited)
1,171
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Mai jos avem numele si mesajele afisate de program dupa compilare si rulare.
  2. /*
  3. Natalia Maria
  4.  
  5. % gcc -o p1 -Wall -std=c99 p1.c
  6. ./p1
  7. Dimensiune vector V: 4
  8. Introdu 4 numere: 1 2 10 -3
  9. Elementele vectorului V: 1 2 10 -3
  10. Elementele vectorului W: 1 2 10 -3
  11. */
  12.  
  13. // Pentru afisare mesaje consola si citire date tastatura.
  14. #include <stdio.h>
  15.  
  16. // Peste tot unde avem `N` va fi inlocuit de valoarea 1024.
  17. #define N 1024
  18.  
  19.  
  20. // Definim doi vectori `V` si `W` de lungime `N`.
  21. int V[N], W[N];
  22.  
  23.  
  24. int main() {
  25.     // Citire si afisare vector.
  26.     int n = 0;
  27.     // Cerem de la tastatura dimensiunea vectorului `V`.
  28.     printf("Dimensiune vector V: ");
  29.     scanf("%d", &n);
  30.     printf("Introdu %d numere: ", n);
  31.     // Introducem `n` numere in vector de la tastatura.
  32.     for (int i = 0; i < n; ++i) {
  33.         int e;
  34.         // Unde fiecare numar nou obtinut de la tastatura.
  35.         scanf("%d", &e);
  36.         // Intra pe pozitia `i` in vector. (incepand de la 0)
  37.         V[i] = e;
  38.     }
  39.     printf("Elementele vectorului V: ");
  40.     // Fix asa cum le-am introdus, acum vom afisa numerele din vector, incepand de pe pozitia `0`.
  41.     for (int i = 0; i < n; ++i) printf("%d ", V[i]);
  42.     printf("\n");
  43.  
  44.     // Scriere si citire din fisier.
  45.     FILE * pf;  // acesta este un pointer la fisier, prin care vom controla scrierea si citirea din fisier. (nu de la tastatura)
  46.     // Asa deschidem un fisier cu numele "vec.txt" in modul de scriere ("w").
  47.     pf = fopen("vec.txt", "w");
  48.     // Asa cum am folosit pana cum scanf si printf, le punem un `f` in fata (fscanf si fprintf) pt. a face acelasi set de operatii, insa de aceasta data pe fisiere.
  49.     // Scriem in fisier cate numere avem in vector.
  50.     fprintf(pf, "%d\n", n);
  51.     // Acum scriem in fisier pe urmatorul rand toate numerele unul dupa altul.
  52.     for (int i = 0; i < n; ++i) fprintf(pf, "%d ", V[i]);
  53.     fprintf(pf, "\n");
  54.     // Ne asiguram ca toate datele scrise chiar intra si pe disc. (adica in fisier)
  55.     fflush(pf);
  56.     // Apoi inchidem fisierul, ca asa e frumos.
  57.     fclose(pf);
  58.  
  59.     // La fel cum am scris numerele in fisier, acum le citim din el.
  60.     int m;
  61.     // De aceea deschidem acelasi fisier in modul de citire de data asta.
  62.     pf = fopen("vec.txt", "r");
  63.     // Aflam cate numere am stocat in fisier in variabila `m`.
  64.     fscanf(pf, "%d", &m);
  65.     // De `m` ori...
  66.     for (int i = 0; i < m; ++i) {
  67.         int e;
  68.         // Vom citi un numar nou aflat in fisier. (fiindca stim deja ca avem `m` numere scrise (fostul `n`)).
  69.         fscanf(pf, "%d", &e);
  70.         // Si punem pe pozitii consecutive, incepand de la 0, in vector numerele anterior stocate.
  71.         W[i] = e;
  72.     }
  73.  
  74.     // Afisam din nou, de data aceasta continutul vectorului `W`, care ar trebui sa fie identic cu cel anterior (`V`).
  75.     printf("Elementele vectorului W: ");
  76.     for (int i = 0; i < m; ++i) printf("%d ", W[i]);
  77.     printf("\n");
  78.  
  79.     return 0;
  80. }
RAW Paste Data