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

  FORUM HardWare.fr
  Programmation
  C++

  un petit ex en c++

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

un petit ex en c++

n°1228670
boob05
Posté le 22-10-2005 à 11:34:09  profilanswer
 

Je dois faire un execrice en c++ pour bientot mais j'ai un peu de mal a obtenir ce qu'on me demande.
http://www.ulb.ac.be/di/info-f-101 [...] rojet2.pdf
Ceci est le lien de l'ennoncé de l'ex.
J'ai essayé de faire l'ex tout seul mais malheureusement j'obtiens pas ce qu'on me demande!!.
 
    * #include <iostream>
    * #include <math.h>
    *
    * using namespace std;
    *
    * const double eps = 1.0e-5;
    *
    * const double pi= 4*(atan (1.0));
    *      
    * double asin(double x, double eps)
    * {
    *     double terme=x, asinus=0;
    *     if(x==1)
    *      
    *         asinus= pi/2;
    *      
    *     else if(x==-1)
    *      
    *         asinus= -(pi/2);
    *      
    *     else
    *     {
    *         for(int i=1; abs(terme) >= eps; ++i)
    *         {
    *             terme *= (double(((2*i)-1)*(( 2*i )-1 ) / ( 2*i )*(( 2*i )+1))*x*x);
    *             asinus += terme;
    *         }
    *          
    *     }
    *     return asinus;
    * }
    *
    * void affichage(double nb, double car)
    * {
    *     for(int i=1; i<=nb; ++i)
    *
    *         cout<< car;
    * }
    *
    * void plot_sin(int nb_per, int largeur, int hauteur)
    * {
    *     double Y, X;
    *     double hautarc = (hauteur/2)-1;
    *
    *     cout<< "^" << endl;
    *
    *     for(double i=hautarc; i >= -hautarc; --i)
    *     {
    *         Y = asin (i,eps);
    *         X = Y * (10/pi);
    *         cout<< '|';
    *
    *         for(double i=0; i < X; ++i)
    *         {
    *             cout<< ' ';
    *         }
    *         cout<< 'X' << endl;
    *     }    
    * }
    *
    *      
    * int main()
    * {
    *     int  nb_per, largeur, hauteur;
    *     cin>> nb_per >> largeur >> hauteur;
    *         plot_sin(nb_per, largeur, hauteur);
    * }
 
 
Voila ce que je fais mais j'obtiens pas le graph demandé.
Si qqun peut me corriger ce serait tres sypma.
Merci d'avance.

mood
Publicité
Posté le 22-10-2005 à 11:34:09  profilanswer
 

n°1228671
Joel F
Real men use unique_ptr
Posté le 22-10-2005 à 11:36:47  profilanswer
 

balise code :o


Message édité par Joel F le 22-10-2005 à 11:37:11
n°1228748
boob05
Posté le 22-10-2005 à 17:26:54  profilanswer
 

