Sunteți pe pagina 1din 3

1.

Să se scrie programul care:


• preia un vectorul din fișier text și îl plasează într-o zonă alocată dinamic în memoria internă, în
vederea prelucrării ulterioare. (Se presupune că masivul are o dimensiune rezonabilă pentru a fi
încărcat în memoria principală.)
• scrie elementele unui vector intr-un fisier text.
• scrie elementele de pe pozitiile pare intr-un fisier text.

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#pragma warning (disable:4996)
int preluare_vector_1(char nume[20], float **v, int* n)
{
float x;
FILE* f;
int er=1, i;
f = fopen(nume, "r");
*n = 0;
if (f!=NULL)
{
while (fscanf_s(f, "%f", &x) > 0)
{
(*n)++;
}
//alocare memorie pentru vector
(*v) = (float *)malloc((*n) * sizeof(float));
rewind(f);
//preluare elemente vector
i = 0;
fscanf(f, "%f", &x);
while (!feof(f))
{

(*v)[i] = x; i++;
fscanf(f, "%f", &x);

}
/*while(fscanf(f, "%f", &x) > 0)
{
(*v)[*n]=x;(*n)++;
}*/
fclose(f);
}
else er = 0;
return er;
}
void scrie_fis_vector_1(char nume[20], float *v, int n)
{
float x;
FILE* f;
int i;
f=fopen(nume, "w");
for (i = 0; i < n; i++)
fprintf(f,"%5.2f ", v[i]);
}
void scrie_fis_vector_2(char nume[20], float *v, int n)
{
float x;
FILE* f;
int i;
f = fopen(nume, "w");
for (i = 0; i < n; i++)
if((i % 2)==0) fprintf(f, "%5.2f ", v[i]);
}

void main()
{
float *a;
char nume[20];
int i, n = 0, er;
printf("numele este:");
gets_s(nume);
er=preluare_vector_1(nume, &a, &n);
if (er == 0)
printf("\nNu s-a putut deschide fisierul");
else
{
if (n==0) printf("Vectorul preluat nu are elemente \n");
else {
printf("Vectorul preluat are %d elemente \n", n);
for (i = 0; i < n; i++)
printf("%5.2f ", a[i]);
printf("\nnumele noului fisier este:");
gets_s(nume);
scrie_fis_vector_1(nume, a, n);
printf("\nnumele noului fisier este:");
gets_s(nume);
scrie_fis_vector_2(nume, a, n);
free(a);
}
}

}
Probleme:

1. Fie un fișier text în care este memorată o matrice cu elemente reale. Fișierul este organizat astfel: pe
primul rând se află numărul de linii și numărul de coloane, separate printr-un spațiu. Pe fiecare din
rândurile următoare se află elementele câte unei linii din matrice, separate prin câte un spațiu (matricea
este completă - corespunde dimensiunilor din prima linie a fișierului). Scrieți un subprogram care preia
matricea din fișier.

2. Fie un fișier text în care este memorată o matrice cu elemente reale. Fișierul este organizat astfel: pe
primul rând se află numărul de linii și numărul de coloane, separate printr-un spațiu. Pe fiecare din
rândurile următoare se află elementele câte unei linii din matrice, separate prin câte un spațiu (matricea
este completă - corespunde dimensiunilor din prima linie a fișierului). Scrieți un subprogram care preia
matricea din fișier și o plasează într-o zonă alocată dinamic din memoria internă în vederea prelucrării
ulterioare. (Se presupune că masivul are o dimensiune rezonabilă pentru a fi încărcat în memoria
principală și că fișierul nu este gol.)

3. Fie un fișier text în care este memorată o matrice cu elemente reale. Fișierul este organizat astfel: pe
fiecare rând se află elementele câte unei linii din matrice, separate prin câte un spațiu (matricea este
completă – toate rândurile au același număr de elemente). Dimensiunile matricei nu sunt memorate în
fișier. Scrieți un subprogram care preia matricea din fișier și o plasează într-o zonă alocată dinamic din
memoria internă în vederea prelucrării ulterioare. (Se presupune că masivul are o dimensiune rezonabilă
pentru a fi încărcat în memoria principală.)

S-ar putea să vă placă și