programme c++ - C++ - Programmation
Marsh Posté le 02-02-2007 à 17:21:55
ReplyMarsh Posté le 04-02-2007 à 11:23:00
ReplyMarsh Posté le 04-02-2007 à 11:40:13
ReplyMarsh Posté le 04-02-2007 à 11:42:18
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.
Marsh Posté le 04-02-2007 à 11:44:49
#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...
Marsh Posté le 04-02-2007 à 11:51:08
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: , ça m'apprendra à répondre sur MSN pendant que je rédige mon message
Marsh Posté le 04-02-2007 à 12:14:45
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
Marsh Posté le 04-02-2007 à 14:55:40
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?
Marsh Posté le 04-02-2007 à 15:04:25
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++ ...
Marsh Posté le 04-02-2007 à 16:36:31
je m'excuse, j'ai eu un probléme de conexion, j'arrive toujours même aprés avoir inversé les bornes...
Marsh Posté le 04-02-2007 à 16:41:07
ReplyMarsh Posté le 04-02-2007 à 16:41:34
Effectivement, inverser c'est pas très clair. Tu mets un espace pour j de 1 à hauteur moins i.
Marsh Posté le 04-02-2007 à 16:41:46
ReplyMarsh Posté le 04-02-2007 à 16:48:33
#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
Marsh Posté le 04-02-2007 à 16:59:00
je n'arrive pas à trouver la relation entre le côté droit par rapport au milieu...
Marsh Posté le 04-02-2007 à 17:24:46
dessine ton A sur une feuille à petit careau, une case par caractère. Et compte.
Marsh Posté le 04-02-2007 à 17:48:12
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...
Marsh Posté le 04-02-2007 à 18:07:34
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
Marsh Posté le 04-02-2007 à 18:12:27
#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;
}
}
Marsh Posté le 04-02-2007 à 18:24:22
Code :
|
OSEF le warning pour le floor (conversion d'un double en entier) et ca donne:
Code :
|
Spoiler : |
Marsh Posté le 04-02-2007 à 18:44:48
Code :
|
Edit: grilled
Marsh Posté le 05-02-2007 à 19:10:46
Euh, niveau code, ça se serait rapproché de ce qu'ont fait slash33 et Ben_be je pense. Pourquoi?
Marsh Posté le 05-02-2007 à 19:17:07
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?
Marsh Posté le 05-02-2007 à 19:22:10
Euh, j'ai rien codé hein (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.
Marsh Posté le 05-02-2007 à 19:29:14
Code :
|
Marsh Posté le 05-02-2007 à 20:28:04
@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 ). Tu gagnerais du temps...
Marsh Posté le 05-02-2007 à 20:34:59
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...
Marsh Posté le 05-02-2007 à 20:39:25
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.
Marsh Posté le 02-02-2007 à 17:20:52
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.