Dsl mais je comprend pas.:(

n°1228749
Mackila
Posté le 22-10-2005 à 17:39:42  profilanswer
 

Le monsieur te demande de mettre ton code dans des balises [ cpp ] ton code ici [ /cpp ] :
 

Code :
  1. void afficheConseil(void)
  2. {
  3.    cout << "Faut utiliser les balises pour le code !" << endl ;
  4. }


 
(comme expliqué dans les règles du forum :o )

n°1228752
boob05
Posté le 22-10-2005 à 17:49:09  profilanswer
 

A ok.Je m'excuse.

Code :
  1. #include <iostream>
  2.      #include <math.h>
  3.    
  4.      using namespace std;
  5.    
  6.      const double eps = 1.0e-5;
  7.    
  8.      const double pi= 4*(atan (1.0));
  9.          
  10.      double asin(double x, double eps)
  11.      {
  12.          double terme=x, asinus=0;
  13.          if(x==1)
  14.          
  15.              asinus= pi/2;
  16.          
  17.          else if(x==-1)
  18.          
  19.              asinus= -(pi/2);
  20.          
  21.          else
  22.          {
  23.              for(int i=1; abs(terme) >= eps; ++i)
  24.              {
  25.                  terme *= (double(((2*i)-1)*(( 2*i )-1 ) / ( 2*i )*(( 2*i )+1))*x*x);
  26.                  asinus += terme;
  27.              }
  28.              
  29.          }
  30.          return asinus;
  31.      }
  32.    
  33.      void affichage(double nb, double car)
  34.      {
  35.          for(int i=1; i<=nb; ++i)
  36.    
  37.              cout<< car;
  38.      }
  39.    
  40.      void plot_sin(int nb_per, int largeur, int hauteur)
  41.      {
  42.          double Y, X;
  43.          double hautarc = (hauteur/2)-1;
  44.    
  45.           cout<< "^" << endl;
  46.    
  47.          for(double i=hautarc; i >= -hautarc; --i)
  48.          {
  49.              Y = asin (i,eps);
  50.              X = Y * (10/pi);
  51.              cout<< '|';
  52.    
  53.              for(double i=0; i < X; ++i)
  54.              {
  55.                  cout<< ' ';
  56.              }
  57.              cout<< 'X' << endl;
  58.          }   
  59.      }
  60.    
  61.          
  62.      int main()
  63.      {
  64.          int  nb_per, largeur, hauteur;
  65.          cin>> nb_per >> largeur >> hauteur;
  66.              plot_sin(nb_per, largeur, hauteur);
  67.      }

n°1228825
Bali-balo
Posté le 22-10-2005 à 19:59:49  profilanswer
 

L'erreur vient sans aucun doute de ta partie plot_sin: Y=asin(i,eps) car ton i prend des valeurs comme hautarc qui ne sont pas dans [-1,1]. Fais donc un second rapport de proportionnalité j/2 = i/hauteur et ton j sera ce que l'asin devra calculer. Je ne vois pas l'utilité de la nouvelle variable hautarc.
Quant à l'autre rapport de proportionnalité, X = Y * (largeur/pi).
 
La valeur de l'eps que tu as a pris me parait un peu petite, 0.01 suffirait je pense.
 
Et n'oublie pas de tenir en compte nb_per: repet la seconde boucle for nb_per fois.


Message édité par Bali-balo le 22-10-2005 à 20:00:33
n°1228833
boob05
Posté le 22-10-2005 à 20:15:47  profilanswer
 

C'est vraiment tres sympa de me répondre mais comme je débute en C++ et je suis vraiment très nul j'ai pas vraiment bien compris :(:(
(Je sais j'en fait un peu trop et j'ai honte)

n°1228837
Bali-balo
Posté le 22-10-2005 à 20:22:48  profilanswer
 

T'inquiète pas, j'ai jamais fait de C. Ou presque. Mais la difficultée n'est pas dans le langage parce qu'on ne te demande rien de technique, elle est dans la mise en équations.
T'as compris ton X=Y*(10/pi) ou tu l'as copié sur quelqu'un? (c'est un rapport de proportionnalité X/10=Y/pi)
 
C'est un devoir info de deug mias ça?

n°1228969
boob05
Posté le 23-10-2005 à 11:51:10  profilanswer
 

C'est ca en fait , ta fait mouche.
En fait je n'ait fait que suivre qques exercices qu'on a fait en classe.
Mais je vais être franc avec toi j'y pige rien a cet execrcice je l'ai même copier sur un "copain" qui ma assuré que ca marche et que c'est le bon exercice et tralala et trilili, tu vois le truc, il ma eu quoi, il voulais être le seul qui a fait un exercice qui tient la route.Lui il a doublé et ce que nous on fait c'est facile pour lui et il se permet de se foutre un peu de nous les nouveau.
C'est pour cela que je suis enervé et je veut absolument faire cette exercice.Tu comprends?

n°1229008
Bali-balo
Posté le 23-10-2005 à 14:05:51  profilanswer
 

Mais non c'est le bon code, il y a juste une ou deux grosse erreur.
Compile le code en remplaçant le plot_sin par celui-ci:
 
void plot_sin(int nb_per, int largeur, int hauteur)  
     {  
         double Y, X;  
         double j=2*i/hauteur;
          cout<< "^" << endl;  
     
         for(double i=hauteur; i >= -hautarc; --i)  
         {  
             Y = asin (j,eps);  
             X = Y * (10/pi);  
             cout<< '|';  
     
             for(double i=0; i < X; ++i)  
             {  
                 cout<< ' ';  
             }  
             cout<< 'X' << endl;  
         }      
     }  
 
Et change const double eps = 1.0e-5 à 0.01.
Puis dis ça s'améliore un peu. Ensuite il manquera plus qu'un ou deux détails.

mood
Publicité
Posté le 23-10-2005 à 14:05:51  profilanswer
 

n°1229154
boob05
Posté le 23-10-2005 à 19:21:40  profilanswer
 

Merci mec t'es trop sympa.Ils sont rares les gens comme toi.
Je vais essayer ca et je te dis quoi.
Encore merci ;)

n°1229421
boob05
Posté le 24-10-2005 à 11:02:41  profilanswer
 

En fait j'ai fait l'exercice mais ca fait que calculer la valeur de arcsin.
Ca n'afiche pas le graphe c'est ca le truc.
Je vais te mettre ce que j'ai fait.

Code :
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4. const double eps = 0.01;
  5. const double pi= 4*(atan (1.0));
  6. double asin(double x, double eps)
  7. {
  8. double terme=x, asinus=0;
  9. if(x==1)
  10.  asinus= pi/2;
  11. else if(x==-1)
  12.  asinus= -(pi/2);
  13. else
  14. {
  15.  for(int i=1; abs(terme) >= eps; ++i)
  16.  {
  17.   terme *= (double( ((2*i)-1)*(( 2*i )-1 ) / ( 2*i )*(( 2*i )+1))*x*x );
  18.   asinus += terme;
  19.  }
  20. }
  21. return asinus;
  22. }
  23. void affichage(double nb, double car)
  24. {
  25. for(int i=1; i<=nb; ++i)
  26.  cout<< car;
  27. }
  28. void plot_sin(int nb_per, int largeur, int hauteur) 
  29.      { 
  30.          double Y, X; 
  31.          double j=2*largeur/hauteur;
  32.           cout<< "^" << endl; 
  33.    
  34.          for(double i=hauteur; i >= -hauteur; --i) 
  35.          { 
  36.              Y = asin (j,eps); 
  37.              X = Y * (10/pi); 
  38.              cout<< '|'; 
  39.    
  40.              for(double i=0; i < X; ++i) 
  41.              { 
  42.                  cout<< ' '; 
  43.              } 
  44.              cout<< 'X' << endl; 
  45.          }     
  46.      } 
  47. int main ()
  48. {
  49. double X,Y;
  50.         plot_sin(2,40,16);
  51. }


 
Je viens de la changer et j'obtiens que des x en verticale


Message édité par boob05 le 24-10-2005 à 13:17:33
n°1229660
Bali-balo
Posté le 24-10-2005 à 14:41:10  profilanswer
 

Ca ne calculait pas du tout arcsin.
Celui-ci oui par contre, avec le tracé d'une sinusoide un peu fouillie:
 

Code :
  1. #include <iostream>
  2. #include <math.h>
  3.    
  4. using namespace std;
  5. const double eps = 0.1;
  6. const double pi= 4*(atan (1.0));
  7. double abso(double val)
  8. {
  9. if (val<0) return -val;
  10. return val;
  11. }
  12. double asin(double x, double epsi)
  13. {
  14. double terme=x, asinus=x, suite=0;
  15. if(x==1)
  16.  return asinus= pi/2;
  17. if(x==-1)
  18.  return asinus= -pi/2;
  19. for(int i=2; abso(terme)>=eps; i++)
  20. {
  21.  suite=1+2*(i-1);
  22.  terme*=x*x*(suite-2) / ( suite*(suite-1) );
  23.  asinus+=terme;
  24. }
  25. return asinus;
  26. }
  27. void plot_sin(int nb_per, int largeur, int hauteur)
  28. {
  29. double X1;
  30. double hautarc = hauteur/2;
  31. cout<< "^" << endl;
  32. for(double i=hautarc; i >= 0; i--)
  33. {
  34.  X1 = asin (i*2/hauteur,eps)*largeur/(2*pi);
  35.  cout << '|';
  36.  for(double i=0; i < X1; i++)
  37.  {
  38.   cout<< ' ';
  39.  }
  40.  cout<< 'X';
  41.  for(double j=0; j < 2*(largeur/4-X1); j++)
  42.  {
  43.   cout<< ' ';
  44.  }
  45.  cout<< 'X' << endl;
  46. }
  47. for(double j=0; j >= -hautarc; j--)
  48. {
  49.  X1 = asin (j*2/hauteur,eps)*largeur/(2*pi);
  50.  cout << '|';
  51.  for (double k=0; k<largeur/2; k++) cout << ' ';
  52.  for(double i=0; i < -X1; i++)
  53.  {
  54.   cout<< ' ';
  55.  }
  56.  cout<< 'X';
  57.  for(double j=0; j < 2*(largeur/4+X1); j++)
  58.  {
  59.   cout<< ' ';
  60.  }
  61.  cout<< 'X' << endl;
  62. }
  63. }
  64. int main()
  65. {
  66. plot_sin(1, 20, 16);
  67. }

n°1229779
boob05
Posté le 24-10-2005 à 16:14:21  profilanswer
 

Merci ca m'aide bcp ton exercice mais juste un truc qui cloche, le graphe n'est pas juste.En fait j'obtien ceci en compilant:
^
|     XX
|    X    X
|   X     X
|   X      X
|  X       X
|  X        X
| X         X
| X          X
|X          X
|          X          X
|           X          X
|           X         X
|            X        X
|            X       X
|             X      X
|             X     X
|              X    X
|               XX

n°1229808
boob05
Posté le 24-10-2005 à 16:49:35  profilanswer
 

En fait l'erreur est dans la declaration des periodes.
Car il ya q'une seule periode c'est ca le truc.Meme si j'en met plusieurs ca me donne tjrs une comme cette exemeple-ci:
^
|          XX
|       X        X
|      X          X
|     X            X
|    X              X
|   X                X
|  X                 X
| X                   X
+---------------------------------------->
|X                    X
|                    X                    X
|                     X                   X
|                      X                 X
|                       X                X
|                        X              X
|                         X            X
|                          X          X
|                           X        X
|                              XX
 
 
Ca c'est si je mets 2 periodes, 40 hauteur et 16 largeur

n°1229809
boob05
Posté le 24-10-2005 à 16:50:14  profilanswer
 

+---------------------------------------->
 
J'ai rajouté ceci car c'etait pas dedans

n°1229815
Bali-balo
Posté le 24-10-2005 à 17:07:21  profilanswer
 

C'est un détail.
Celui-ci trace une sinusoide moins fouillie (prend le cas 1 / 20 / 16) :
 

Code :
  1. #include <stdafx.h>
  2. #include <iostream>
  3. #include <math.h>
  4.    
  5. using namespace std;
  6. const double eps = 0.1;
  7. const double pi= 4*(atan (1.0));
  8. double abso(double val)
  9. {
  10. if (val<0) return -val;
  11. return val;
  12. }
  13. double asin(double x, double epsi)
  14. {
  15. double terme=x, asinus=x, suite=0;
  16. if(x==1)
  17.  return asinus= pi/2;
  18. if(x==-1)
  19.  return asinus= -pi/2;
  20. for(int i=2; abso(terme)>=eps; i++)
  21. {
  22.  suite=1+2*(i-1);
  23.  terme*=x*x*(suite-2) / ( suite*(suite-1) );
  24.  asinus+=terme;
  25. }
  26. return asinus;
  27. }
  28. void plot_sin(int nb_per, int largeur, int hauteur)
  29. {
  30. double X1;
  31. double hautarc = hauteur/2;
  32. cout<< "^" << endl;
  33. for(double i=hautarc; i >= 0; i--)
  34. {
  35.  X1 = asin (i*2/hauteur,eps)*largeur/(2*pi);
  36.  cout << '|';
  37.  for(double i=0; i < X1; i++)
  38.  {
  39.   cout<< ' ';
  40.  }
  41.  cout<< 'X';
  42.  for(double j=1; j <= 2*(largeur/4-X1) - 1; j++)
  43.  {
  44.   cout<< ' ';
  45.  }
  46.  cout<< 'X' << endl;
  47. }
  48. for (int k=0; k<nb_per*largeur; k++) cout<<'-';
  49. cout << endl;
  50. for(double j=1; j >= -hautarc; j--)
  51. {
  52.  X1 = asin (j*2/hauteur,eps)*largeur/(2*pi);
  53.  cout << '|';
  54.  for (double k=0; k<largeur/2; k++) cout << ' ';
  55.  for(double i=0; i < -X1; i++)
  56.  {
  57.   cout<< ' ';
  58.  }
  59.  cout<< 'X';
  60.  for(double j=1; j <= 2*(largeur/4+X1) - 1; j++)
  61.  {
  62.   cout<< ' ';
  63.  }
  64.  cout<< 'X' << endl;
  65. }
  66. }
  67. int main()
  68. {
  69. cout << "Nombre de periodes / Largeur totalle / Longueur crete a crete: " << endl;
  70. int  nb_per, largeur, hauteur;
  71. cin>> nb_per >> largeur >> hauteur;
  72. plot_sin(nb_per,largeur/nb_per,hauteur);
  73. }

n°1229888
boob05
Posté le 24-10-2005 à 19:19:14  profilanswer
 

Excuse moi de te derranger a nouveau mais j'obtiens tjrs pas le graphe.
Mais c'est vrai que cette fonction est vraiment bien.Merci ;)

n°1229906
Bali-balo
Posté le 24-10-2005 à 19:35:54  profilanswer
 

Oui oui il y aurait toujours le nombre de périodes à prendre en compte mais c'est pas à moi de le faire (bcp trop chiant comme truc!). Et il y a une petite dyssimétrie dans chaque de-mipériode à corriger. A part ça c'est le bon tracé.

n°1229924
boob05
Posté le 24-10-2005 à 19:47:56  profilanswer
 

Ouais je sais c'est pour ca que je vous demande de l'aide mais merci quand meme c'était deja une grande aide ce que ta fait jusqu'à présent.
Merci et bientot pour un prochain exercice peut etre lol!!

n°1230623
boob05
Posté le 25-10-2005 à 16:17:42  profilanswer
 

Salut les gars.Je sais que j'en fais un peu trop mais j'ai besoin de votre aide encore une derniere fois car j'arrive vraiment pas a terminer l'exercice.
J'ai avancé un peu mais je bloque tjrs ( je sais je suis nul  :pfff: )
Voila le code:

Code :
  1. #include <iostream> 
  2. #include <math.h> 
  3.          
  4. using namespace std; 
  5. const double eps = 0.1; 
  6. const double pi= 4*(atan (1.0)); 
  7.    
  8. double abso(double val)
  9. {
  10.      if (val<0) return -val;
  11.          return val;
  12. }
  13.    
  14. double asin(double x, double epsi) 
  15.       double terme=x, asinus=x, suite=0;
  16.       if(x==1) 
  17.          return asinus= pi/2; 
  18.       if(x==-1) 
  19.          return asinus= -pi/2; 
  20.       for(int i=2; abso(terme)>=eps; i++)
  21.       { 
  22.            suite=1+2*(i-1);
  23.            terme*=x*x*(suite-2) / ( suite*(suite-1) );
  24.            asinus+=terme;
  25.       } 
  26.          return asinus; 
  27.    
  28. void plot_sin(int nb_per, int largeur, int hauteur) 
  29.      double X1;
  30.      int X1_entier; 
  31.      double hautarc = hauteur/2; 
  32.      cout<< "^" << endl; 
  33.      cout << largeur << " " << nb_per << " " << largeur/(nb_per*2)<< endl;
  34.   for(double i=hautarc; i >= 0; i--) 
  35.   { 
  36.           X1 = asin (i*2/hauteur,eps)*largeur/((2*pi*nb_per));
  37.           cout << '|';
  38.        X1_entier = (int) X1;
  39.           //cout << X1 << " " << X1_entier <<endl;
  40.    for(int periode=0; periode < nb_per; periode++)
  41.     {   
  42. for(int j=0; j < X1_entier; j++) 
  43.              { 
  44.                  cout<< ' ';
  45.              } 
  46.              cout<< 'X';
  47.      for(int j=0; j <= 2*((largeur/(4*nb_per)-X1_entier) - 1); j++) 
  48.      {
  49.           cout<< ' ';
  50.      }
  51.           cout<< 'X';
  52.    
  53.      for(int j=0; j < X1_entier; j++) 
  54.      { 
  55.            cout<< ' ';
  56.      }
  57.    
  58.      for(int j=0; j < (largeur/(nb_per*2)); j++) cout << " ";
  59.     }
  60.       cout << endl;
  61.    }
  62.       cout<< '+';
  63.       for (int k=0; k<largeur; k++) cout<<'-';
  64.         cout << '>' << endl;
  65.    
  66.         for(double j=0; j > -hautarc; j--) 
  67.          { 
  68.              X1 = asin (j*2/hauteur,eps)*largeur/(2*pi*nb_per);
  69.              cout << '|';
  70.              for (double k=0; k<largeur/(2*nb_per); k++) cout << ' ';
  71.              for(double i=0; i < -X1; i++) 
  72.              { 
  73.                  cout<< ' ';
  74.              } 
  75.              cout<< 'X'; 
  76.              for(double j=0; j <= 2*(largeur/(4*nb_per)+X1) - 1; j++) 
  77.              { 
  78.                  cout<< ' ';
  79.              } 
  80.              cout<< 'X' << endl;
  81.    
  82.          }
  83. }
  84.    
  85. int main() 
  86. {
  87.          cout << "Nombre de periodes / Largeur totalle / Longueur crete a crete: " << endl;
  88.          int  nb_per, largeur, hauteur; 
  89.          cin>> nb_per >> largeur >> hauteur; 
  90.          plot_sin(nb_per,largeur,hauteur);
  91. }


 
