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

  FORUM HardWare.fr
  Programmation
  C++

  programme c++

 


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

programme c++

n°1510203
richie_hei​g
Posté le 02-02-2007 à 17:20:52  profilanswer
 

depuis 2 jours j'essaie sans succes de faire un programme c++ qui affiche la lettre lette A en etoile, l'utilisateur doit pouvoir entrer la hauteur; et la barre du A doit toujours se situer à la 4 eme ligne en partant du bas et elle est toujours située la . Merci de m'aider, je dois le rendre dans 5 jours.

mood
Publicité
Posté le 02-02-2007 à 17:20:52  profilanswer
 

n°1510204
IrmatDen
Posté le 02-02-2007 à 17:21:55  profilanswer
 

Qu'à tu déjà fais et quel est le résultat obtenu?

n°1510553
richie_hei​g
Posté le 04-02-2007 à 11:23:00  profilanswer
 

IrmatDen a écrit :

Qu'à tu déjà fais et quel est le résultat obtenu?


n°1510555
richie_hei​g
Posté le 04-02-2007 à 11:39:10  profilanswer
 

personne pour m'aider???

n°1510556
elianor
bannie 17 fois
Posté le 04-02-2007 à 11:40:13  profilanswer
 

IrmatDen a écrit :

Qu'à tu déjà fais et quel est le résultat obtenu?


 

n°1510557
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-02-2007 à 11:42:18  profilanswer
 

richie_heig a écrit :

personne pour m'aider???


Si, mais ne crois pas qu'on va te pondre ton programme sans que tu n'aies fourni le moindre effort. IrmatDen t'as posé une question, merci d'y répondre. Si tu n'as rien fait, alors il te reste 3 jours. Si tu as fait quelque chose mais que tu coinces sur un bug ou un disfonctionement de ton programme, alors poste le code concerné ici et on t'aidera à corriger.


Message édité par Harkonnen le 04-02-2007 à 11:42:58
n°1510559
richie_hei​g
Posté le 04-02-2007 à 11:44:49  profilanswer
 

#include<iostream>
 
 
int main()
{
int i,j,hauteur;
 
cout<<"hauteur : ";cin>>hauteur;
 
for(i=1;i<=hauteur;i++)
        {
        for(j=1;j<i;j++)cout<<" ";
        for(j=1;j<=hauteur+1-i;j++)cout<<"*";
        cout<<endl;
        }
 
}
 
j'obtient un côté de A, quelqu'un peut medire ou se trouve l'erreur svp, je navigue...

n°1510560
elianor
bannie 17 fois
Posté le 04-02-2007 à 11:47:09  profilanswer
 

ça compile pas, cout et cin sont dans le namesapce std :o

n°1510561
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-02-2007 à 11:51:08  profilanswer
 

Mais bien sur... Pour ton info, ton programme ne compilera jamais, donc ça m'étonnerait que tu obtiennes ne serait-ce qu'un coté de A

 

edit: [:benou_grilled], ça m'apprendra à répondre sur MSN pendant que je rédige mon message


Message édité par Harkonnen le 04-02-2007 à 11:51:58
n°1510565
richie_hei​g
Posté le 04-02-2007 à 12:14:45  profilanswer
 

on utilise à l'école Borland c++ et chez moi 4a compile, sinon voici une autre version#include<iostream>
using namespace std;
 
int main()
{
int i,j,hauteur;
 
cout<<"hauteur : ";cin>>hauteur;
 
for(i=1;i<=hauteur;i++)
        {
        for(j=1;j<i;j++)cout<<" ";
        for(j=hauteur-i;j<=hauteur-i;j++)cout<<"*";
        cout<<endl;
        }
 
}
 
et ceci

mood
Publicité
Posté le 04-02-2007 à 12:14:45  profilanswer
 

n°1510590
IrmatDen
Posté le 04-02-2007 à 14:55:40  profilanswer
 

La première boucle va plutôt te dessiner le côté gauche d'un V, et la 2ème, va n'afficher d'une étoile quoi qu'il arrive, donc autant virer la boucle.
 
