Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3799 connectés 

 


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:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


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

tgrx a écrit a écrit :

fabd> c'est tgrx, pas trgx :benetton:




 
 
 :love:  :love:  :love:  :love:  
 
Bon, keske je peux t'offrir ? :hello:  
(le million, c si g 20/20 a l'oral :D)

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>
 

Code :
  1. int cal(int jour,int mois,int annee)
  2. {
  3.   int mat[5][7];
  4.   int r,nb1,nb2,j,i,k=1;
  5.   int nj[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  6.   char* tabjour[7]={"D","L","M","M","J","V","S"};
  7.   int t[]={0,0,31,59,90,120,151,181,212,243,273,304,334,365};
  8.  
  9.   nb1=(annee-1)*365+(annee-1)/4-(annee-1)/100+(annee-1)/400;
  10.   nb2=t[mois]+jour;
  11.   for(i=0;i<5;i++)
  12.     {
  13.       for(j=0;j<7;j++)
  14. mat[i][j]=0;
  15.     }     
  16.  
  17.  
  18.   if(mois>2)
  19.     {
  20.       r=annee%4;
  21.       if(r==0) nb2=nb2+1;
  22.     };
  23.   r=(nb1+nb2)%7;
  24.   cout<<"\n";
  25.  
  26.   int debut = ((jour-r)-1)%7 - 6;
  27.   for(i=0;i<5;i++)
  28.     {
  29.       for(j=0;j<7;j++)
  30. { if(i==0 && (debut+j<1)) mat[i][j]=0;
  31. else
  32.   {
  33.     if (k<nj[mois]+1)
  34.       {
  35.  mat[i][j]=k;
  36.  k++;
  37.       }
  38.   }
  39. }
  40.     }
  41.  
  42.   for(i=0;i<7;i++)
  43.     // if (tabjour[i]==0);  
  44.     //  cout<<".";  
  45.     // else  
  46.     cout<<tabjour[i]<<"\t";
  47.   cout<<"\n"<<"\n";
  48.   for(i=0;i<5;i++)
  49.     {
  50.       for(j=0;j<7;j++)
  51. cout<<mat[i][j]<<"\t";
  52.       cout<<"\n";
  53.     }
  54.   cin >> k;
  55.   return 0;
  56. }

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).
 

Code :
  1. int debut = ((jour-r)-1)%7 - 6;
  2.   for(i=0;i<5;i++)
  3.     {
  4.       for(j=0;j<7;j++)
  5. { if(i==0 && (debut+j<1)) mat[i][j]=0;
  6. else
  7.   {
  8.     if (k<nj[mois]+1)
  9.       {
  10.  mat[i][j]=k;
  11.  k++;
  12.       }
  13.   }
  14. }
  15.     }


 
 
Et maintenant, je veux le cadeau :D

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 a écrit a écrit :

donc remplacer

Code :
  1. char resu[20];


par

Code :
  1. char* resu= new char[20];






 
et penser au delete...
 
Par contre sais tu que on peut mettre des commentaires pour aider a la relecture :D

tgrx donc remplacer

Code :
  1. char resu[20];


par

Code :
  1. char* resu= new char[20];

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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)