>x; } cout< using namespace std; void main(void) { char *p[] = {"Acesta este un mesaj","acesta este al doilea mesaj","Vreau acasa","Vine vacanta","Sarbatori fericite"}; cout<<"Mesajele definite sunt:"; for(int i=0;i<5;i++) cout<<"\n\t"<
using namespace std; #include void main(int argc,char **argv) { char sir[255]; sir[0] = '\0'; for(int i=1;i
} cout<<"Sirurile concantenate: "< using namespace std; #include void main(int argc,char **argv) { char sir[255]; int len; if(argc!=2) { cout<<"Numar gresit de parametri\n"; return; } len = (int)strlen(*(argv+1)); for(int i=len-1;i>=0;i--) { sir[len-i-1] = *(*(argv+1)+i); } sir[len]='\0'; cout<= 8. Afisati rezultatul în main. (pointeri, fara variabile globale). #include using namespace std; #define DIM 255 void citire(float *,int n); void afisare(float *,int n); int nr_stud(float *,int n); void main(void) { int n; float a[DIM]; cout<<"\n Introduceti nr de studenti:"; cin>>n; if(n>DIM) cout<<"\n Valoare incorecta!"; else { citire(a,n); cout<10 || *(a+i)<1)
{ cout<<"\n Ati introdus cel putin o medie peste nota 10 sau mai mica decat 1!"; return; cout<>*(a+i); } } void afisare(float *a,int n) { for(int i=0;i=8) s++; return s; } 14. //*Scrierea unui program C/C++ în care se citesc de la tastatura elementele de tip întreg ale unui vector a, utilizând o functie. Scrieti o functie care completeaza un alt vector b, fiecare element al acestuia fiind obtinut prin scaderea mediei aritmetice a elementelor din a din elementul corespunzator din a. Scrieti o functie care permite afisarea unui vector si afisati vectorii a si b. (pointeri, fara variabile globale). #include using namespace std; #define DIM 255 void citire(float *,int n); void afisare(float *,int n); void completare_b(float *,float *,int n); void main(void) { int n; float b[DIM],a[DIM]; cout<<"\n Introduceti dimensiunea sirului a:"; cin>>n; citire(a,n); cout<
cout<<"\n Sirul a este:"; afisare(a,n); cout<>*(a+i); } } void afisare(float *a,int n) { for(int i=0;i using namespace std; #define DIM 255 void citire(int *,int n); int elem_neg(int *,int n); void main(void) { int a[DIM][DIM],n,i,s,*pa=&a[0][0]; cout<<"\n Introduceti dimensiunea matricii:"; cin>>n; citire(pa,n); cout<<"\n Deasupra diagonalei secundare sunt "<
cin>>*(a+i*n+j); } } int elem_neg(int *a,int n) { int s=0; for(int i=0;i using namespace std; #define MAX 10 void read(int *p,int n); void interschimba(int *p1,int *p2,int n,int j,int k); void afis(int *p,int n); void main(void) { int v1[MAX][MAX],v2[MAX][MAX],*pv1=&v1[0][0],*pv2=&v2[0][0],n,k,j; cout<<"Introduceti dimensiunea matricei: "; cin>>n; cout<<"Introduceti elementele matricii\n"; read(pv1,n); cout<<"\nIntroduceti liniile pentru interschimbare: "; cin>>j>>k; interschimba(pv1,pv2,n,j,k); cout<<"\nMatricea initiala: "; afis(pv1,n); cout<<"\nMatricea dupa interschimbare: "; afis(pv2,n); } void read(int *p,int n) { for(int i=0;i>*(p+i*MAX+j); } } void interschimba(int *p1,int *p2,int n,int j,int k) { int aux; j--; k--; for(int i=0;i
for(int j=0;j #include void main() { int i,n,*a,neg; printf(" Dati lungimea vectorului "); scanf("%d",&n); a=(int *)malloc(n*sizeof(int));neg=0; for(i=0;i #include void citire(float **a); void calcul(float **a); void eliberare(float **a);
void main() { int i,j; float **a; citire(a); calcul(a); eliberare(a); } void citire(float **a){ int i,j; a=(float **)malloc(5*sizeof(float)); for (i=0;i<5;i++){ a[i]=(float*)malloc(3*sizeof(float)); for(j=0;j<3;j++){ printf("orasul %d , chioscul %d:",i,j); scanf("%f",&a[i][j]); } } } void calcul(float **a){ float sum; int i,j; for(i=0;i<5;i++){ sum=0; for(j=0;j<3;j++){ sum+=a[i][j]; } printf("pentru orasul %d media vanzarilor este:%f",i,sum/3.0); } } void eliberare(float **a){ int i; for(i=0;i<5;i++) free(a[i]); free(a); } 3. /*Sa se scrie o aplicatie C/C++, care aloca dinamic memorie pentru stocarea elementelor a doua matrici de "m" linii si "n" coloane. Sa se scrie o functie care calculeaza suma celor doua matrici si o functie pentru afisarea unei matrici. Sa se afiseze matricile initiale si matricea obtinuta*/ #include #include #include void afisare(int *a,int m,int n){ for(i=0;i
void main(){ int *a,*b,*c,i,j,m,n; a=(int*)malloc(m*n*sizeof(int)); b=(int*)malloc(m*n*sizeof(int)); c=(int*)malloc(m*n*sizeof(int)); citire(a); citire(b); for(i=0;i using namespace std; #include void main() { int n,m,i,j; char *a; cout<<"\n introduceti numarul de siruri:"; cin>>n; cout<<"\n introduceti dimensiunea sirului de caractere!"; cin>>m; if(n<0) { cout<<"\n reintroduceti numarul de siruri!"; } else { for(i=0;i>*(a+j); } if(a) free(a); } } }
5. /*Declarati un pointer global de tip float. În functia main cititi o valoare întreaga N care reprezinta dimensiunea tabloului de numere reale. Alocati memoria necesara pentru stocarea tabloului si cititi elementele de la tastatura. Determinati valoarea medie a celor N elemente si calculati Mn=(sum(pow((xixmed),n))/N, unde n=1,2,3. Afisati rezultatele si apoi eliberati memoria. Folositi functiile malloc si free. Generati numerele din tablou folosind functia de biblioteca care genereaza numere aleatoare si determinati pentru acestea media valorilor si Mn. Realizati aceeasi aplicatie folosind operatorii new si delete */ #include using namespace std; #include float medie(int N1); long int*v; void main() { int N,i,n; long float ma,sumas=0,v1,v2,v3; cout<<"\n introduceti dimensiunea tabloului:"; cin>>N; if(N<=0) { cout<<"\n dimensiune invalida!"; return; } v=(long int*)malloc(N*sizeof(long int)); if(v==NULL) { cout<<"\n alocare esuata!"; return; } else { for(i=0;i
float medie(int N1) { int i; long float med; int sum=0; for(i=0;i using namespace std; void main(void) { int m,n,*p,s=0,ps; cout<<"Introduceti dimensiunile matricii: "; cin>>m>>n; if(m==n) { p = new int[m*(2*m-1)]; memset(p,0,sizeof(int)*m*(2*m-1)); } else { p = new int[m*n]; } cout<<"Introduceti elemetele matricii\n"; for(int i=0;i>*(p+i*(2*m-1)+j); } else cin>>*(p+i*m+j); } } if(m==n) { for(int i=0;i
s+=ps; } for(int j=2*m-2;j>m-2;j--) { ps = 1; for(int i=0;i using namespace std; #include #include #include #define n 10000 void main() { int i,k,aux,j; int*p; int x[10000],y[10000]; p=new int[n]; if(p!=NULL) { srand(2); int RANGE_MIN = 0; int RANGE_MAX = 100; for(i=0;i
{ if(v1==k) x[k]=x[k]+1; } } for(k=0;k<100;k++) { for(i=k+1;i<101;i++) { if(x[k] #include #include using namespace std; #define end "AAA" struct student { char nume[50]; char prenume[50]; char tara[50]; int grupa; int an; }; struct list { struct student *p; struct list *next; }; list* aloc_list(void); student* aloc_student(void); void dealocare(struct list *p);
void main(void) { struct list *start,*p; char nume[50],tara[50]; int grupa; start = aloc_list(); p = start; cout<<"Introduceti datele studentilor:\n"; cout<<"\tNume: "; cin>>nume; while(strcmp(nume,end)!=0) { p->p = aloc_student(); strcpy(p->p->nume,nume); cout<<"\tPrenume: "; cin>>p->p->prenume; cout<<"\tTara: "; cin>>p->p->tara; cout<<"\tGrupa: "; cin>>p->p->grupa; cout<<"\tAnul nasterii: "; cin>>p->p->an; p->next = aloc_list(); p = p->next; cout<<"\n\tNume: "; cin>>nume; } cout<<"\nSfarsit lista student\n"; p->next = NULL; cout<<"Introduceti numarul grupei: "; cin>>grupa; cout<<"Introduceti tara de referinta: "; cin>>tara; p = start; cout<<"\n\nStudentii din grupa "<next) { if(p->p->grupa == grupa) if(strcmp(p->p->tara,tara)==0) cout<<"\t"<p->nume<<" "<p->prenume<<"\tan:"<p->an<next; } dealocare(start); } struct list* aloc_list(void) { struct list *p; if(!(p = new struct list)) { cout<<"\n\nEroare la alocare!\n"; exit(1); } return p; } student* aloc_student(void) {
struct student *p; if(!(p = new struct student)) { cout<<"\n\nEroare la alocare!\n"; exit(1); } return p; } void dealocare(struct list *p) { if(p->next) dealocare(p->next); delete p->p; delete p->next; } 2. //*Sa se scrie un program, in care folosind cate o functie se transfera ca parametru o variabila de tip structura de date, ca valoare si, respectiv, prin adresa folosind pointeri. In functia main initializati campurile structurii cu date citit de la tastatura. In ambele functii afisati datele din structura folosind un mesaj adecvat*// #include using namespace std; struct student { char nume[50]; char prenume[50]; }; void afisNuPointer(struct student p); void afisPointer(struct student *p); void main(void) { struct student p,*pp; pp = &p; cout<<"Introduceti date pentru structura student cu campurile nume si prenume: \n"; cout<<"\tNume: "; cin>>p.nume; cout<<"\tPrenume: "; cin>>p.prenume; cout<<"\nAfisare prin functie cu parametru o variabila de tip structura: "; afisNuPointer(p); cout<<"\nAfisare prin functie cu parametru pointer la o variabila de tip structura: "; afisPointer(pp); } void afisNuPointer(struct student p) { cout<<"\nNume: "<nume<<"\t\tPrenume: "<prenume; } 3. //*Sa se scrie un program, in care o functie returneaza o structura de date adecvata. In acest fel vor fi returnate mai multe valori. Afisati rezultatul, valorile initiale transferate functie (puteti realiza orice operatie in cadrul acelei functii), cu mesaje adecvate*//
#include #include using namespace std; struct siruri { char sir1[50]; char sir2[50]; char sir3[100]; int xerox; }; siruri operatie(struct siruri p); void main(void) { struct siruri p; cout<<"Introduceti doua siruri de caractere: "; cin>>p.sir1>>p.sir2; p = operatie(p); if(p.xerox) cout<<"\nSirurile sunt identice"; else cout<<"\nCele doua siruri sunt diferite"; cout<<"\nSirul rezultat prin concantenarea celor doua siruri: "< #include using namespace std; struct data{ int zi; int luna; int an; }; struct angajat { char nume[50]; char prenume[50]; char ocupatie[50]; struct data *d; char sectie[50]; }; data* readDate(struct data *d); void main(void) {
int n; struct angajat *p; cout<<"Introduceti numarul de angajati: "; cin>>n; if(!(p = new struct angajat[n])) { cout<<"\nEroare la alocare!\n"; return; } for(int i=0;i>(p+i)->nume; cout<<"\tPrenume: "; cin>>(p+i)->prenume; cout<<"\tOcupatie: "; cin>>(p+i)->ocupatie; cout<<"\tData nastere: "; (p+i)->d = readDate((p+i)->d); cout<<"\tSectia: "; cin>>(p+i)->sectie; } cout<<"\nAngajatii care sunt de profesie ingineri: \n"; for(int i=0;iocupatie,"inginer")==0) { cout<<"\t"<<(p+i)->nume<<" "<<(p+i)->prenume<<"\t\t"<<(p+i)->d->zi<<"."<<(p+i)->d>luna<<"."<<(p+i)->d->an<<"\t"<<(p+i)->sectie<d; delete []p; } data* readDate(struct data *d) { if(!(d = new struct data)) { cout<<"\nEroare la alocare!\n"; exit(1); } cout<<"\n\t\tZi: "; cin>>d->zi; cout<<"\t\tLuna: "; cin>>d->luna; cout<<"\t\tAn: "; cin>>d->an; return d; } 5. //*Sa se scrie un program care citeste datele personale pentru n persoane (nume, prenume, data nasterii codul numeric personal, data angajarii) si apoi le afiseaza in ordinea datei angajariii*// #include
#include using namespace std; struct data { int zi; int luna; int an; }; struct persoana{ char nume[50]; char prenume[50]; struct data *dn; char codnumeric[13]; struct data *da; }; void sort(struct persoana *p,int *v,int n); void afis(struct persoana *p,int *v,int n); data* readDate(void); int compareDate(struct data *p1,struct data *p2); void dealocare(struct persoana *p,int *v,int n); void main(void) { int n,*v; struct persoana *p; cout<<"Introduceti numarul de persoane: "; cin>>n; if(!(p = new struct persoana[n])) { cout<<"\n\nEroare la alocare!\n"; exit(1); } if(!(v = new int[n])) { cout<<"\n\nEroare la alocare!\n"; exit(1); } cout<<"Introduceti datele celor "<>(p+i)->nume; cout<<"\tPrenume: "; cin>>(p+i)->prenume; cout<<"\tData nasterii: "; (p+i)->dn = readDate(); cout<<"\tCNP: "; cin>>(p+i)->codnumeric; cout<<"\tData angajarii: "; (p+i)->da = readDate(); } for(int i=0;i
void sort(struct persoana *p,int *v,int n) { int res,aux; for(int i=0;ida,(p+*(v+j))->da); if(res>0) { aux = *(v+i); *(v+i) = *(v+j); *(v+j) = aux; } } } } void afis(struct persoana *p,int *v,int n) { cout<<"Personalul aranjat dupa data angajarii:"; for(int i=0;inume<<" "<<*(p+*(v+i))->prenume<<"\n\t\tcnp:"<<(p+*(v+i))->codnumeric <<"\n\t\t d.nas: "<<(p+*(v+i))->dn->zi<<"."<<(p+*(v+i))->dn->luna<<"."<<(p+*(v+i))->dn->an <<"\n\t\t d.angj: "<<(p+*(v+i))->da->zi<<"."<<(p+*(v+i))->da->luna<<"."<<(p+*(v+i))->da->an; } } data* readDate(void) { struct data *p; if(!(p = new struct data)) { cout<<"\n\nEroare la alocare!\n"; exit(1); } cout<<"\n\t\tZi: "; cin>>p->zi; cout<<"\t\tLuna: "; cin>>p->luna; cout<<"\t\tAn: "; cin>>p->an; return p; } int compareDate(struct data *p1,struct data *p2) { if(p1->an < p2->an) return -1; if(p1->an == p2->an) { if(p1->luna < p2->luna) return -1; if(p1->luna == p2->luna) { if(p1->zi < p2->zi) return -1; if(p1->zi == p2->zi)
return 0; } } return 1; } void dealocare(struct persoana *p,int *v,int n) { for(int i=0;ida; delete (p+i)->dn; } delete []p; delete []v; } 6. //*Sa se scrie un program care afiseaza numele, prenumele si media studentului cu cele mai bune rezultate din grupa in urma sesiunii de iarna. Folositi pentru aceasta o structura student, alocarea dinamica, si o functie de care returneaza inregistrarea student care are media cea mai mare*// #include using namespace std; struct student { char nume[50]; char prenume[50]; float medie; }; void afis(struct student *p,int n); void main(void) { int n; struct student *p; cout<<"Introduceti numarul de studenti din grupa: "; cin>>n; if(!(p = new struct student[n])) { cout<<"\n\nEroare la alocare\n"; return; } cout<<"\nIntroduceti datele studentilor:"; for(int i=0;i>(p+i)->nume; cout<<"\tPrenume: "; cin>>(p+i)->prenume; cout<<"\tMedia: "; cin>>(p+i)->medie; } cout<<"Studentul cu media cea mai mare este: "; afis(p,n); delete []p; } void afis(struct student *p,int n) {
float max = p->medie; int loc = 0; for(int i=1;imedie > max) { loc = i; max = (p+i)->medie; } } cout<<"\n\t"<<(p+loc)->nume<<" "<<(p+loc)->prenume<<"\tmedie: "<<(p+loc)->medie< using namespace std; struct student { char nume[50]; char prenume[50]; char sex; }; void main(void) { int n,cate=0; struct student *p; cout<<"Introduceti numarul de studenti: "; cin>>n; if(!(p = new struct student[n])) { cout<<"\n\nEroare la alocare!\n"; exit(1); } cout<<"Introduceti datele studentilor: "; for(int i=0;i>(p+i)->nume; cout<<"\tPrenume: "; cin>>(p+i)->prenume; cout<<"\tSex(m/f): "; cin>>(p+i)->sex; } for(int i=0;isex == 'f') cate++; } if(cate>0) cout<<"\n"<
8. //*Declarati o structura de date de tip struct, o_struct, care sa contina o variabila de tip intreg, una de tip caracter si un sir de 256 caractere. In programul principal definiti o variabila statica de tip o_struct, careia sa-i initializati variabilele cu date citite de la intrarea standard. Declarati apoi un pointer de tip o_struct, po_struct, pe care sa-l definiti folosind alocarea dinamica cu o zona de memorie care sa contina un articol de tip o_struct. Initializati campurile structurii de date folosind pointer, po_struct. Eliberati in final zona de memorie alocata*// #include #include using namespace std; struct o_struct { int nr; char caracter; char sir[255]; }; void main(void) { struct o_struct str,*po_struct; cout<<"Introduceti un numar intreg: "; cin>>str.nr; cout<<"Introduceti un caracter: "; cin>>str.caracter; cout<<"Introduceti un sir de caractere: "; cin>>str.sir; if(!(po_struct = new struct o_struct)) { cout<<"\n\nEroare la alocare!\n"; exit(1); } po_struct->nr = str.nr; po_struct->caracter = str.caracter; strcpy(po_struct->sir,str.sir); delete po_struct; } TEMA LABORATOR 12 1. //*Folosind structura de date union denumita grupa compusa din diferite campuri cum ar fi: int, long, double, char etc.,scrieti o aplicatie care va initializa un element de tipul grupa de la tastatura. Este posibil sa afisam in acelasi timp toate campurile folosind pointeri sau nume calificate? Afisati ceea ce este posibil si dimensiunea elementului union. Realizati aceeasi operatie considerand o simpla structura struct*// #include using namespace std; void main(void) { union grup { int nrint; float nrfloat; }g; cout<<"Operatia aplicata unei uniuni\n"; cout<<"Introduceti un numar real: "; cin>>g.nrfloat; cout<<"Introduceti un numar intreg: ";
cin>>g.nrint; cout<<"\nValoare numarul real a fost pierduta. Valoarea numarul intreg este: "<>s.nrfloat; cout<<"Introduceti un numar intreg: "; cin>>s.nrint; cout<<"\nValoarea numarului real este: "< #include using namespace std; void main(void) { int opt,n,aux; char fileName[50]; FILE *f; cout<<"Introduceti 1 pentru a crea un fisier sau 2 pentru a afisa datele dintr-un fisier: "; do { cin>>opt; if(opt>2 || opt<1) cout<<"Optiune invalida, reincercati: "; else break; } while(true); if(opt == 1) { cout<<"\nIntroduceti numele fisierului pe care doriti sa il creati: "; cin>>fileName; f = fopen(fileName,"w"); if(f == NULL) { cout<<"\n\nEroare la crearea fisierului!\n"; return; } cout<<"\nIntroduceti cate numere intregi vreti sa scrieti in fisier: "; cin>>n; cout<<"\nIntroduceti numerele: "; for(int i=0;i>aux;
fprintf(f," %d",aux); } fclose(f); cout<<"\nNumerele au fost scrise cu succes"; } else { cout<<"\nIntroduceti numele fisierului pentru citire: "; cin>>fileName; f=fopen(fileName,"r"); if(f==NULL) { cout<<"\n\nEroare la deschiderea fisierului!\n"; return; } cout<<"\nNumerele din fisier sunt: \n"; while(feof(f)==0) { fscanf(f,"%d",&aux); cout<<" "< #include #include using namespace std; void createFile(char fileName[]); void sort(int *p); int catePare(int *p); void main(void) { int *p,op,cate; char fileName[255],s[255],opt; FILE *f; cout<<"Introduceti: \n\t1 pentru prelucrarea informatiilor din fisier\n\t2 pentru crearea unui fisier nou \n\t3 pentru vizualizarea rezultatului dintr-un fisier\n\n\tOptiune:"; do { cin>>op; if(op==1||op==2||op==3) break; else cout<<"Optiune invalida, reincercati: "; } while(true); if(op == 1) { cout<<"Introduceti numele fisierului: ";
cin>>fileName; f = fopen(fileName,"r"); if(f==NULL) { cout<<"Fisierul nu exista, doriti sa il creati(y/n)?"; do { cin>>opt; if(opt == 'y' || opt == 'n') break; else cout<<"Optiune invalida, reincercati(y/n): "; } while(true); if(opt == 'y') { createFile(fileName); return; } else { cout<<"\nO zi buna!"; return; } } if(!(p = new int[10])) { cout<<"\nEroare la alocarea dinamica!\n"; return; } for(int i=0;i<10;i++) { if(feof(f)) { cout<<"Fisierul nu contine date valide"; return; } fscanf(f,"%d",p+i); } sort(p); cate = catePare(p); fclose(f); f = fopen(fileName,"w"); if(f==NULL) { cout<<"\nEroare la deschidere!\n"; return; } fprintf(f,"Numerele ordonate crescator:\n\t"); for(int i=0;i<10;i++) { fprintf(f," %d",*(p+i)); } fprintf(f,"\n\nDin care %d sunt pare.\n",cate); fclose(f); } else {
if(op == 2) { cout<<"\nIntroduceti numele fisierului: "; cin>>fileName; createFile(fileName); } else { cout<<"\nIntroduceti numele fisierului: "; cin>>fileName; f = fopen(fileName,"r"); if(f==NULL) { cout<<"Eroare la deschidere"; return; } while(feof(f)==0) { cout<>aux; fprintf(f," %d",aux); } fclose(f); cout<<"\nNumerele au fost scrise cu succes\n"; } void sort(int *p) { int aux; for(int i=0;i<9;i++) { for(int j=i+1;j<10;j++) { if(*(p+i)>*(p+j)) { aux = *(p+i); *(p+i) = *(p+j); *(p+j) = aux;
} } } cout<<"\nVectorul ordonat: \n\t"; for(int i=0;i<10;i++) { cout<<" "<<*(p+i); } } int catePare(int *p) { int cate = 0; for(int i=0;i<10;i++) { if(*(p+i) % 2 == 0) { cate ++; } } cout<<"\n"< #include #include using namespace std; void createFile(char fileName[]); void sort(int *p); int catePare(int *p); void main(void) { int *p,op,cate; char fileName[255],s[255],opt; FILE *f; cout<<"Introduceti: \n\t1 pentru prelucrarea informatiilor din fisier\n\t2 pentru crearea unui fisier nou \n\t3 pentru vizualizarea rezultatului dintr-un fisier\n\n\tOptiune:"; do { cin>>op; if(op==1||op==2||op==3) break; else cout<<"Optiune invalida, reincercati: "; } while(true); if(op == 1) {
cout<<"Introduceti numele fisierului: "; cin>>fileName; f = fopen(fileName,"r"); if(f==NULL) { cout<<"Fisierul nu exista, doriti sa il creati(y/n)?"; do { cin>>opt; if(opt == 'y' || opt == 'n') break; else cout<<"Optiune invalida, reincercati(y/n): "; } while(true); if(opt == 'y') { createFile(fileName); return; } else { cout<<"\nO zi buna!"; return; } } if(!(p = new int[10])) { cout<<"\nEroare la alocarea dinamica!\n"; return; } for(int i=0;i<10;i++) { if(feof(f)) { cout<<"Fisierul nu contine date valide"; return; } fscanf(f,"%d",p+i); } sort(p); cate = catePare(p); fclose(f); f = fopen(fileName,"w"); if(f==NULL) { cout<<"\nEroare la deschidere!\n"; return; } fprintf(f,"Numerele ordonate crescator:\n\t"); for(int i=0;i<10;i++) { fprintf(f," %d",*(p+i)); } fprintf(f,"\n\nDin care %d sunt pare.\n",cate); fclose(f); } else { if(op == 2)
{ cout<<"\nIntroduceti numele fisierului: "; cin>>fileName; createFile(fileName); } else { cout<<"\nIntroduceti numele fisierului: "; cin>>fileName; f = fopen(fileName,"r"); if(f==NULL) { cout<<"Eroare la deschidere"; return; } while(feof(f)==0) { cout<>aux; fprintf(f," %d",aux); } fclose(f); cout<<"\nNumerele au fost scrise cu succes\n"; } void sort(int *p) { int aux; for(int i=0;i<9;i++) { for(int j=i+1;j<10;j++) { if(*(p+i)>*(p+j)) { aux = *(p+i); *(p+i) = *(p+j); *(p+j) = aux; } } } cout<<"\nVectorul ordonat: \n\t"; for(int i=0;i<10;i++)
{ cout<<" "<<*(p+i); } } int catePare(int *p) { int cate = 0; for(int i=0;i<10;i++) { if(*(p+i) % 2 == 0) { cate ++; } } cout<<"\n"< #include using namespace std; void main(void) { FILE *f; char c,fileName[255]; int n; cout<<"Introduceti caracterul: "; cin>>c; cout<<"Introduceti numarul de multiplicitate: "; cin>>n; cout<<"Introduceti numele fisierului: "; cin>>fileName; f = fopen(fileName,"w"); if(f == NULL) { cout<<"\nEroare la deschidere!\n"; return; } for(int i=0;i
#include using namespace std; void main(void) { int opt; char fileName[255],s[255]; FILE *f; cout<<"Introduceti:\n\t1 pentru a citi un fisier\n\t2 pentru a crea un fisier\n\n\tOptiune:"; do { cin>>opt; if(opt==1 || opt == 2) break; else cout<<"\tOptiune invalida, reincercati: "; } while(true); if(opt ==1 ) { cout<<"\nIntroduceti numele fisierului: "; cin>>fileName; f=fopen(fileName,"r"); if(f==NULL) { cout<<"\nEroare la deschidere!\n"; return; } while(feof(f)==0) { fgets(s,255,f); cout<>fileName; f=fopen(fileName,"w"); if(f==NULL) { cout<<"\nEroare la deschidere!\n"; return; } cout<<"\nIntroduceti textul de scris in fisier, pentru a incheia introduceti * pe o linie noua:\n"; fflush(stdin); do { gets(s); if(s[0]=='*' && s[1] == '\0') break; fprintf(f,"%s\n",s); } while(true); fclose(f); cout<<"\n\nFisierul a fost scris cu succes!"; }
TEMA LABORATOR NR.13 1. //*Sa se scrie o aplicatie care: - citeste de la consola un numar intreg n; - citeste de la consola, cu o functie, n numere reale, intr-un vector dinamic; - scrie apoi valorile din tablou intr-un fisier binar al carui nume este citit de la consola; - citeste apoi continutul fisierului si afiseaza numerele din 3 in 3 pozitii, folosind accesul aleator la fisiere*// #include #include using namespace std; void read(int *p,int n); void main(void) { int n,*p,a; char fileName[255]; FILE *f; cout<<"Introduceti dimensiunea vectorului: "; cin>>n; if(!(p = new int[n])) { cout<<"Eroare la la alocarea dinamica!"; return; } read(p,n); cout<<"Introduceti numele fisierului: "; cin>>fileName; if((f=fopen(fileName,"wb"))==NULL) { cout<<"Eroare la deschiderea fisierului"; return; } fwrite(p,sizeof(int),n,f); fclose(f); if((f=fopen(fileName,"rb"))==NULL) { cout<<"Eroare la deschiderea fisierului"; return; } while(true) { fread(&a,sizeof(int),1,f); if(feof(f)!=0) break; else { cout<< fseek(f,2*(long)sizeof(int),SEEK_CUR); } } fclose(f); } void read(int *p, int n) { cout<<"Introduceti elementele vectorului\n";
for(int i=0;i { cout<<"\tElementul "<<<": "; cin>>*(p+i); } } 2. //*Sa se scrie o aplicatie care: - defineste o structura Student (nume,prenume,grupa,medie); - citeste de la consola un numar intreg n; - pentru fiecare student, citeste cu o functie datele aferente si le scrie intr-un fisier cu numele preluat de la consola; - citeste continutul fisierului si afiseaza la consola studentii ce au media mai mare decat o medie citita de la consola*// #include using namespace std; #include struct student{ char nume[50]; char prenume[50]; int grupa; float medie; }; void read(struct student *p); void main(void) { struct student *p; int n; FILE *f; char fileName[255]; float med; cout<<"Introduceti numarul de studenti: "; cin>>n; if(!(p = new struct student[n])) { cout<<"Eroare la alocarea dinamica!"; return; } cout<<"Introduceti datele studentilor\n"; for(int i=0;i { read(p+i); } cout<<"\nIntroduceti numele fisierului: "; cin>>fileName; if((f = fopen(fileName,"wb"))==NULL) { cout<<"Eroare la deschiderea fisierului"; return; } for(int i=0;i { fwrite((p+i),sizeof(student),1,f); } fclose(f);
cout<<"\nIntroduceti media limita: "; cin>>med; if((f=fopen(fileName,"rb"))==NULL) { cout<<"Eroare la deschiderea fisierului"; return; } cout<<"Studentii cu medie mai mare decat "<<<":\n"; for(int i=0;i { fread((p+i),sizeof(student),1,f); if((p+i)->medie>med) { cout<<"\n\t"<<(p+i)->nume<<"\t"<<(p+i)->prenume<<"\n\t\tgr: "<<(p+i)->grupa<<"\tmed: "<<(p+i)->medie; } } fclose(f); } void read(struct student *p) { cout<<"\n\tNume: "; cin>>p->nume; cout<<"\tPrenume: "; cin>>p->prenume; cout<<"\tGrupa: "; cin>>p->grupa; cout<<"\tMedia: "; cin>>p->medie; } 3. //*Sa se scrie o aplicatie care: - citeste de la consola un numar intreg n; - citeste de la consola, cu o functie, n numere intregi, intr-un vector dinamic; - scrie apoi valorile din tablou intr-un fisier binar al carui nume este citit de la consola; - citeste apoi continutul fisierului si afiseaza pozitiile pe care s-au gasit numere pare*// #include using namespace std; #include void read(int *p,int n); void main(void) { int n,*p; char fileName[255]; FILE *f; cout<<"Introduceti dimensiunea vectorului: "; cin>>n; if(!(p= new int[n])) { cout<<"Eroare la alocarea dinamica"; return; } cout<<"Introduceti numerele: \n"; read(p,n); cout<<"Introduceti numele fisierului: ";
cin>>fileName; if((f=fopen(fileName,"wb"))==NULL) { cout<<"Eroare la deschiderea fisierului"; return; } fwrite(p,sizeof(int),n,f); fclose(f); if((f=fopen(fileName,"rb"))==NULL) { cout<<"Eroare la deschiderea fisierului"; return; } fread(p,sizeof(int),n,f); fclose(f); cout<<"Elementele pare sunt pe pozitiile: \n\t"; for(int i=0;i { if(*(p+i)%2==0) { cout<<" "< } } delete []p; } void read(int *p,int n) { for(int i=0;i { cout<<"\tElementul "<<<": "; cin>>*(p+i); } } 4. //*Sa se scrie un program care primeste in linia de comanda doua nume de fisiere. Prin program se citesc 8 numere intregi, care apoi vor fi scrise, in mod binar, in primul fisier. Cititi apoi valorile din acest fisier si efectuati media aritmetica a numerelor mai mari decat 4. Rezultatul va fi scris in al doilea fisier, sub forma: Media aritmetica a numerelor ..., este .... Unde in locul punctelor de suspensie vor fi scrise valorile a caror pedie a fost calculata si respectiv valoarea mediei cu o precizie de 2 digiti*// #include using namespace std; #include void main(void) { char fileNameIn[255],fileNameOut[255]; int *p,cate=0; float med=0; FILE *f; cout<<"Introduceti numele fisierului intrare: "; cin>>fileNameIn; cout<<"Introduceti numele fisierului iesire: "; cin>>fileNameOut; if(!(p=new int[8])) {
cout<<"Eroare la alocarea dinamica"; return; } cout<<"Introduceti 8 numere intregi: \n"; for(int i=0;i<8;i++) { cout<<"\tElementul "<<<": "; cin>>*(p+i); } if((f=fopen(fileNameIn,"wb"))==NULL) { cout<<"Eroare la deschiderea fisierului"; return; } fwrite(p,sizeof(int),8,f); fclose(f); if((f=fopen(fileNameIn,"rb"))==NULL) { cout<<"Eroare la deschiderea fisierului"; return; } fread(p,sizeof(int),8,f); fclose(f); if((f=fopen(fileNameOut,"w"))==NULL) { cout<<"Eroare la deschiderea fisierului"; return; } fprintf(f,"Media aritmetica a numerelor "); for(int i=0;i<8;i++) { if(*(p+i)>4) { fprintf(f," %d",*(p+i)); med+=*(p+i); cate++; } } med/=cate; fprintf(f,", este %.2f.",med); fclose(f); cout<<"\nRezultatul a fost scris in fisierul "< }