Svp aidez moi j'en ai besoin pour demain.

n°1240620
boob05
Posté le 07-11-2005 à 17:29:05  profilanswer
 

Salut c'est encore moi.
J'ai encore besoin de votre aide pour un autre exercice.
Il s'agit de cette fois d'un caclul matriciel.
Voici l'enoncé:http://www.ulb.ac.be/di/info-f-101/Projets/05-06/projet3.pdf
 
Je voulais aussi vous remercier pour votre aide concernant l'exercice d'avant.
Grave a vous j'ai pu le reussir.Merci bcp.
Je vais vous mettre le solution pour ceux qui les interesse:
Voici le site de la soluce avec d'autres exercices:http://www.ulb.ac.be/di/info-f-101/
Voila ben encore merci et j'espere que vous allez encore m'aider. ;)

n°1240688
++fab
victime du syndrome IH
Posté le 07-11-2005 à 18:50:43  profilanswer
 

boob05 a écrit :

Salut c'est encore moi.
J'ai encore besoin de votre aide pour un autre exercice.
Il s'agit de cette fois d'un caclul matriciel.
Voici l'enoncé:http://www.ulb.ac.be/di/info-f-101/Projets/05-06/projet3.pdf
 
Je voulais aussi vous remercier pour votre aide concernant l'exercice d'avant.
Grave a vous j'ai pu le reussir.Merci bcp.
Je vais vous mettre le solution pour ceux qui les interesse:
Voici le site de la soluce avec d'autres exercices:http://www.ulb.ac.be/di/info-f-101/
Voila ben encore merci et j'espere que vous allez encore m'aider. ;)


 
lis les règles, si tu ne t'es pas investi un minimum, personne ne devrai te répondre ...
La, tu balance l'énoncé du sujet en lien, démerdez vous. Personnellement,je prend ça comme une insulte, et je ne dois pas etre le seul.
Fais ce programme, et en cas de blocage, tu demandes.

