IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Problème programme triangle


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Problème programme triangle
    Bonjour à tous voila je suis en première année de licence informatique et je bloque totalement sur un programme que l'on nous a demandé de faire en TP.
    On nous a d'abord demander d'écrire un programme permettant d'afficher un triangle de hauteur N. J'ai donc écrit ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <iostream.h>
    int main (void)
    {
       int N, M;
       char e, f;
     
       cout << "Quelle est la hauteur du triangle? ";
       cin >> N;
     
       for (e=0;e<N;e++)
       {   
           for (f=0;f<e+1;f++)
           {
            cout << "*";
           }
       cout << endl;
       }   
       system ("PAUSE");
       return 0;
    }
    J'avais trouvé, ça marchait j'étais super content mais l'exercice d'après m'a vite calmé. On nous demande de faire la même chose, mais cette fois si avec un triangle à l'envers de ce type :

    ****
    ***
    **
    *

    Après des heures de réflexion j'ai trouvé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <iostream.h>
    int main (void)
    {
       int N, M;
       char e, f;
     
       cout << "Quelle est la hauteur du triangle? ";
       cin >> N;
     
       for (e=0;e<N;e++)
       {   
           for (f=0;f<N-e;f++)
           {
            cout << "*";
           }
       cout << endl;
       }   
       system ("PAUSE");
       return 0;
    }
    Voila ça me parait logique mais ca marche pas donc je désespère, je sais plus quoi faire alors si qqun pouvait m'aider svp ce serait vraiment super, je sais que c'est tout con en plus et ça me désespère encore plus .

  2. #2
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 218
    Points
    1 218
    Par défaut
    Des heures de reflexion

    bon, comme il faut pas faire les chose à ta place, je te donne un indice
    dans une fonction du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int i=0;i<n;i++){...}
    le passage i++ est en fait une instruction qu'on effectue à chaque fois qu'on boucle.

    or i++; est équivalent à ++i; est équivalent à i+=1; est équivalent à i=i+1; .

    or rien ne t'empèche d'utiliser quelque-chose du genre i=i-1 !! (d'ailleurs équivalent à --i; ).

    bon, je n'en dit pas plus

    bonne chance

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    oui bon peut être pas des heures mais une bonne demi-heure kan mm .

    J'ai déjà essayé avec f-- ou f=f-1, mais rien à faire le triangle reste à l'endroit!
    Bon je vais essayer encore faut pas désespérer mais je sens que j'vais pas y arriver.
    Merci pour ton aide quand même.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Je vois pas trop ce qui cloche, je viens d'essayer chez moi, ça marche.

  5. #5
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 218
    Points
    1 218
    Par défaut
    En y regardant de plus pres, ton code marche effectivement, (je l'avais pas testé êtant donné que la procedure normale est une décrémentation j'étais parti du principe qu'il ne fonctionnait pas.

    a -tu bien vérifié que ton compilateur à recompilé le projet ? (sinon, tu execute encore ton ancien code...)

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je viens de recompiler pour être sûr et ca marche toujours pas je trouvais ca pourtant logique. J'ai déjà essayé avec une décrémentation mais c'est toujours la mm chose le programme se compile mais ensuite ca me fait un triangle "à l'endroit" quand je l'exécute du genre :

    *
    **
    ***
    ****

    J'comprend vraiment pas peut être que ca vient du compilateur je programme sous Dev C++ ca peut venir de ca à votre avis?

  7. #7
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par fdaraf Voir le message
    oui bon peut être pas des heures mais une bonne demi-heure kan mm .

    J'ai déjà essayé avec f-- ou f=f-1, mais rien à faire le triangle reste à l'endroit!
    Bon je vais essayer encore faut pas désespérer mais je sens que j'vais pas y arriver.
    Merci pour ton aide quand même.
    Peut-être parcequ'il faut le faire sur 'e' ?


    Utilises des noms de variables plus précis que "e" et "f"...
    Ton code se résume par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (numLigne = 1; (numLigne <= hauteur); ++numLigne) {
       for (numColonne = 1; (numColonne <= numLigne); ++numColonne) {
          print("*");
       }
       print("\n");
    }
    Si tu veux inverser....
    Alors numColonne doit aller de 1 à hauteur-numLigne+1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (numLigne = 1; (numLigne <= hauteur); ++numLigne) {
       for (numColonne = 1; (numColonne <= hauteur + 1 - numLigne); ++numColonne) {
          print("*");
       }
       print("\n");
    }
    Maintenant... si on remplacait les valeurs ?
    Par exemple numLigne2 = hauteur + 1 - numLigne
    Alors
    numLigne2 va de:
    - (hauteur + 1 - 1) [quand numLigne vaut 1], soit hauteur.
    - à (hauteur + 1 - hauteur) [quand numLigne vaut hauteur], soit 1
    - bien sur dans l'autre sens (-- au lieu de ++)

    Soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (numLigne2 = hauteur; (numLigne2 >= 1); --numLigne2) {
       for (numColonne = 1; (numColonne <= numLigne2); ++numColonne) {
          print("*");
       }
       print("\n");
    }

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    c 'est un simple problème de compilation, à mon avis, tu compiles toujours le meme fichier.

    rajoute au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout << "Exercice n°1"<< std::endl;
    pour ta 1ere solution
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout << "Exercice n°2" << std::endl;
    pour ta deuxième solution

    ça te permettra de voir quel code est executé.

    ah autre chose pourquoi t'utilises des chars ( e,f) pour tes for ?

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    C bon ca marche par contre je ne sais pas trop pourquoi parce que je n'ai rien changé j'ai juste recompiler pour la 3ème fois consécutive et ca a marché. Dc je sais pas trop ce que j'ai fait. Merci à tous pour votre aide et oui j'avais pas fait gaf que j'avais déclaré e et f com char dc merci de me l'avoir fais remarqué.
    Encore merci.

  10. #10
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Donc ton problème est résolu ? Merci de penser au bouton

Discussions similaires

  1. Problème Programmation MFC
    Par xyz dans le forum MFC
    Réponses: 17
    Dernier message: 13/05/2006, 20h00
  2. Problème Programmation MFC
    Par xyz dans le forum Réseau
    Réponses: 3
    Dernier message: 13/05/2006, 14h36
  3. [Problème] Programme huit reines
    Par thegreatbato dans le forum C
    Réponses: 20
    Dernier message: 04/05/2006, 22h04
  4. Problème programmation : log
    Par rootsl dans le forum C
    Réponses: 4
    Dernier message: 29/03/2006, 11h26
  5. Problème programmation objet
    Par Contrec dans le forum MFC
    Réponses: 54
    Dernier message: 30/03/2005, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo