Sunteți pe pagina 1din 4

Lucru cu fișiere text: exemple

Enunțuri:

1. Să se scrie un subprogram pentru crearea unui fișier text care să conțină elemente reale (în fișier sunt memorate
elementele unui vector – un element pe fiecare linie). Se va oferi și un exemplu de utilizare.
2. Să se scrie un subprogram pentru preluarea vectorului în memorie. Se va scrie și programul apelator.
3. Să se scrie programul care memorează într-un fişier text date despre studenţii unei facultăţi. Pe fiecare linie se
memorează: numărul matricol, numele, prenumele, anul, grupa, cele 10 note obţinute la examene. Datele sunt separate
prin cîte un spaţiu.
4. Să se scrie programul care calculează media studenţilor integralişti şi cea mai mare dintre mediile studenţilor
integralişti din fişierul creat anterior.

Rezolvări:

1. Să se scrie un subprogram pentru crearea unui fișier text care să conțină elemente reale (în fișier sunt memorate
elementele unui vector – un element pe fiecare linie). Se va oferi și un exemplu de utilizare.

#define _CRT_SECURE_NO_WARNINGS //în cazul în care apar avertismente legate de securitate


#include <stdio.h>
void scriere_vector(char *nume){
FILE *f; float x;
f=fopen(nume,"w");
if(!f)printf("nu se poate");
else{
printf("x=");
scanf("%f", &x);
while(!feof(stdin)){
fprintf(f, "%4.2f\n", x);
printf("x=");
scanf("%f", &x);}
fclose(f);
}
}

void main()
{
char numef[20];
printf("Introduceti numele fisierului:");
scanf("%s", numef);
scriere_vector(numef);
}

1
2. Să se scrie un subprogram pentru preluarea vectorului în memorie. Se va scrie și programul apelator.

#define _CRT_SECURE_NO_WARNINGS //în cazul în care apar avertismente de securitate


#include<stdio.h>
#include<conio.h>
//in fisier sunt memorate elementele vectorului
void preluare_vector_1(char * nume, float v[], int* n)
{ float x; FILE* f;
f=fopen(nume,"r"); //deschide fisier existent si se permite citirea
if(f)
{ *n=0;
fscanf(f,"%f",&x); //citeste un element real din fisier
while(!feof(f))
{ v[(*n)++]=x;
fscanf(f,"%f",&x); }
fclose(f);
}
else printf("nu se poate");
}

void main()
{
float a[100]; int n;
char numef[20];
printf("Introduceti numele fisierului:");
scanf("%s",numef);
preluare_vector_1(numef, a, &n); //fișierul vector.txt de la exemplul 1
for (int i=0;i<n;i++) printf("%4.1f ,", a[i]);
_getch();
}

3. Să se scrie programul care memorează într-un fişier text date despre studenţii unei facultăţi. Pe fiecare linie se
memorează: numărul matricol, numele, prenumele, anul, grupa, cele 10 note obţinute la examene. Datele sunt
separate prin câte un spaţiu. Acolo unde nu se cunoaşte încă nota se va introduce valoarea 0.

#define _CRT_SECURE_NO_WARNINGS //în cazul în care apar avertismente de securitate


#include<stdio.h>
void main()
{FILE *f;
char nume[30],s[20];
int nr,an,gr,n[10],i;
printf("Nume fisier: ");
gets(s);
2
f=fopen(s,"w");
printf("Nr. matricol: "); scanf("%d",&nr);
while(!feof(stdin))
{fflush(stdin); //getchar();
printf("Nume si prenume: ");gets(nume);
printf("An: ");scanf("%d",&an);
printf("Grupa: ");scanf("%d",&gr);
fprintf(f,"%4d %30s %2d %2d ",nr,nume,an,gr);
for(i=0;i<10;i++)
{printf("nota %d: ",i+1); scanf("%d",&n[i]);
fprintf(f,"%2d ",n[i]);}
fprintf(f,"\n");
printf("Nr. matricol: "); scanf("%d",&nr);}
fclose(f);}

4. Să se scrie programul care calculează media studenţilor integralişti şi cea mai mare dintre mediile studenţilor
integralişti din fişierul creat anterior.

#include<stdio.h>
void main()
{FILE *f;
char nume[30],s[200]; int nr,an,gr,n[10],i,e,p; float m,max,m1;
printf("Nume fisier: "); gets(s);
if(!(f=fopen(s,"r")))printf("Nu se poate deschide fisierul.");
else {p=0;max=0;m1=0;
fscanf(f,"%d",&nr);
while(!feof(f))
{fscanf(f,"%s %d %d",nume,&an,&gr);
e=1;m=0;
for(i=0;i<10;i++)
{fscanf(f,"%d",&n[i]);
if(n[i]<5)e=0; m+=n[i];}
if(e){m/=10; p++; m1+=m;
if(m>max)max=m;}
3
fscanf(f,"%d",&nr);}
if (p==0) printf ("Nu exista niciun student integralist");
else
{printf("\nmedia: %5.2f",m1/p); printf("\nmedia maxima: %5.2f", max);}
}
fclose(f);}

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