n°1240749
boob05
Posté le 07-11-2005 à 20:20:19  profilanswer
 

Je n'insulte personne la désolé mais comment veut-tu que je m'investisse
quand je ne sais meme pas me débrouiller pour mes propres exercices.
J'ai pourtant essayé mais je n'y arrive pas et en plus je vous demande pas de me résoudre l'exercice vite fait commca.Si tu veut pas m'aider tant pis je t'y oblige pas.Mais sache que je me permetrais jamais de me foutre de vous ca il faut que vous le sachiez!!!Mais ca me rend vraiment triste ce que tu me dis la mais bon.

n°1240758
Elmoricq
Modérateur
Posté le 07-11-2005 à 20:27:39  profilanswer
 

Dans ce cas-là, il te faut acheter un bouquin ou lire les tutoriaux sur le net en supplément à tes cours.
 
++fab a raison, on peut intervenir sur des points de problème précis, mais on ne résoud pas les exercices...

n°1240762
boob05
Posté le 07-11-2005 à 20:29:07  profilanswer
 

ok merci quand même

n°1240788
++fab
victime du syndrome IH
Posté le 07-11-2005 à 20:55:31  profilanswer
 

boob05 a écrit :

Je n'insulte personne la désolé mais comment veut-tu que je m'investisse
quand je ne sais meme pas me débrouiller pour mes propres exercices.
J'ai pourtant essayé mais je n'y arrive pas et en plus je vous demande pas de me résoudre l'exercice vite fait commca.Si tu veut pas m'aider tant pis je t'y oblige pas.Mais sache que je me permetrais jamais de me foutre de vous ca il faut que vous le sachiez!!!Mais ca me rend vraiment triste ce que tu me dis la mais bon.


 
bon, on a tous débuté un jour. Et vu que j'étais particulièrement mauvais à mes débuts, je suis pret à comprendre ta détresse. Quel est le sujet ? qu'est-ce que tu as commencé à écrire ?  
 
