Cuprins
- 1. Tema proiectului 3
- 2. Propunere de rezolvare 3
- 3. Programul in C 4
- 4. Functiile folosite 33
- 4. Bibliografie 34
Extras din proiect
1. Tema proiectului
Se cere sa se realizeze o baza de date care sa simuleze un catalog scolar. Pentru realizarea bazei de date se vor folosi:
o un fisier text si un fisier binar;
- lista si un arbore de cautare;
- tehnica de programare (backtracking, divide et impera, etc.);
- tehnica de combinatorica iterativa;
- tehnica de sortare;
o informatiile din lista si arbore se vor retine in cel doua fisiere.
2. Propunere de rezolvare
Baza de date va fi construita in jurul celor doua structuri de informatii diferite. Lista simplu inlantuita va contine informatii despre elev iar arborele de cautare va contine mediile elevului. Informatiile din lista vor fi descarcate permanent din fisierul binar delev.dat iar informatiile din arborele de cautare vor fi descarcate din fisierul text melev.txt. Pentru a memora numele materiilor precum si numarul acestora se va folosi un alt fisier text denumit materii.txt.
Pentru a utiliza o tehnica de programare, „divide et impera” in cazul de fata, s-a presupus ca elevii unei clase vor trebui sa fie sortati dupa medie. Tehnica „divide et impera” a fost implementata in cadrul tehnicii de sortare „quick sort”.
Tehnica de combinatorica iterativa a fost folosita pentru a rezolva urmatoarea problema: Se pesupune ca utilizatorii acestui program vor avea nevoie ca in cadrul unui concurs sa aranjeze un numar par de elevi in grupuri de cate doi pentru a concura unul impotriva altuia. In acest scop s-au folosit combinari.
Pe langa tehnica „quick sort”, s-a folosit si tehnica de sortare prin selectie. Aceasta tehnica a fost folosita pentru a aranja elevii dintr-o clasa in ordinea in care ar aparea inrt-un catalog real.
3. Programul in limbajul C
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <ctype.h>
# include <math.h>
# include <string.h>
typedef struct{
int nc;
char nume[25];
char prenume[25];
char cnp[14];
char clasa[7];
} elev;
typedef struct{
int nc;
float medii[25];
float ms1;
float ms2;
float mg;
} medie;
typedef struct{
int nc;
float mg;
} medgen;
typedef struct tipnod{
elev inf;
struct tipnod *urm;
} nod;
typedef struct tnod{
medie info;
struct tnod *st;
struct tnod *dr;
}mnod;
nod *p,*d,*tt,*d1;
mnod *p1,*t,*q,*r,*rad,*rr;
FILE *f1,*f2,*f3,*f5,*f9;
elev e1,e[50];
medie m1;
medgen m2[50];
int n,del,kk,v[50],v1[50],nn,mm,ig,v2[50],m;
tnod* adaugare(mnod *p1,medie m1,int x1)
{
int jj;
if (p1== NULL)
{
p1=new mnod;
p1->info.nc=m1.nc;
for (jj=0;jj<2*x1;jj++)
p1->info.medii[jj]=m1.medii[jj];
p1->info.ms1=m1.ms1;
p1->info.ms2=m1.ms2;
p1->info.mg=m1.mg;
p1->st=NULL;
p1->dr=NULL;
}
else
if (m1.nc<p1->info.nc)
p1->st=adaugare(p1->st,m1,x1);
else
if (m1.nc>p1->info.nc)
p1->dr=adaugare(p1->dr,m1,x1);
return p1;
}
tnod* creare(mnod *p1,int x1)
{
int ii;
p1=NULL;
f9=fopen("melev.txt","rt");
fscanf(f9,"%d",&m1.nc);
for (ii=0;ii<2*x1;ii++)
fscanf(f9,"%f",&m1.medii[ii]);
fscanf(f9,"%f",&m1.ms1);
fscanf(f9,"%f",&m1.ms2);
fscanf(f9,"%f",&m1.mg);
p1=adaugare(p1,m1,x1);
while(!feof(f9))
{
fscanf(f9,"n");
fscanf(f9,"%d",&m1.nc);
for (ii=0;ii<2*x1;ii++)
fscanf(f9,"%f",&m1.medii[ii]);
fscanf(f9,"%f",&m1.ms1);
fscanf(f9,"%f",&m1.ms2);
fscanf(f9,"%f",&m1.mg);
p1=adaugare(p1,m1,x1);
}
return p1;
}
tnod *adaugare_medii(mnod *p1,int x,int x1)
{
int i;
if (p1==NULL)
Preview document
Conținut arhivă zip
- Baza de Date a unui Catalog Scolar Limbajul de Programare C.doc