|
Dernière réponse | |
---|---|
Sujet : C++ : Trouver le Bug ! Un cado a gagner !! | |
fabd | C clair, c ce ke je comptai faire une foi ce probleme résolu.
encore merci :hello: |
Aperçu |
---|
Vue Rapide de la discussion |
---|
fabd | C clair, c ce ke je comptai faire une foi ce probleme résolu.
encore merci :hello: |
tgrx | D'ailleurs si t'as rien a faire, retouche ton code avant ton oral, parce que la il est vraiment crado... organise tes donnees, ajoute des commentaires, autrement tes examinateurs vont tirer la tronche... |
fabd | Ben chai po, c mon oral de BTS :p |
tgrx | Chaipo, de toute facon je suis pas en France en ce moment... ca va etre dur :D
Pour ton oral, ils s'appellent comment tes profs (pour que tu puisses avoir un 20/20... :p) ?? |
fabd |
|
fabd | Arf, j'avais pas vu ke tu avais poster la fonction entiere, c pour ca ke j été etonné de l'avoir bien placé du 1er coup :D
Dernier essai :) |
tgrx | fabd> c'est tgrx, pas trgx :benetton: |
fabd | Trgx, je t :love: Attends, je relance un coup pour voir si g pas rever :D |
tgrx | fabd > a propos, "APPLICATION PROFESSIONEL", ca prend 2 n, 2 l et un e... :D |
tgrx | archangel> euh... NAN :p
fabd>
|
archangel | Dit tgrx tu veux pas partager le million :love: |
fabd | Eh, kestion, je le met ou ce bout de code ??
Je supprime toute la fonction Cal en ne laissant kes les tablo ? Je c, chui nul :D |
tgrx | Voici ce que tu dois remplacer a l'interieur de la fonction cal... en fait ta fonction precedente faisait varier le calendrier avec le jour courant (on n'avait pas le meme calendrier de juin 2001 pour le 01/06/2001 et le 02/06/2001).
|
archangel | Adieu gentil million :cry: |
fabd | Non, ce n'est pas ca.
Merci tgrx :jap: |
tgrx | fabd> ta formule pour trouver le jour est correcte, c'est ta fonction d'affichage qui fait n'importe quoi... je te donne la version correcte dans 5 minutes... et ton tableau des jours est bon aussi... |
fabd | J'appel la banque si ca marche |
archangel | Bon j'en suis pas sur mais je crois qu'il y a un zéro en trop dans l'initialisation de ton tableau t[] de la fonction cal(...)
enfin si j'ai bien compris l'utilité de ce tableau. Voilà @+ Archangel PS: si c'est bien ça le bug ben pour le cadeau un million de francs en liquide serait là le bienvenu et en petite coupures avec les numéros de séries qui ne suivent pas je vérifierai. |
tgrx | Pfffou.... c'est pas pour etre mechant mais... c'est super mal ecrit, quasi impossible a relire... :sweat: |
fabd | Ti voudrai pas me traduire au passage ? :D |
BENB |
|
tgrx | donc remplacer
|
tgrx | J'ai pas trouve le bug, mais deja dans ta fonction ajout, tu renvoies l'adresse d'une variable locale 'resu'... tres mauvais. |
fabd | Voila, j'en ai marre, je trouve pas l'erreur, et g trop besoin ke ca marche.
J'offre un cado a celui ki trouve la solution : le probleme : le calendrier généré en fin de programme ne fonctionne pas. Par exemple : pour le 12/06/2001, il dira Mercredi, alors, que ca tombe un Lundi. VOila le programme : //******************************************************************************** // // APPLICATION PROFESSIONEL 1 - 2ieme Année BTS // // //******************************************************************************** //bibliotheque #include <iostream.h> #include <string.h> #include <stdlib.h> #include <math.h> //declarations des fonctions int mois(char*, int&); int jour(char*, int&); int an(char*, int &); int cal(int,int,int); char *ajout(int, char t[]); //variables int choix1, choix2, choix3, i, j, k , l, m, a, nbj, exxit, pause; char valeur[20], resu[20],c; //tableaux d'affichage des infos possibles ligne 7 char* typ_paye[13] = {"chŠque","traite", "billet … ordre" , "espŠces" , "virement bancaire" , "relev‚ bancaire"}; char* tdelai[13] = {"comptant","dans 30 jours", "dans 60 jours" ,"dans 90 jours"}; char* quantieme[13] = {"au 5 du mois" , "au 10 du mois", "au 20 du mois" ,"au 25 du mois", "au dernier jour du mois" , "au meme quantieme que la facture"}; int delai[4]={0,30,60,90}; void main () { //menu du paiement exxit=0; cout<<"bonjour, bienvenue dans le programme."; cout<<"\nEntrer une date sous la forme JJ/MM/AAAA\n\t"; cin >> valeur; jour (valeur, l); mois (valeur,m); an (valeur,a); //verifications if(l!=-1) cout<<"\nVoici le jour : "<<l; else { cout<<"**** Il y a une erreur sur le jour ***\n"; exxit=1; }; if(m!=-1) cout<<"\nVoici le mois : "<<m; else { cout<<"**** Il y a une erreur sur le mois ***\n"; exxit=1; }; if(a!=-1) cout<<"\nVoici l'ann‚e : "<<a; else { cout<<"**** Il y a une erreur sur l'ann‚e ***\n"; exxit=1; }; // verification : si erreur, fin du programme. if(exxit==1) { cout<<"\n\tFin du programme : Vous avez entr‚ une date erronn‚e ..."; cin>>pause; exit(0); }; do {cout<< "\nVeuillez choisir le type de paiment : \n"; cout<<"\t0 - chŠque\n"; cout<<"\t1 - traite\n"; cout<<"\t2 - billet … ordre\n"; cout<<"\t3 - espŠces\n"; cout<<"\t4 - virement bancaire\n"; cout<<"\t5 - relev‚ bancaire\n"; cout<<"\t6 - quitter\n"; cin>>choix1; cout<<"\n"; } while (choix1<0 ||choix1>6); if (choix1==6) { cout<<"\n\tVous avez choisi de quitter le programme ...."; cout<<"\n\tA bient“t !"; exit(0); }; do { cout<<"\nVeuillez choisir le type de paiement : "<<"\n"; cout<<"\t0 - comptant\n"; cout<<"\t1 - 30 jours\n"; cout<<"\t2 - 60 jours\n"; cout<<"\t3 - 90 jours\n"; cin>>choix2; cout<<"\n"; } while (choix2<0 ||choix2>3); //Menu du choix au quantieme do { cout<< "Veuillez choisir le quantiŠme : \n"; cout<<"\t0 - au 5 du mois\n"; cout<<"\t1 - au 10 du mois\n"; cout<<"\t2 - au 20 du mois\n"; cout<<"\t3 - au 25 du mois\n"; cout<<"\t4 - au dernier jour du mois\n"; cout<<"\t5 - au mˆme quantiŠme que de la facture\n"; cin>>choix3; cout<<"\n"; } while (choix3<0 ||choix3>5); //affichage des reponses des menus cout<<"Vous avez choisi de payer en "<<typ_paye[choix1]; cout<<"\n"; cout<<"Vous preferez payer "<<tdelai[choix2]; cout<<"\n"; cout<<"Vous payerez "<<quantieme [choix3]; cout<<"\n"; cout<<"\n"; strcpy(resu,ajout(delai[choix2],valeur)); cout<<"AprŠs calcul, vous devrez payer le :"<<resu<<"\n"; cout<<"\n"; cout<<"\n"; cal(l,m,a); } int jour(char*d, int &j) { int nj[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int i, k, m, a, r; i=d[0] - 48; k=d[1] - 48; j=i*10 + k; mois(d,m); an(d,a); r=a%4; if(m==2&&r==0)nj[1]=29; if(j>nj[m-1])j=-1; return 0; } int mois(char*d, int &j) { int i, k; i=d[3]-48; k=d[4]-48; j=i*10 + k; if(j<1||j>12)j=-1; return 0; } int an(char *d, int &j) { int i, k,l,m; i=d[6] - 48; k=d[7] - 48; l=d[8] - 48; m=d[9] - 48; j=i*1000 + k*100 +l*10+m; if(j<=1980|| j>2010) j=-1; return 0; } char *ajout(int nbj , char valeur[]) { char resu[20]; int j; int nj[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; jour(valeur, j); mois(valeur,m); an(valeur,a); nbj = nbj + j; while (nbj>nj[m]) { nbj=nbj-nj[m]; m=m+1; if (m>12) { a=a+1; m=m-1; } } resu[0] = nbj/10 + 48; resu[1] = nbj%10 + 48; resu[2] ='/'; resu[3] = m/10 + 48; resu[4] = m%10 + 48; resu[5] ='/'; resu[6] = a/1000 + 48; resu[7] = (a%1000)/100 + 48; resu[8] = ((a%1000)%100)/10 + 48; resu[9] = ((a%1000)%100)%10 + 48; resu[10] = ' '; return resu; } int cal(int jour,int mois,int annee) { int mat[5][7]; int r,nb1,nb2,j,i,k=1; int nj[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; char* tabjour[7]={"D","L","M","M","J","V","S"}; int t[]={0,0,31,59,90,120,151,181,212,243,273,304,334,365}; nb1=(annee-1)*365+(annee-1)/4-(annee-1)/100+(annee-1)/400; nb2=t[mois]+jour; for(i=0;i<5;i++) { for(j=0;j<7;j++) mat[i][j]=0; } if(mois>2) { r=annee%4; if(r==0) nb2=nb2+1; }; r=(nb1+nb2)%7; cout<<"\n"; for(i=0;i<5;i++) { for(j=0;j<7;j++) { if(i==0 && j<r) mat[i][j]=0; else { if (k<nj[mois]+1) { mat[i][j]=k; k++; } } } } for(i=0;i<7;i++) // if (tabjour[i]==0); // cout<<"."; // else cout<<tabjour[i]<<"\t"; cout<<"\n"<<"\n"; for(i=0;i<5;i++) { for(j=0;j<7;j++) cout<<mat[i][j]<<"\t"; cout<<"\n"; } cin>>k; return 0; } [edit]--Message édité par fabd--[/edit] |