exemple - fisiere secventiale si text

8
Exemple – fişiere secvenţiale 1. Să se scrie programul care creează un fişier secvenţial cu date despre studenţii unei facultăţi. Articolele au următoarea structură: număr matricol, nume, anul, grupa, numărul de note, notele (maxim 15). Datele se preiau de la tastatură, sfârşitul introducerii fiind marcat standard. Acolo unde nu se cunoaşte încă nota se va introduce valoarea 0. (Numele fisierului binar stud.dat) #include<stdio.h> typedef struct{int nr; char nume[30]; int an; int grupa; int n; int note[15]; }Student; void main() {FILE *f; char s1[20]; Student s; int i; printf("\nFisier: ");gets(s1); f=fopen(s1,"wb"); printf("Nr.matricol: ");scanf("%d",&s.nr); while(!feof(stdin)) {printf("Nume: ");fflush(stdin);gets(s.nume); printf("An: ");scanf("%d",&s.an); printf("Grupa: ");scanf("%d",&s.grupa); printf("Nr.note:(<15)");scanf("%d",&s.n); for(i=0;i<s.n;i++) {printf("Nota %d: ",i+1); scanf("%d",&s.note[i]);} fwrite(&s,sizeof(Student),1,f); printf("Nr.matricol: ");scanf("%d",&s.nr);} fclose(f);} 2. Să se scrie programul care listează, într-un fişier text, sub formă de tabel, conţinutul fişierului creat la problema anterioara. (nume fisier text stud1.txt) #include<stdio.h> 1

Upload: viatr0nic

Post on 18-Aug-2015

246 views

Category:

Documents


3 download

DESCRIPTION

s

TRANSCRIPT

Exemple fiiere secveniale1. Ssescrieprogramul carecreeazunfiiersecvenial cudatedesprestudenii uneifaculti. Articolele au urmtoarea structur: numr matricol, nume, anul, grupa, numruldenote, notelemaxim1!". #atelesepreiaudelatastatur, sf$ritul introducerii fiindmarcat standard. Acolo unde nu se cunoate %nc nota se va introduce valoarea &. 'umelefisierului (inar stud.dat"#includetypedef struct{int nr;char nume[30];int an;int grupa;int n;int note[15];!tudent;"oid main#${%&'( )f;char s1[*0];!tudent s;int i;printf#+,n%isier- +$;gets#s1$;f.fopen#s1/+01+$;printf#+2r.matricol- +$;scanf#+3d+/4s.nr$;0hile#5feof#stdin$${printf#+2ume- +$;fflush#stdin$;gets#s.nume$;printf#+6n- +$;scanf#+3d+/4s.an$;printf#+7rupa- +$;scanf#+3d+/4s.grupa$;printf#+2r.note-#l;fsee=#f/p/0$;return n;typedef struct{int nr;char nume[30];int an;int grupa;int n;int note[15];!tudent;"oid main#${%&'( )f/)g;char s[*0];!tudent s1/s*;int o=/n/i;printf#+,n%isier- +$;gets#s$;if#5#f.fopen#s/+r18+$$$printf#+,n%isierul 3s nu poate fi deschis+/s$;else{n.nrart#f/si9eof#!tudent$$;o=.1;0hile#o=${o=.0;for#i.0;is*.an$?? ##s1.an..s*.an$ 44 #s1.grupa>s*.grupa$$${o=.1;fsee=#f/i)si9eof#!tudent$/0$;f0rite#4s*/ si9eof#!tudent$/ 1/ f$;f0rite#4s1/ si9eof#!tudent$/ 1/ f$;

fclose#f$;

,. Ssescrieprogramulcarelisteaz, %ntr*unfiiertext, studenii integraliti, peani igrupe, calcul$nd media fiecrei grupe i a fiecrui an. fisierul rezultat se va numi stud+.txtsi se va verifica rezultatul comparand cu datele din stud).txt"#include#define f0rite1#:/f$ f0rite#4#:$/si9eof#!tudent$/1/#f$$#define fread1#:/f$ fread#4#:$/si9eof#!tudent$/1/#f$$typedef struct{int nr;char nume[30];int an;int grupa;int n;int note[15];!tudent;"oid main#${%&'( )f/)g;char s1[*0];!tudent s;int i/na/@/e/ng/ca/cg;float ma/mg/ms;printf#+,n%isier- +$;gets#s1$;if#5#f.fopen#s1/+r1+$$$printf#+,n%isierul 3s nu poate fi deschis+/s1$;else {printf#+,n%isier te:t- +$;gets#s1$;g.fopen#s1/+0+$;fread1#s/f$;0hile#5feof#f$${>> operatii initiale pentru anca.s.an;fprintf#g/+,n,n6nul 3d+/ca$;ma.0; na.0;0hile##5feof#f$$44 #s.an..ca$${>> operatii initiale pentru grupamg.0; ng.0;cg.s.grupa;fprintf#g/+,n,t7rupa 3d+/cg$;30hile##5feof#f$$44#ca..s.an$44#cg..s.grupa$${e.1;ms.0;for#@.0;@operatii finale grupaif#ng${fprintf#g/+,n,t7rupa 3d/ media- 35.*f+/cg/mg>ng$;ma8.mg;na8.ng;else fprintf#g/+,n,7rupa nu are integralisti+$;>>operatii finale anif#na$fprintf#g/+,nAedia anului 3d este- 35.*f+/ca/ma>na$;else fprintf#g/+,n6nul nu are integralisti+$;fclose#f$;fclose#g$;

!. S se scrie programul pentru adugarea punctului din oficiu la nota la filosofie pentrustudenii din grupa al crei numr este introdus de la tastatur.#includetypedef struct{int nr;char nume[30];int an;int grupa;int n;int note[15];!tudent;"oid main#${%&'( )f;char s1[*0];!tudent s;int n/i;printf#+,n%isier- +$;gets#s1$;if#5#f.fopen#s1/+r18+$$$printf#+,n%isierul 3s nu poate fi deschis+/s1$;else{printf#+,n2r. grupei- +$;scanf#+3d+/4n$;0hile#5feof#stdin$${re0ind#f$;fread#4s/ si9eof#!tudent$/ 1/ f$;i.0;0hile#5feof#f$${if#n..s.grupa${i.1;s.note[0].#s.note[0]..10$B s.note[0]- s.note[0]81;fsee=#f/ ftell#f$;si9eof#!tudent$/ 0$;4f0rite#4s/ si9eof#!tudent$/ 1/ f$;fsee=#f/ 0/ 1$; >>folosit la trecerea de la scriere la citire

fread#4s/ si9eof#!tudent$/ 1/ f$;

if#5i$ printf#+,n 2u a fost gasit nici un student+$;printf#+,n2r grupei- +$;scanf#+3d+/4n$;fclose#f$;

-. S se scrie programul care afieaz datele despre studenii ale cror numere matricole seintroduc de la tastatur. Sf$ritul introducerii este marcat standard.#include#define f0rite1#:/f$ f0rite#4#:$/si9eof#!tudent$/1/#f$$#define fread1#:/f$ fread#4#:$/si9eof#!tudent$/1/#f$$typedef struct{int nr;char nume[30];int an;int grupa;int n;int note[15];!tudent;"oid main#${%&'( )f/)g;char s1[*0];!tudent s;int i/n/@;printf#+,n%isier- +$;gets#s1$;if#5#f.fopen#s1/+r1+$$$printf#+,n%isierul 3s nu poate fi deschis+/ s1$;else{printf#+,n2r. matricol- +$;scanf#+3d+/4n$;0hile#5feof#stdin$${re0ind#f$;fread1#s/f$;i.0;0hile##5feof#f$$44#5i$${if#n..s.nr${i.1;printf#+,n2r.mat-33d 2ume- 3;30s 6n- 3*d 7rupa- 3