Pour la première boucle il te faut inverser les bornes, tu affiches une étoile: ca affichera le coté gauche du A.
Après si tu regardes ce que ça doit donner pour une hauteur de 6:

     *
    * *
   *****
  *     *
 *       *
*         *


Quel relation trouves-tu pour le côté droit par rapport au gauche? A quel indice se trouve toujours le milieu?

n°1510593
Joel F
Real men use unique_ptr
Posté le 04-02-2007 à 15:04:25  profilanswer
 

richie_heig a écrit :

on utilise à l'école Borland c++


 
On va trouver que je me repéte mais ...
 
change d'école ou du moins, rend toi service, utilise g++ ...

n°1510606
richie_hei​g
Posté le 04-02-2007 à 16:36:31  profilanswer
 

je m'excuse, j'ai eu un probléme de conexion, j'arrive toujours même aprés avoir inversé les bornes...  

n°1510608
richie_hei​g
Posté le 04-02-2007 à 16:41:07  profilanswer
 

Irmadem, comment tu fais pour afficher la barre du A

n°1510609
IrmatDen
Posté le 04-02-2007 à 16:41:34  profilanswer
 

Effectivement, inverser c'est pas très clair. Tu mets un espace pour j de 1 à hauteur moins i.

n°1510610
IrmatDen
Posté le 04-02-2007 à 16:41:46  profilanswer
 

richie_heig a écrit :

Irmadem, comment tu fais pour afficher la barre du A


if

n°1510611
richie_hei​g
Posté le 04-02-2007 à 16:43:24  profilanswer
 

Au secours,je stresse, ne me laissez pas tomber...

n°1510612
richie_hei​g
Posté le 04-02-2007 à 16:48:33  profilanswer
 

#include<iostream>
using namespace std;
 
int main()
{
int i,j,hauteur;
 
cout<<"hauteur : ";cin>>hauteur;
 
for(i=1;i<=hauteur;i++)
        {
        for(j=1;j<=hauteur-i;j++)cout<<" ";
        for(j=hauteur-i;j<=hauteur-i;j++)cout<<"*";
        cout<<endl;
        }
 
}
j'obtient le côté de A et pour la suite

n°1510616
richie_hei​g
Posté le 04-02-2007 à 16:59:00  profilanswer
 

je n'arrive pas à trouver la relation entre le côté droit par rapport au milieu...

n°1510619
richie_hei​g
Posté le 04-02-2007 à 17:23:09  profilanswer
 

quelqu'un peut il m'aider???

n°1510620
elianor
bannie 17 fois
Posté le 04-02-2007 à 17:24:46  profilanswer
 

dessine ton A sur une feuille à petit careau, une case par caractère. Et compte.

n°1510628
richie_hei​g
Posté le 04-02-2007 à 17:48:12  profilanswer
 

c'est ce que j'ai fais pour trouver le côté gauche, le probléme c'est cette barre, stp sois plus explicite elianor...

n°1510631
slash33
Posté le 04-02-2007 à 17:59:03  profilanswer
 

Code :
  1. if (i == POSITION_BARRE_A)
  2. {
  3.   // dessiner la barre
  4. }

n°1510635
richie_hei​g
Posté le 04-02-2007 à 18:07:34  profilanswer
 

merci slash, mais ca ne resoud pas entierement le pb, il me manque une relation entre cette barre et le côté droit de A

n°1510638
richie_hei​g
Posté le 04-02-2007 à 18:12:27  profilanswer
 

#include<iostream>
using namespace std;  
 
int main()
{
int i,j,hauteur;
 
cout<<"hauteur : ";cin>>hauteur;
 
for(i=1;i<=hauteur;i++)
        {
        for(j=1;j<=hauteur-i;j++)cout<<" ";
        for(j=hauteur-3;j<=hauteur-3;j++)cout<<"*";
         if (i == hauteur-3)
         {
         cout <<"*" ;
         }
 
        cout<<endl;
        }
 
}

n°1510640
Ben_be
ʎlıɐp uǝɯǝlʇuǝƃ ̡̢̛̗̘̙̜̝̞̟̠̊̋̌̍
Posté le 04-02-2007 à 18:24:22  profilanswer
 

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main()
  5. {
  6. int i,j,hauteur;
  7.         int mid,space,col,bar,lin;
  8.        
  9. std::cout << "hauteur : ";
  10. std::cin >> hauteur;
  11.        
  12.         mid=hauteur;
  13.        
  14.         bar=floor(0.5*hauteur);
  15.        
  16.        
  17.         for(space=0;space<mid;space++)
  18.         {
  19.             for(col=1;col<=mid+space;col++)
  20.             {
  21.                 if(col==(mid-space) || col==(mid+space) )
  22.                 {
  23.                     std::cout << "*";
  24.                 }
  25.                 else
  26.                 {
  27.                     if(lin==bar && col<(mid+space) && col>(mid-space))
  28.                     {
  29.                         std::cout << "*";
  30.                     }
  31.                     else
  32.                     {
  33.                         std::cout << " ";
  34.                     }
  35.                 }
  36.             }
  37.             std::cout << "\n";
  38.             lin++;
  39.         }
  40. }


 
OSEF le warning pour le floor (conversion d'un double en entier) et ca donne:
 

Code :
  1. hauteur : 30
  2.                              *
  3.                             * *
  4.                            *   *
  5.                           *     *
  6.                          *       *
  7.                         *         *
  8.                        *           *
  9.                       *             *
  10.                      *               *
  11.                     *                 *
  12.                    *                   *
  13.                   *                     *
  14.                  *                       *
  15.                 *                         *
  16.                *                           *
  17.               *******************************
  18.              *                               *
  19.             *                                 *
  20.            *                                   *
  21.           *                                     *
  22.          *                                       *
  23.         *                                         *
  24.        *                                           *
  25.       *                                             *
  26.      *                                               *
  27.     *                                                 *
  28.    *                                                   *
  29.   *                                                     *
  30. *                                                       *
  31. *                                                         *
  32. [Press Enter to close window]


 
 
 [:r3g]

Spoiler :


edit: je sais, j'ai que ca a foutre, mais j'avais que ca a foutre pour tester Netbeans que je viens de re-installer


Message édité par Ben_be le 04-02-2007 à 18:26:19
n°1510643
richie_hei​g
Posté le 04-02-2007 à 18:38:55  profilanswer
 

merci Ben_be, pas facile ton code

n°1510645
slash33
Posté le 04-02-2007 à 18:44:48  profilanswer
 

Code :
  1. void draw_line(unsigned int letter_height, unsigned int y_offset, bool isHBar)
  2. {
  3. const unsigned int x_offset = letter_height - y_offset;
  4. const unsigned int x_1st = x_offset - 1;
  5. const unsigned int x_last = 2 * letter_height - x_offset - 1;
  6. for (unsigned x = 0; x < 2 * letter_height - 1; x++)
  7. {
  8.    if ((x == x_1st) || (x == x_last))
  9.   cout << "*";
  10.    else if (isHBar && x > x_1st && x < x_last )
  11.   cout << "*";
  12.    else
  13.   cout << " ";
  14. }
  15. cout << endl;
  16. }
  17. int main(int argc, char* argv[])
  18. {
  19. const unsigned int letter_height = 6;
  20. const unsigned int bar_offset = 3;
  21. for (unsigned line_index = 0; line_index < letter_height; line_index++)
  22. {
  23.  draw_line(letter_height, line_index, line_index == bar_offset);
  24. }
  25. return 0;
  26. }


 
Edit: grilled


Message édité par slash33 le 04-02-2007 à 19:25:29
n°1510646
richie_hei​g
Posté le 04-02-2007 à 18:57:25  profilanswer
 

Merci slash33

n°1511082
richie_hei​g
Posté le 05-02-2007 à 18:52:14  profilanswer
 

salut IrmatDen, c'était quoi ta solution?

n°1511086
IrmatDen
Posté le 05-02-2007 à 19:10:46  profilanswer
 

Euh, niveau code, ça se serait rapproché de ce qu'ont fait slash33 et Ben_be je pense. Pourquoi?

n°1511089
richie_hei​g
Posté le 05-02-2007 à 19:17:07  profilanswer
 

parceque pour slash33 me semble compliqué, je debute en c++, sinon le raisonnement de Ben_be, je le comprends facilement, je peux voir ta solution?

n°1511091
IrmatDen
Posté le 05-02-2007 à 19:22:10  profilanswer
 

Euh, j'ai rien codé hein :D (et de toute façon, je suis pas pour balancer des solutions, je doute que ça t'enseigne quoi que ce soit puisque tu débutes).
Je t'ai indiqué des étapes de raisonnement: ça allié à tes cours et des croquis (comme elianor l'a conseillé plus tôt), tu devrais comprendre l'étape. Il te suffit de reproduire l'algo que tu appliques toi-même pour dessiner.