PS: mettre le sujet en lien ou copier-coller tel quel, c'est vraiment mal vu. Si tu ne le savais pas, maintenant tu le sais.

n°1240805
boob05
Posté le 07-11-2005 à 21:08:19  profilanswer
 

Écrivez une fonction sousMatriceCarreeLaPlusDense(int A[TAILLE][TAILLE],int n), où :
– A est une matrice carrée positive,
– n représente sa taille,
– TAILLE est une constante donnant la taille maximale possible pour A.
 
qui doit trouver et afficher la sous-matrice carrée la plus dense.
 
Définitions :
– une sous-matrice de A est l’ensemble des éléments contenus entre un coin supérieur gauche A[i][ j] et
un coin inférieur droit A[k][l] avec i <= k et j <= l,
– la densité d’une matrice est la somme de ses éléments divisée par sa taille.
 
Exemple Soit la matrice :
 
A= | 4 6 10 |
     |2 4 5   |
     |2 3 1   |
Après application de la fonction sur A, s’affiche à l’écran :
 
Sous-matrice la plus dense:
6 10
4 5
Densite:
12.5
 
car la somme fait : 6+10+4+5 = 25 et la dimension est 2. Dans le cas où plusieurs sous-matrices ont la
même densité, c’est la première trouvée qui doit être affichée.
 
