Documente Academic
Documente Profesional
Documente Cultură
#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ă.)