n°1511094
richie_hei​g
Posté le 05-02-2007 à 19:27:56  profilanswer
 

C'etait juste pour voir...

n°1511095
0x90
Posté le 05-02-2007 à 19:29:14  profilanswer
 

Code :
  1. #include <iostream>
  2.  
  3. std::string repeat(const char* str, int times) {
  4.     std::string base(str);
  5.     std::string joined;
  6.     while (times>=1) {
  7.         if (times%2) {
  8.             times-=1;
  9.             joined+=base;
  10.         } else {
  11.             times/=2;
  12.             base+=base;
  13.         }
  14.     }
  15.     return joined;
  16. }
  17.  
  18. template <int taille, int revco>
  19. struct affiche_le_a {
  20.     affiche_le_a() {
  21.         affiche_le_a<taille-1, revco+1> la_suite_marcel;
  22.         std::cout << repeat(" ", revco+1) << "* " << repeat("  ", taille-2) << "*" << std::endl;
  23.     }
  24. };
  25.  
  26. template <int revco>
  27. struct affiche_le_a<1, revco> {
  28.     affiche_le_a() {
  29.         std::cout << repeat(" ", revco+1) << "*" << std::endl;
  30.     }
  31. };
  32.  
  33. template <int taille>
  34. struct affiche_le_a<taille, 3> {
  35.     affiche_le_a() {
  36.         affiche_le_a<taille-1, 4> la_suite_marcel ;
  37.         std::cout << "    *" << repeat("**", taille-1) << std::endl;
  38.     }
  39. };
  40.  
  41. int main(void) {
  42.     affiche_le_a<42, 0> on_y_va;
  43. }


 
[:chrisbk]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1511096
IrmatDen
Posté le 05-02-2007 à 19:33:11  profilanswer
 

http://www.tolor.net/Smileys/Ounet/xpounet.gif [:rofl]

n°1511120
IrmatDen
Posté le 05-02-2007 à 20:28:04  profilanswer
 

@richie_heig: tu dois te taper d'autres lettres à part le A et le E?
Tu devrais chercher à comprendre les solutions qui t'ont été proposées (enfin, ptet pas celle de 0x90 pour le moment :D). Tu gagnerais du temps...

n°1511124
richie_hei​g
Posté le 05-02-2007 à 20:34:59  profilanswer
 

justement, actuellement, je travaille sur le E, c pas évident... mais j'essaie pour mieux comprendre cette histoire de boucles...sinon je suis pour toutes aide...

n°1511126
richie_hei​g
Posté le 05-02-2007 à 20:38:42  profilanswer
 

et dire que je dois rendre ça mercredi...

n°1511127
IrmatDen
Posté le 05-02-2007 à 20:39:25  profilanswer
 

Bon, déjà pour un E, t'as pas besoin d'espaces. Ensuite, tu as quoi:
> une barre à gauche qui fait toute la hauteur,
> une barre sur la première ligne,
> une sur la dernière,
> et enfin une au milieu.
Donc, t'as besoin d'une boucle et 1 ou 3 if selon à quel point tu les imbrique.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  programme c++

 

Sujets relatifs
[résolu]Shell linux dans un programme JavaPause du programme en attendant un évènement
Programme calculant la difference entre 2 datespetit programme pour TPE
Libérer la mémoire et fonction recvfrom[résolu]problème avec un ptit programme bootable.
[Résolu][C] Exécuter un programme dans un autre programme.[Perl] Récupérer valeur d'un programme Perl dans un batch
trace programme[Résolu ] [Cobol et JCL] Paramètre d'un programme
Plus de sujets relatifs à : programme c++


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