fisiere
-
Upload
alex-aloman -
Category
Documents
-
view
212 -
download
0
description
Transcript of fisiere
1) Să se scrie programul care creează un fişier text în care memorează două matrice, astfel:- pe prima linie numărul de linii şi numărul de coloane ale primei matrice, separate printr-un
spaţiu; - pe fiecare din liniile următoare, în ordine, elementele unei linii din matrice, separate prin cîte un
spaţiu; în continuare a doua matrice, în aceeaşi 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 înmulţeşte matricele aflate în fişierul creat laproblema anterioară, dacă e posibil. Rezultatul se va memora în acelaşi fişier, în continuare, în aceeaşi formă. Dacă înmulţirea nu e posibilă, se va scrie ca rezultat un mesaj de eroare. Matricele sînt suficient de mici pentru a putea fi încărcate î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 afişează amplitudinea şi media aritmetică a elementelor unui vector memorat într-un fişier 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 memoraţi în fişiere binare. Rezultatul va fi memorat în alt fişier.
#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);}
}