Triangle en c++ - C++ - Programmation
Marsh Posté le 08-10-2009 à 07:25:34
bel exercice
ca sort d'ou ces TPs foireux ? Tout les ans on les revoit
Marsh Posté le 08-10-2009 à 10:52:11
Bah les profs vont quand même pas commencer à bosser hein
Ils reprennent tout les ans les mêmes exos, comme çà ils peuvent glander tranquille
Marsh Posté le 08-10-2009 à 11:24:49
En même temps faut bien commencer par quelque chose.
On a tous fait ce genre de truc au début sur MO5 ou une calculette
Marsh Posté le 08-10-2009 à 15:53:37
Ca donnerait un truc comme : pour un espace de supprimé on supprime 2 étoiles ?
Chuis nul, j'débute aussi
Marsh Posté le 08-10-2009 à 16:02:18
C'est plus un pb d'algo que de c++ en l'occurrence
Marsh Posté le 08-10-2009 à 16:31:41
J'débute aussi en algo
Marsh Posté le 08-10-2009 à 17:20:50
Mais l'algo c'est juste du creusage de tête
J'utilise - pour symboliser une espace et je commence par la base. Genre pour 3 lignes ça fait :
Si on s'intéresse aux lignes :
Pour une base de 6 dans mon exemple, on a 3 lignes... en dessinant 2-3 exemples on dirait bien que pour une base de longueur paire (2N étoiles de long) on obtient un triangle de N étages
Ici on sait que si on nous donne une longueur de base (genre 8), on déduit un nombre de ligne (4)
Si on s'intéresse au contenu d'une ligne : en fonction de l'étage souhaité les * commencent plus ou moins tard (après plus ou moins d'espaces). Mais combien d'espace avant la première * ?
Pour le nombre d'espaces on constate que les étoiles commencent :
Bref on a une relation entre le numéro de l'étage et le nombre d'espace à insérer.
Ici on sait que pour la ligne numéro N on commence par foutre N espaces
Pour le nombre d'étoiles sur une ligne on remarque que :
Ici on sait que pour la ligne numéro N on fout [longueur de la base - 2*N] étoiles
Pour le nombre d'espaces après la dernière étoile d'une ligne, c'est le même que pour le nombre d'espaces avant la première étoile de cette même ligne, donc pb déjà résolu ici
Ici on sait que pour la ligne numéro N on termine par foutre N espaces
Bref pourquoi pas faire une fonction du genre ligne(numéro de l'étage, longueur de la base), en tenant compte du fait que pour toi la base est en bas, pas en haut
Marsh Posté le 09-10-2009 à 09:07:48
Non mais le nombre d'étoiles à imprimer c'est juste 2*L (avec L == n° de la ligne à imprimer), et le nombre d'espace en début c'est N-L (avec N == nombre de lignes total).
Donc, soit 3 lignes à imprimer :
- ligne 1 : 2 * 1 étoiles, 3 - 1 espaces :
|
- ligne 2 : 2 * 2 étoiles, 3 - 2 espaces :
|
- ligne 3 : 2 * 3 étoiles, 3 - 3 espaces :
|
Après il suffit d'utiliser la classe std::string et le constructeur suivant :
string ( size_t n, char c ); |
(cf. http://cplusplus.com/reference/string/string/string )
Marsh Posté le 14-10-2009 à 18:28:22
Merci @Xavier_OM et merci à toi @Elmoricq. J'ai lu vos réponses et sur le moment même j'ai pas compris mais après l'avoir fait j'ai compris X-D
Enfin bréf
Merci
Marsh Posté le 07-10-2009 à 20:14:18
Bonjour
je voudrais faire un triangle en c++. Un triangle de ce genre :
j'ai déja réussis à afficher la moitié du triangle comme cela :
*
**
***
****
*****
******
avec le code suivant :
Cependant , il faut que j'affiche un triangle de la sorte comme je viens de le dire :
Est-ce que quelqu'un aurait la gentillesse de me filer un coup de pousse.
N.B:
Je dois faire plusieurs triangles sur une même ligne mais je voudrai déjà faire un seul triangle. Je verrai pour la suite...
Je vous remercie à l'avance.
---------------
Le plus grand risque dans la vie, est de n'en prendre aucun!