Voila l'énnoncé.
Ben le fait est que je ne vois pas comment commencer
 
PS:quand tu dis que t'étais mauvais à tes début, pourrait tu me dire comment ta fait pour y remédier.

n°1240840
++fab
victime du syndrome IH
Posté le 07-11-2005 à 21:47:03  profilanswer
 

boob05 a écrit :

Ben le fait est que je ne vois pas comment commencer


 
Ton problème est plutot d'ordre algorithmique, dans ce cas le bon forum est plutot la partie algo, mais bon passons.
Et bien, tu décomposes ton problème :
parcourir ta matrice A, à partir de chaque élément (A[i][j]), en extraire toutes les sous matrices, et pour chaque sous matrice, calculer sa "densité".
tu stocke la sous matrice ayant la densité maximum dans un coin, et tu l'écrase par une autre sous matrice lorsque celle-ci a une densité *strictement* supérieure.
Le choix de faire ça avec des matrices C-staile, ça va te faire chier.
Et le paramètre n, je ne l'ai pas compris :|
 
Si ta matrice peut prendre des coefs négatifs, les sous matrices extraites vont jusqu'à la matrice (1,1).
 

boob05 a écrit :


PS:quand tu dis que t'étais mauvais à tes début, pourrait tu me dire comment ta fait pour y remédier.


