Soyez le premier à donner votre avis sur cette source.
Vue 11 397 fois - Téléchargée 453 fois
#include<conio.h> #include<stdio.h> #include<iostream.h> class noeud; //////////////////////////////////STRUCT TABLEAU struct tabs { noeud *add; }; typedef struct tabs tabs; //////////////////////////////////CLASS MATRICE class matrice { public: matrice(); int get_nbrLi(void); int get_nbrCo(void); void matcreus(int **,tabs *,tabs *); int lecture_fichier(char*); int ecriture_fichier(char*); void del(int,int); int modi(int,int,int); void cadr(int ,int); ~matrice(); void aff(int ,int); void ajout(int ,int ,int); private: int nbrLi,nbrCo; tabs tabH[10],tabV[8]; int **mat; }; //////////////////////////////////return nbr Li && Co int matrice::get_nbrLi(void) { return nbrLi-1; } int matrice::get_nbrCo(void) { return nbrCo-1; } //////////////////////////////////CLASS NOEUD class noeud { private: int val,nli,nco; noeud *sh,*sv; public: friend matrice::~matrice(); friend matrice::matrice(); void friend matrice::matcreus(int **,tabs *,tabs *); int friend matrice::lecture_fichier(char*); int friend matrice::ecriture_fichier(char*); void friend matrice::del(int,int); int friend matrice::modi(int,int,int); void friend matrice::aff(int ,int); void friend matrice::ajout(int ,int ,int); void friend matrice::cadr(int,int); noeud() { sh=NULL; sv=NULL; } }; //////////////////////////////////DELETE void matrice::del(int i,int j) { noeud *bal,*prec; bal=tabV[i].add; if(bal->nco==j) { tabV[i].add=bal->sh; delete bal; } else do { if(bal->nco==j) { prec->sh=bal->sh; } prec=bal; bal=bal->sh; }while(bal); bal=tabH[j].add; if(bal->nli==i) { tabH[j].add=bal->sv; delete bal; } else do { if(bal->nli==i) { prec->sv=bal->sv; delete bal; } prec=bal; bal=bal->sv; }while(bal); } //////////////////////////////////MODIFICATION DU VAL int matrice::modi(int v,int i,int j) { noeud *bal; bal=tabV[i].add; do { if(bal->nco==j) { bal->val=v; return 1; } bal=bal->sh; }while(bal); return 0; } //////////////////////////////////AJOUT De NOEUD void matrice::ajout(int v,int i,int j) { noeud *nd; nd=new noeud; nd->val=v; nd->nli=i; nd->nco=j; if(tabV[i].add) //HORIZONTALEMENT { noeud* bal; noeud* prec; bal=tabV[i].add; if(bal->nco>j) { tabV[i].add=nd; nd->sh=bal; } else { do { prec=bal; bal=bal->sh; }while(bal && bal->nco<j); prec->sh=nd; if(bal) nd->sh=bal; } } else tabV[i].add=nd; /*if(tabH[j].add) //VERTICALEMENT { noeud* bal; noeud* prec; bal=tabH[j].add; if(bal->nli>i) { tabH[j].add=nd; nd->sv=bal; } else { do { prec=bal; bal=bal->sv; }while(bal && bal->nli<i); prec->sv=nd; if(bal) nd->sv=bal; } } else tabH[j].add=nd;*/ } //////////////////////////////////AFFICHEUR void matrice::aff(int l,int c) { int a=8,z=8; gotoxy(a,z); for(int i=l;i<7+l && i<nbrLi;i++) //Zero { for(int j=c;j<7+c && j<nbrCo;j++) { gotoxy(a,z); textcolor(WHITE); cprintf("0"); a+=8; } a=8; z+=6; } noeud *bal; for(i=l;i<7+l&&i<nbrLi;i++) { bal=tabV[i].add; { while(bal->nco<c) bal=bal->sh; if(bal) do { gotoxy(8+8*(bal->nco-c),8+6*(i-l)); textcolor(5); if(bal->nco<c+7) cprintf("%d",bal->val); bal=bal->sh; }while(bal && bal->nco<7+c && bal->nco<nbrCo); } } } /////////////////////////////////////////CONSTRUCTEUR matrice::matrice() { lecture_fichier("fichier.txt"); for(int i=0;i<nbrCo;i++) { tabH[i].add=NULL; } for(i=0;i<nbrLi;i++) { tabV[i].add=NULL; } matcreus(mat,tabH,tabV); } //////////////////////////////////////////DESTRUCTEUR matrice::~matrice() { for(int i=0;i<nbrLi;i++) delete mat[i]; delete *mat; noeud *bal,*prec; for( i=0;i<nbrLi;i++) { if(bal) { bal=tabV[i].add; tabV[i].add=NULL; bal=bal->sh; do { prec=bal; bal=bal->sh; delete prec; }while(bal); } } } //////////////////////////////////LECTURE FICHIER int matrice::lecture_fichier(char* nom_fichier) { FILE* f=fopen(nom_fichier,"r"); if (f != NULL) { fscanf(f,"%d%d",&nbrCo,&nbrLi); } else return 0; mat = new int* [nbrCo]; for(int i=0;i<nbrLi;i++) mat[i]=new int[nbrCo]; for(int j=0;j<nbrLi;j++) { for (i=0;i<nbrCo;i++) { fscanf(f,"%d",&mat[j][i]); } } return 1; } ///////////////////////////////////////////ECRITURE FICHIER int matrice::ecriture_fichier(char* nom_fichier) { FILE *f=fopen(nom_fichier,"w"); if (f != NULL) { fprintf(f,"%d %d\n",nbrCo,nbrLi); } else return 0; noeud *nid; for(int i=0;i<nbrLi;i++) { int indi=0; nid=tabV[i].add; if(!tabV[i].add) for(int com=0;com<nbrCo;com++) { fprintf(f,"0 "); indi=nbrCo; } else do { for(int com=indi;com<nid->nco && indi<nbrCo;com++,indi++) { fprintf(f,"0 "); } fprintf(f,"%d ",nid->val); indi++; nid=nid->sh ; }while(nid); for(;indi<nbrCo;indi++) { fprintf(f,"0 "); } fprintf(f,"\n"); } fclose(f); return 1; } //*****************************************MATCRUS void matrice::matcreus(int **l,tabs *tabH,tabs *tabV) { for(int i=0;i<nbrLi;i++) for(int j=0;j<nbrCo;j++) { if(l[i][j]) { noeud* bal; noeud* prec,*nd; nd=new noeud; nd->val=l[i][j]; nd->nli=i; nd->nco=j; if(tabH[j].add!=NULL) { bal=tabH[j].add; do { prec=bal; bal=bal->sv; }while(bal); prec->sv=nd; } else tabH[j].add=nd; if(tabV[i].add!=NULL) { bal=tabV[i].add; do { prec=bal; bal=bal->sh; }while(bal); prec->sh=nd; } else tabV[i].add=nd; } } } /////////////////////////////////////CADRE void matrice::cadr(int l,int c) { char cha=179; textcolor(WHITE); gotoxy(66,14);cprintf("0 : Suppr"); gotoxy(66,16);cprintf("int : Modifier"); gotoxy(66,18);cprintf("Esc : Quitter"); gotoxy(66,20);cprintf("Entrer : Save"); int cc=8*c+4,ll=4+6*l; for(int i=4;i<61&&cc<8*nbrCo+5;i+=8) { for(int j=1;j<49 && j<(nbrLi-l)*6+5;j++) { gotoxy(i,j); cprintf("%c",cha); } cc+=8; } cha=196; for(i=5;i<49 && ll<6*nbrLi+5;i+=6) { for(int j=1;j<62 && j<(nbrCo-c)*8+4;j++) { gotoxy(j,i); cprintf("%c",cha); } ll+=6; } textcolor(4); if(c) { gotoxy(1,1); cprintf("..."); } if(l) { gotoxy(1,1); cprintf("."); gotoxy(1,2); cprintf("."); gotoxy(1,3); cprintf("."); } for(int h=c,g=8;h<c+7 && h<nbrCo;h++) { gotoxy(g,1); g+=8; cprintf("%d",h); } for(h=l,g=8;h<l+7 && h<nbrLi;h++) { gotoxy(1,g); g+=6; cprintf("%d",h); } } //////////////////////////////////ISINT&&NOT.NULL int isint(char c){ if(c>=49 && c<=57) return 1 ; else return 0; } //////////////////////////////////MAIN main() { char c; int a=8,z=8;//GOTOXY(a,z); int i=0,j=0;//INDICE MATRICE int w=0,x=0;//INDICE FCT AFF clrscr(); matrice M; M.cadr(w,x); M.aff(w,x); do{ gotoxy(a,z); c=getch(); fflush(stdin); if(isint(c)) { int mo; mo=M.modi(c-48,i,j); if(!mo) M.ajout(c-48,i,j); M.aff(w,x); } if(c==48) { M.del(i,j); M.aff(w,x); } if(c==77 && a!=64) { if(j==M.get_nbrCo()) printf("\a"); else { j++; a+=8; gotoxy(a,z); } } if(c==77 && a==64) { x+=7; a=8; clrscr(); M.cadr(w,x); M.aff(w,x); } if(c==75 && a!=0) { if(j==0) printf("\a"); else { j--; a-=8; gotoxy(a,z); } } if(c==75 && a==0) { x-=7; a=56; clrscr(); M.cadr(w,x); M.aff(w,x); } if(c==72 && z!=2) { if(i==0) printf("\a"); else { i--; z-=6; gotoxy(a,z); } } if(c==72 && z==2) { w-=6; z=38; clrscr(); M.cadr(w,x); M.aff(w,x); } if(c==80 && z!=50) { if(i==M.get_nbrLi()) printf("\a"); else { i++; z+=6; gotoxy(a,z); } } if(c==80 && z==50) { w+=6; z=14; clrscr(); M.cadr(w,x); M.aff(w,x); } if(c==13) { M.ecriture_fichier("fichier.txt"); } }while(c!=27 && c!=13); return 0; }
17 mai 2008 à 18:17
vecchio56 :je propose pas aux gens le Turbo aahhhh la je suis mal compris j'ai just remarque ke matt67 est interesse au code et il a des erreures due a son compilateur en fet due a mon code pr?historique lol.
ahhh encors une fois mal juge :( je programme avec des fenetres j'utilise le C#,vb.NET!!!! j'ai just vouler partager avec vous ce code source .
salam,paix,Peace
17 mai 2008 à 17:35
Ce que je voulais dire c'est que comme le compilateur respecte les normes, tu devra ?crire du code correct (par exemple tu peux pas ?crire #include )
17 mai 2008 à 17:28
Belhauss : Non merci, j'ai ce qui faut ? la maison.
Bonne Journ'e,
Matt...
17 mai 2008 à 16:35
Le "pure C++" t'a dit ?a pour plaisanter, mais il existe quand m?me ce qu'on appelle une norme, et quand on la respecte, le code qu'on ?crit va pouvoir ?tre compil? par tout compilateur qui respecte la norme (c'est a peu pr?s le cas de tous les compilateurs r?cents).
Puisque tu proposes aux gens d'utiliser Turbo C++, je te propose d'essayer a ton tour Visual C++ Express qui est gratuit et qui te permettra d'?crire du code de meilleure qualit?.
17 mai 2008 à 15:05
hahaha le pure C++,bah ?a ete just une metaphore oublions sa .
oui sa marche tr?s bien avec le turbo C++, si tu le veux passe moi ton email dans msg priv? (meme pas 6Mb).
Paix,Peace,Salam ...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.