Sunteți pe pagina 1din 5

1) S se scrie programul care creeaz un fiier text n care memoreaz dou matrice, astfel:

pe prima linie numrul de linii i numrul de coloane ale primei matrice, separate printr-un
spaiu;
- pe fiecare din liniile urmtoare, n ordine, elementele unei linii din matrice, separate prin cte un
spaiu; n continuare a doua matrice, n aceeai form.
#include<stdio.h>
void main()
{FILE *f;
int m,n,i,j;
float x;
char s[20];
printf("Nume fisier: ");gets(s);
f=fopen(s,"w");
printf("nr. linii a: ");scanf("%d",&m);
printf("nr. col a: ");scanf("%d",&n);
fprintf(f,"%d %d\n",m,n);
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
{printf("a(%d,%d)=",i,j);
scanf("%f",&x);
fprintf(f,"%5.2f ",x);}
fprintf(f,"\n");}
printf("nr. linii b: ");scanf("%d",&m);
printf("nr. col b: ");scanf("%d",&n);
fprintf(f,"%d %d\n",m,n);
for(i=0;i<m;i++)
{for(j=0;j<n;j++)

{printf("b(%d,%d)=",i,j);
scanf("%f",&x);
fprintf(f,"%5.2f ",x);}
fprintf(f,"\n");}
fclose(f);}

2) S se scrie programul care nmulete matricele aflate n fiierul creat laproblema anterioar,
dac e posibil. Rezultatul se va memora n acelai fiier, n continuare, n aceeai form. Dac
nmulirea nu e posibil, se va scrie ca rezultat un mesaj de eroare. Matricele snt suficient de
mici pentru a putea fi ncrcate n memorie.
#include<stdio.h>
void main()
{FILE *f;
int m,n,p,q,i,j,k;
float x,a[20][20],b[20][20];
char s[20];
printf("Nume fisier: ");gets(s);
if(!(f=fopen(s,"r"))) printf("\nFisierul nu poate fi deschis.");
else{fscanf(f,"%d %d",&m,&n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
fscanf(f,"%f",&a[i][j]);
fscanf(f,"%d %d",&p,&q);
for(i=0;i<p;i++)
for(j=0;j<q;j++)
fscanf(f,"%f",&b[i][j]);
if(n!=p) printf("\nNu se pot inmulti.");

else{f=fopen(s,"a");
fprintf(f,"%d %d\n", m,p);
for(i=0;i<m;i++)
{for(j=0;j<q;j++)
{x=0;
for(k=0;k<n;k++)
x+=a[i][k]*b[k][j];
fprintf(f,"%5.2f ",x);}
fprintf(f,"\n");}
}
fclose(f);}
}

3) S se scrie programul care afieaz amplitudinea i media aritmetic a elementelor unui vector
memorat ntr-un fiier binar.
#include<stdio.h>
#include<conio.h>
void main(void)
{FILE *f;
float x,m,max,min;
int n;
char nume[20];
printf("\nfisier=");
gets(nume);
if(f=fopen(nume,"rb"))
{m=0;

n=0;
if(fread(&x,sizeof(float),1,f)!=sizeof(float))
{max=min=x;
fread(&x,sizeof(float),1,f);
while(!feof(f))
{if(x<min)min=x;
if(x>max)max=x;
m+=x;n++;
fread(&x,sizeof(float),1,f);}
printf("Amplitudine: %7.2f, media: %7.2f",max-min,m/n);}
else printf("\nFisier gol");
fclose(f);}
getch();}
4) S se scrie programul care calculeaz produsul vectorial dintre doi vectori memorai n fiiere
binare. Rezultatul va fi memorat n alt fiier.
#include<stdio.h>
int nrart(FILE *f, int l)
{long p;
int n;
p=ftell(f);
fseek(f,0,2);
n=ftell(f)/l;
fseek(f,0,p);
return n;}
void main()
{FILE *f,*g,*h;
float x,y,z;
char s1[20],s2[20];
printf("\nPrimul fisier: ");gets(s1);
printf("Al doilea fis: ");gets(s2);

if(!(f=fopen(s1,"rb")))printf("Fisierul %s nu poate fi deschis.",s1);


else if(!(g=fopen(s2,"rb")))printf("Fisierul %s nu poate fi deschis",s2);
else {if(nrart(f,sizeof(float))!=nrart(g,sizeof(float)))
printf("Numar diferit de articole.");
else {printf("Fisier rezultat: ");
gets(s1);
h=fopen(s1,"wb");
fread(&x,sizeof(float),1,f);
fread(&y,sizeof(float),1,g);
while(!feof(f))
{z=x*y;
fwrite(&z,sizeof(float),1,h);
fread(&x,sizeof(float),1,f);
fread(&y,sizeof(float),1,g);}
fclose(h);}
fclose(f);
fclose(g);}
}

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