je ne suis pas sur d'y avoir remédier :) un jour, ça m'a intéressé, mais ça n'a pas été immédiat.


Message édité par ++fab le 07-11-2005 à 22:46:27
n°1241171
boob05
Posté le 08-11-2005 à 13:33:33  profilanswer
 

Je laisse tomber, je comprends rien :(

n°1242079
boob05
Posté le 09-11-2005 à 11:59:29  profilanswer
 

Salut.En fait j'ai essayé de faire qqchose mais j'arrive pas loin :(
Voila ce que j'ai deja fait:

Code :
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4. // declaration de constantes globales
  5. const int TAILLE = 100;
  6. // Fonction Calcul de densité
  7. double calc_dens(double V[TAILLE][TAILLE])
  8. {
  9. double densite = 0;
  10. for (int i = 0; i < TAILLE; i++)
  11.  for (int j = 0; j < TAILLE; j++)
  12.   densite += V[i][j];
  13. return densite;
  14. }
  15. void sousMatriceCarreeLaPlusDense( int A[TAILLE][TAILLE], int n)
  16. {
  17. }
  18. // Fonction Main
  19. int main()
  20. {
  21. int Taille;
  22. cin>>Taille;
  23. sousMatriceCarreelaPlusDense(A[TAILLE][TAILLE], Taille);
  24. }


 
Je sais que c'est rien mais croyez moi j'ai vraiment essayé

n°1242590
++fab
victime du syndrome IH
Posté le 09-11-2005 à 19:42:28  profilanswer
 

pour le calcul de la densité, tu peux peut être faire comme ceci.
Attention, ça reste à des années lumières de la bonne façon de torcher ce problème ( ie à coup de slice, accumulate , valarray ou ublas::matrix<>, ... )
 

Code :
  1. #include <iostream>
  2. #include <cassert>
  3. unsigned const TAILLE = 10;
  4. double calc_dens( double const* v, int n )
  5. {
  6.      double densite = 0;
  7.      for( int i = 0; i < n; ++i )
  8.          for( int j = 0; j < n; ++j )
  9.              densite += v[i * n + j];
  10.      return densite / n;
  11. }
  12. int main()
  13. {
  14.     int taille;
  15.     std::cin >> taille;
  16.     assert( taille < TAILLE ); 
  17.     double v[TAILLE][TAILLE] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
  18.     std::cout << calc_dens( &v[0][0], taille ) << '\n';
  19. }


 
reste à faire une fonction pour extraire les sous matrices ...
Si j'ai bien compris, les sous matrices ont taille lignes, taille colonnes.

n°1242627
boob05
Posté le 09-11-2005 à 20:37:35  profilanswer
 

Ouais je pense que c'est ca.Moi aussi j'ai essayé mais je bloque.Déjà ça c'est un miracle

n°1243202
boob05
Posté le 10-11-2005 à 14:38:09  profilanswer
 

En fait je crois pas qu'on puisse utiliser le include cassert et les std::.
Apart ca je crois que le but de l'execice est de trouver la sou matrice la plus dense.

n°1243515
++fab
victime du syndrome IH
Posté le 10-11-2005 à 19:35:30  profilanswer
 

boob05 a écrit :

En fait je crois pas qu'on puisse utiliser le include cassert et les std::.


Ah ?
 

Citation :

Apart ca je crois que le but de l'execice est de trouver la sou matrice la plus dense.


tu crois ?

n°1243529
boob05
Posté le 10-11-2005 à 19:56:30  profilanswer
 

Bon ok c'est bon tu veut pas m'aider c'est une chose mais t'es pas obligé de te foutre de moi ok?

n°1243535
Joel F
Real men use unique_ptr
Posté le 10-11-2005 à 20:08:55  profilanswer
 

10€ et un mars aussi .... y a deja un bout de soluce là faut pas pousser non plus, on va pas te le faire ton exo :o

n°1243538
MrFreeze
Don't Panic
Posté le 10-11-2005 à 20:14:16  profilanswer
 

Hey boob05 je coirs que tu abuses la, ++fab te donne deja pas mal de pistes, on dirait que tu veux juste que quelqu'un fasse le probleme a ta place. C'est un forum d'entraide, on va pas passer tes exams a ta place... Si tu comprends rien aux math et/ou en info va a ta BU et prends des bouquins. C'est pas tres complique, il faut juste s'y mettre, avec un peu de volonté et d'investissement personnel tu vas y arriver.

n°1247930
ehben
Posté le 17-11-2005 à 20:16:14  profilanswer
 

boob05 a écrit :

Je n'insulte personne la désolé mais comment veut-tu que je m'investisse
quand je ne sais meme pas me débrouiller pour mes propres exercices.
J'ai pourtant essayé mais je n'y arrive pas et en plus je vous demande pas de me résoudre l'exercice vite fait commca.Si tu veut pas m'aider tant pis je t'y oblige pas.Mais sache que je me permetrais jamais de me foutre de vous ca il faut que vous le sachiez!!!Mais ca me rend vraiment triste ce que tu me dis la mais bon.


:o alors c'est dur l'ULB mon coco :o  
allez bleu rdv à la St-V :o

n°1247944
boob05
Posté le 17-11-2005 à 20:46:06  profilanswer
 

ehben a écrit :

:o alors c'est dur l'ULB mon coco :o  
allez bleu rdv à la St-V :o


 
T'es a l'ulb aussi.
Pour la St-V laisse tomber il faut que je ratrappe mon retard!
 
Ps: "bleu" hihi

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  un petit ex en c++

 

Sujets relatifs
petit soucis avec intval() - pfff facile de crier qd on ne sait pas :ppetit problème de modélisation
[resolu] Petit souci sur le php de mon formulaire[php] petit souci regexp
[RESOLU] Petit probleme debutant sur constructeurAide pour petit prog
Petit problème avec WHEREpetit programme
bloqué sur un petit programme en CCSS Petit éclaircissement
Plus de sujets relatifs à : un petit ex en c++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR