Annonce

Réduire
Aucune annonce.

paramètres pour la fonction main en c ++

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • #16
    @Yarflam
    Les globales c'est le mal, connu comme phrase

    @polo29
    T'appelles sous programme une fonction?

    Commentaire


    • #17
      A propos dans ton code je remarque ces lignes très moches :

      Code:
          graphe[0][0] =0;graphe[0][1] =16;graphe[0][2] =10;graphe[0][3] =4;graphe[0][4] =0;graphe[0][5] =0;graphe[0][6] =0;graphe[0][7] =0;
          graphe[1][0] =0;graphe[1][1] =0;graphe[1][2] =0;graphe[1][3] =0;graphe[1][4] =0;graphe[1][5] =0;graphe[1][6] =4;graphe[1][7] =0;
          graphe[2][0] =0;graphe[2][1] =0;graphe[2][2] =0;graphe[2][3] =0;graphe[2][4] =12;graphe[2][5] =0;graphe[2][6] =21;graphe[2][7] =0;
          graphe[3][0] =0;graphe[3][1] =0;graphe[3][2] =0;graphe[3][3] =0;graphe[3][4] =10;graphe[3][5] =0;graphe[3][6] =0;graphe[3][7] =0;
          graphe[4][0] =0;graphe[4][1] =0;graphe[4][2] =0;graphe[4][3] =0;graphe[4][4] =0;graphe[4][5] =3;graphe[4][6] =0;graphe[4][7] =0;
          graphe[5][0] =0;graphe[5][1] =0;graphe[5][2] =0;graphe[5][3] =0;graphe[5][4] =0;graphe[5][5] =0;graphe[5][6] =3;graphe[5][7] =5;
          graphe[6][0] =0;graphe[6][1] =0;graphe[6][2] =0;graphe[6][3] =0;graphe[6][4] =0;graphe[6][5] =0;graphe[6][6] =0;graphe[6][7] =3;
          graphe[7][0] =0;graphe[7][1] =0;graphe[7][2] =0;graphe[7][3] =0;graphe[7][4] =0;graphe[7][5] =0;graphe[7][6] =0;graphe[7][7] =0;
      J'ai essayé d'utiliser les codes classiques de programmation.
      graphe=[[0,0,0,0,0,0,0,0],[...],...] sauf que ça ne fonctionne pas.
      Je suis intéresser pour connaître une alternative

      Envoyé par fred Voir le message
      Les globales c'est le mal
      Le plus propre est de créer une classe, je te l'accorde.
      Dernière modification par Yarflam, 19 mai 2013, 13h31.
      ~ Yarflam ~

      ❉ L'Univers se dirige vers son ultime perfection ❉

      Commentaire


      • #18
        Les accolades peut-être

        Code:
        tab[i][j] = {
                       {...},
                       {...},
                       {...}
                    };

        Commentaire


        • #19
          désolé pour les répétitions mais comme ça marchait pas j'ai changé mon programme plusieurs fois et j'ai gardé les répétitions en espérant voir un résultat s'afficher. oui la définition du graphe est moche mais c'est le prof qui nous l'a donnée comme ça(on avait pas trop de temps, il s'est débrouillé comme il a pu pour nous aider)

          dans mon cours on appelle ça des sous programmes..

          je suis débutant donc la POO et les classes j'ai entendu parler mais je ne sais pas encore ce que c'est. rassurez vous je compte apprendre tout ça. d'ailleurs yarflam tu pourrais remettre le lien vers le tutoriel que tu as enlevé en changeant ton message de 3h51?

          els étaient déjà déclarés en variables globales non?

          et c'est quoi la balise pour poster du code?

          merci en tout cas pour vos réponses et pour l'organisation du programme.

          Commentaire


          • #20
            Yarflam tu pourrais remettre le lien vers le tutoriel
            http://fr.slideshare.net/AmelMorchdi...classe-objet-c

            els étaient déjà déclarés en variables globales non?
            Toutes les variables n'étaient pas déclaré de façon globale.
            Dont la variable graphe et nbS.

            Et c'est quoi la balise pour poster du code?
            [ CODE ] [ /CODE ]

            Envoyé par Fred
            Les accolades peut-être.
            Non, ça ne fonctionne pas non plus.
            ~ Yarflam ~

            ❉ L'Univers se dirige vers son ultime perfection ❉

            Commentaire


            • #21
              En fait tu cherches à faire quoi Yarflam? À initialiser tout le graphe à 0?

              Commentaire


              • #22
                Non. Je cherche la syntaxe pour présenter une matrice convenablement en C++.
                Exemple en Javascript :
                Code:
                matrice = [
                  [0,0,0,0,4,8],
                  [7,4,2,0,0,0]
                ];
                J'ai trouvé ça : (pas du tout pratique)
                Code:
                #include <iostream>
                
                using namespace std;
                
                int main() {
                    struct arrays {
                        int x[3];
                        int y[3];
                        int z[3];
                    };
                    arrays vec_2 = {
                      {1,2,3},
                      {4,5,6},
                      {7,8,9}
                    };
                    cout << vec_2.x[0];
                    return 0;
                }
                NB: En C++ il semble qu'on ne puisse pas mélanger int & string. Contrairement au Python et au Javascript.
                Dernière modification par Yarflam, 19 mai 2013, 14h54.
                ~ Yarflam ~

                ❉ L'Univers se dirige vers son ultime perfection ❉

                Commentaire


                • #23
                  Code:
                  arrays vec_2 = {
                        {1,2,3},
                        {4,5,6},
                        {7,8,9}
                      };
                  C'est pas ce que je te proposais plus haut avec mes accolades?

                  EDIT : C'est une matrice convenable!

                  Commentaire


                  • #24
                    Pas tout à fait. Le tableau vec_2 est obligé de coller à la structure Arrays.
                    Code:
                    cout << vec_2.x[0]; // Mauvaise solution
                    cout << vec_2[0][0]; // Bonne solution mais comment faire ?!
                    ~ Yarflam ~

                    ❉ L'Univers se dirige vers son ultime perfection ❉

                    Commentaire


                    • #25
                      J'ai vraiment du mal à te comprendre Yarflam

                      Code:
                      int main(void)
                      {
                          int i, j;
                          int matrice[3][3] = {
                                                {1, 2, 3},
                                                {4, 5, 6},
                                                {7, 8, 9}
                                              };
                      
                          for (i=0; i<3; i++)
                              for (j=0; j<3; j++)
                                  printf("%d\n", matrice[i][j]); /* remplacer printf par cout pour le C++ */
                      
                          return 0;
                      }
                      Où est le problème dans cette initialisation?

                      Commentaire


                      • #26
                        Envoyé par Yarflam Voir le message
                        Non, ça ne fonctionne pas non plus.
                        Ah ? Bizarre c'est ce que je fais d'habitude...

                        Envoyé par Yarflam Voir le message
                        Le plus propre est de créer une classe, je te l'accorde.
                        Euh... alourdir le code pour rien ? Non, faut juste rajouter un paramètre à chaque fonction...
                        Y a deux ailes au cul de Lalla, sinon ça peut pas voler.

                        Commentaire


                        • #27
                          Désolé pour le remue-ménage, je m'étais trompé plusieurs fois.

                          Ce code source fonctionne :
                          Code:
                          #include <iostream>
                          using namespace std;
                          
                          #define TailleMax 100
                          
                          int PoidsCumul[TailleMax];
                          int CheminPlusCourt[TailleMax];
                          int graphe[8][8] = {
                            { 0,16,10, 4, 0, 0, 0, 0},
                            { 0, 0, 0, 0, 0, 0, 4, 0},
                            { 0, 0, 0, 0,12, 0,21, 0},
                            { 0, 0, 0, 0,10, 0, 0, 0},
                            { 0, 0, 0, 0, 0, 3, 0, 0},
                            { 0, 0, 0, 0, 0, 0, 3, 5},
                            { 0, 0, 0, 0, 0, 0, 0, 3},
                            { 0, 0, 0, 0, 0, 0, 0, 0}
                          };
                          int nbS;
                          int AfficheGraphe();
                          int Affichetableau();
                          int CalcPoidsCumul();
                          int DefineChemin();
                          int AppartVoisins(int x, int y);
                          
                          //---------------------------------------------------//
                          
                          int main() {
                              int k;
                              nbS=8;
                              
                              AfficheGraphe();
                              CalcPoidsCumul();
                              
                              cout<<"le temps le plus court est "<<CalcPoidsCumul()<<" jours \n ";
                              DefineChemin();
                              return 0;
                          }
                          
                          //---------------------------------------------------//
                          
                          int AppartVoisins(int x, int  y) {
                              int voisin;
                              voisin = 0;
                              if(graphe[x][y] != 0){ voisin = 1; }
                              return voisin;
                          }
                          
                          //---------------------------------------------------//
                          
                          int AfficheGraphe() {
                              int i,j;
                              for (i=0; i<nbS; i++) {
                                  for (j=0; j<nbS; j++) {
                                      cout<<" "<<graphe[i][j]<<"\t";
                                  }
                                  cout<<"\n";
                              }
                              return 0;
                          }
                          
                          //---------------------------------------------------//
                          
                          
                          int CalcPoidsCumul (){
                              int i; int j;
                              for (i = 0 ;i< nbS ;i=i+1) { PoidsCumul[i] = 0; }
                              for (i = 0 ;i< nbS ;i=i+1) {
                                  for (j = i ;j< nbS ;j=j+1) {
                                      if (AppartVoisins(i,j) ==1) {
                                          if (PoidsCumul[j]==0 || PoidsCumul[j]< PoidsCumul[i]+graphe[i][j]) {
                                              PoidsCumul[j] = PoidsCumul[i]+graphe[i][j];
                                          }
                                      }
                                  }
                              }
                              Affichetableau();
                              return PoidsCumul[nbS-1];
                          }
                          
                          //---------------------------------------------------//
                          
                          int Affichetableau () {
                              int i;
                              for (i=0; i<nbS; i++) {
                                  cout<<" "<<PoidsCumul[i]<<" ";
                              }
                              cout<<"\n";
                              return 0;
                          }
                          
                          //---------------------------------------------------//
                          
                          int DefineChemin(){
                              int i; int j ; int k;
                              for (i = 0 ;i< nbS ;i=i+1) {
                                  CheminPlusCourt[i] = 0;
                              }
                              for (i = 0 ;i< nbS ;i=i+1) {
                                  for (j = i ;j< nbS ;j=j+1) {
                                      if  (AppartVoisins(i,j) ==1) {
                                          if( PoidsCumul[j]==0 || PoidsCumul[j]< PoidsCumul[i]+graphe[i][j]) {
                                              PoidsCumul[j] = PoidsCumul[i]+graphe[i][j]; CheminPlusCourt[i]=i;
                                          }
                                      }
                                  }
                              }
                              cout<<"les étapes du chemin le plus court sont ";
                              for (k = 0 ;k< nbS ;k=k+1){ cout<<CheminPlusCourt[k]; }
                              return 0;
                          }

                          Debugger


                          Code:
                          Compiling the source code....
                          $g++ main.cpp -o demo -lm -pthread -lgmp 2>&1
                          
                          Executing the program....
                          $demo
                          
                           0	 16	 10	 4	 0	 0	 0	 0	
                           0	 0	 0	 0	 0	 0	 4	 0	
                           0	 0	 0	 0	 12	 0	 21	 0	
                           0	 0	 0	 0	 10	 0	 0	 0	
                           0	 0	 0	 0	 0	 3	 0	 0	
                           0	 0	 0	 0	 0	 0	 3	 5	
                           0	 0	 0	 0	 0	 0	 0	 3	
                           0	 0	 0	 0	 0	 0	 0	 0	
                           0  16  10  4  22  25  31  34 
                           0  16  10  4  22  25  31  34 
                          le temps le plus court est 34 jours 
                           les étapes du chemin le plus court sont 00000000
                          Dernière modification par Yarflam, 19 mai 2013, 16h53. Motif: Faute d'orthographe
                          ~ Yarflam ~

                          ❉ L'Univers se dirige vers son ultime perfection ❉

                          Commentaire


                          • #28
                            Bon j'ai viré ces horribles globales, pour rendre le code propre

                            Code:
                            #include <iostream>
                            using namespace std;
                            
                            #define TailleMax 100
                            
                            void AfficheGraphe(int graph[][8], int nb);
                            void Affichetableau (int *Poids, int nb);
                            int CalcPoidsCumul (int nb, int *Poids, int graph[][8]);
                            void DefineChemin(int nb, int *Chemin, int *Poids, int graph[][8]);
                            int AppartVoisins(int graph[][8], int x, int  y);
                            
                            //---------------------------------------------------//
                            
                            int main(void) {
                                
                                int nbS = 8;
                            
                                int graphe[8][8] = {
                              { 0,16,10, 4, 0, 0, 0, 0},
                              { 0, 0, 0, 0, 0, 0, 4, 0},
                              { 0, 0, 0, 0,12, 0,21, 0},
                              { 0, 0, 0, 0,10, 0, 0, 0},
                              { 0, 0, 0, 0, 0, 3, 0, 0},
                              { 0, 0, 0, 0, 0, 0, 3, 5},
                              { 0, 0, 0, 0, 0, 0, 0, 3},
                              { 0, 0, 0, 0, 0, 0, 0, 0}
                            };
                            
                                int PoidsCumul[TailleMax];
                                int CheminPlusCourt[TailleMax];
                            
                                AfficheGraphe(graphe, nbS);
                                CalcPoidsCumul(nbS, PoidsCumul, graphe);
                            
                                cout<<"le temps le plus court est "<<CalcPoidsCumul(nbS, PoidsCumul, graphe)<<" jours \n ";
                                DefineChemin(nbS, CheminPlusCourt, PoidsCumul, graphe);
                                return 0;
                            }
                            
                            //---------------------------------------------------//
                            
                            int AppartVoisins(int graph[][8], int x, int  y) {
                                if (graph[x][y] == 0)
                                    return 0;
                                return 1;
                            }
                            
                            //---------------------------------------------------//
                            
                            void AfficheGraphe(int graph[][8], int nb) {
                                int i,j;
                                for (i=0; i<nb; i++) {
                                    for (j=0; j<nb; j++) {
                                        cout<<" "<<graph[i][j]<<"\t";
                                    }
                                    cout<<"\n";
                                }
                            }
                            
                            //---------------------------------------------------//
                            
                            
                            int CalcPoidsCumul (int nb, int *Poids, int graph[][8]){
                                int i; int j;
                                for (i = 0 ;i< nb ;i=i+1) { Poids[i] = 0; }
                                for (i = 0 ;i< nb ;i=i+1) {
                                    for (j = i ;j< nb ;j=j+1) {
                                        if (AppartVoisins(graph, i, j) ==1) {
                                            if (Poids[j]==0 || Poids[j] < Poids[i] + graph[i][j]) {
                                                Poids[j] = Poids[i] + graph[i][j];
                                            }
                                        }
                                    }
                                }
                                Affichetableau(Poids, nb);
                                return Poids[nb-1];
                            }
                            
                            //---------------------------------------------------//
                            
                            void Affichetableau (int Poids[TailleMax], int nb) {
                                int i;
                                for (i=0; i<nb; i++) {
                                    cout<<" "<<Poids[i]<<" ";
                                }
                                cout<<"\n";
                            }
                            
                            //---------------------------------------------------//
                            
                            void DefineChemin(int nb, int *Chemin, int *Poids, int graph[][8]){
                                int i; int j ; int k;
                                for (i = 0 ;i< nb ;i=i+1) {
                                    Chemin[i] = 0;
                                }
                                for (i=0; i<nb; i++) {
                                    for (j=i; j<nb; j++) {
                                        if  (AppartVoisins(graph, i, j) == 1) {
                                            if( Poids[j] == 0 || Poids[j] < Poids[i] + graph[i][j]) {
                                                Poids[j] = Poids[i] + graph[i][j]; Chemin[i] = i;
                                            }
                                        }
                                    }
                                }
                                cout<<"les étapes du chemin le plus court sont ";
                                for (k = 0 ;k< nb ;k=k+1){ cout<<Chemin[k]; }
                            }
                            Dernière modification par fred, 19 mai 2013, 16h53.

                            Commentaire


                            • #29
                              Honnêtement, je ne trouve pas ça propre ... :/
                              Dernière modification par Yarflam, 19 mai 2013, 16h59.
                              ~ Yarflam ~

                              ❉ L'Univers se dirige vers son ultime perfection ❉

                              Commentaire


                              • #30
                                Une fonction sans paramètres "c'est inutile", car on ne voit pas de quoi on a besoin pour créer l'action, et je suis obligé de remonter à chaque fois en haut du code pour regarder de quelle globale le codeur parle.
                                Donc difficile à comprendre.

                                Si tu fous que des globales, alors tu tapes tout le code directement dans le main, inutile de mettre des fonctions, c'est "l'intérêt des globales".

                                En plus les globales restent en mémoire, avec des variables locales, elle sont supprimées après l'exécution de la fonction.

                                C'est donc surtout (parce-que propre est une histoire de goût), optimisé et lisible (on comprend depuis la fonction, son intérêt et les variables qu'elle va utiliser).

                                EDIT : Un lien vers une discussion concernant les variables globales.
                                Dernière modification par fred, 19 mai 2013, 21h48.

                                Commentaire

                                Chargement...
                                X