fisiere

6
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);

description

Programare

Transcript of fisiere

Page 1: 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++)

Page 2: fisiere

{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.");

Page 3: fisiere

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;

Page 4: fisiere

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);

Page 5: fisiere

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);}

}