Petit programme en C.
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

Petit programme en C.



  1. #1
    invitebf26947a

    Petit programme en C.


    ------

    Bonjour.

    Une prof nous a donné cet exercice:Tracer un montagne de hauteur h, si h=5 on a:
    Code:
        *
       * *
      *   *
     *     *
    *       *
    A ecrire en C.
    J'ai essayé, mais je n'ai pas tout, je bloque , j'ai fait:

    Code:
    for(i=h-1; i>=0; i--) {
        for(j=h-1; j>=1; j--) {
    		
    
    
          affiche("p");
    
        }
        
        h--;
       affiche *;
    
        
    		
        
        nouvelle ligne;



    J'ai mis un p au lieu d'un espace, pour que ce soit plus facile à lire.

    Comme cela, je n'obtiens que la partie gauche de la montagne.J'ai essayé d'autres chose, mon meilleur resultat est qu'apres l'etoile *, il affiche 7 espace, puis 5, puis 3...
    Mais moi je veux rien, puis1 espaces, puis 3, puis 5 , puis 7

    Merci de tout aide qui serai tres tres bienvenue.

    -----
    Dernière modification par JPL ; 03/11/2010 à 16h23. Motif: Ajout de la balise Code

  2. #2
    piwi

    Re : Petit programme en C.

    Il faudrait sans doute afficher votre code complet parce que là, on ne comprend pas bien ce que vous avez fait exactement.

    Cordialement,
    piwi
    Je sers la science et c'est ma joie.... Il parait.

  3. #3
    invitebf26947a

    Re : Petit programme en C.

    En relisant le message je m'apercois que le dessin passe mal.
    Ca donne:
    ligne 1: 4 espaces+1 *

    ligne2: 3 espaces+ 1 *+ 1 espace+ 1 *

    ligne 3: 2 espaces+ 1 * +3 espaces +1 *

    ligne 4: 1 espace+ 1 * +5 espaces+ 1 *

    ligne 5: 0espaces + 1 * +7 espace+ 1*.

    Desolé, et merci beaucoup.

  4. #4
    invitebf26947a

    Re : Petit programme en C.

    OK. Meric pour cette reponse rapide.
    Code:
    include <cini.h>
    
    int main() {
      int h, i, j;
      CINI_print_string("Veuillez saisir un entier: ");
      h=CINI_read_int();
    
      for(i=h-1; i>=0; i--) {
        for(j=h-1; j>=1; j--) {
    		
    
    
          CINI_print_string("p");
    
        }
        
        h--;
        CINI_print_string("*");
    
        
    		
        
        CINI_newline();
    }
      
    
    
    
      return 0;
    }
    CINI_newline();= nouvelle ligne
    CINI_print_string("")=printf
    CINI_read_int()=lis ce qui as été saisi.

    Merci
    Dernière modification par JPL ; 03/11/2010 à 16h24. Motif: Ajout de la balise Code

  5. A voir en vidéo sur Futura
  6. #5
    invite2d7144a7

    Re : Petit programme en C.

    Bonjour,

    Retour aux sources : papier+crayon.

    Tu dessines ta montagne, et tu regardes "à la main" comment doivent évoluer les variables permmettant de faire cette figure.

    Pour ton code, il faut soigner la présentation. Entre autres, tant de lignes vides gènent la lisibilité.

    Sur le forum, il faut encadrer le code par les balises [*code] et [*/code], sans les * qui ne sont là que pour les invalider.

    Je trouve curieux qu'on vous fasse utiliser une bibliothèque permettant de gérer les entrées/sorties, vu que c'est assez souvent qu'on commence par là.

  7. #6
    invitebf26947a

    Re : Petit programme en C.

    Ok.

    Désolé pour la présentation.

    j'ai essayé comme tu l'a dis, mais j'arrive à rien

  8. #7
    Jack
    Modérateur

    Re : Petit programme en C.

    Désolé pour la présentation.
    Utilise la balise code (le petit # dans la barre d'outil de l'éditeur).

    A+

  9. #8
    piwi

    Re : Petit programme en C.

    Pour que les lecteurs puissent s'y retrouver voici le schéma:

    1 *****************
    2 *****************
    3 *****************
    4 *****************
    5 *********

    Je ne connais pas la bibliothèque cini, du coup je ne sais pas trop comment cela fonctionne et si il y a une erreur à ce niveau. En revanche, j'aurais tendance à initialiser au moins les variables i et j.
    Je sers la science et c'est ma joie.... Il parait.

  10. #9
    Jack
    Modérateur

    Re : Petit programme en C.

    A mon avis, il faut gérer la ligne 1 comme un cas particulier, sinon l'algo doit déterminer le nombre d'espaces avant et après la 1ère étoile en fonction du numéro de la ligne, ce qui ne doit pas trop poser de problème.

    Le tout doit tourner dans une boucle itérant sur les lignes.

    A+

  11. #10
    invite2d7144a7

    Re : Petit programme en C.

    Bonjour,
    Citation Envoyé par deyni Voir le message
    j'ai essayé comme tu l'a dis, mais j'arrive à rien
    Si tu le fais correctement, en réfléchissant à ce que tu fais, la solution devrait apparaître facilement.

    En fonction du nombre de ligne demandées :
    - 1ère ligne : combien d'espaces avant l'étoile ?
    - les autres : désormais, combien d'espaces avant l'étoile, puis combien d'espaces avant la 2ème étoile.

    J'en ai déjà trop dit, alors à ton tour de bosser.

  12. #11
    invitebf26947a

    Re : Petit programme en C.

    J'ai compris ça:
    1ere ligne 4 espaces ensuite une etoile.

    le reste c'est h-2 espace puis une etoile ouis 2*h-9(2eme ligne); ensuite 2*h-7...2*h-3

    Mais j'y arrive pas, j'ai essayé pendant plus de 2 heures mais sans succes!!!
    Comment on fait

  13. #12
    polo974

    Re : Petit programme en C.

    comme ça, en passant, dans ton message 3, il est bien montré que:
    la première ligne est spéciale (une seule série de de blanc et une seule étoile)
    les lignes suivantes, il faut 2 séries de blancs suivies chacune d'une étoile hors ton code n'imprime que la première série (et encore, j'ai pas vérifié les indices...

    allez en python (en remplaçant le blanc par un point) :
    Code:
    def pr(n):
    	a=n-1
    	print '.'*a+'*'
    	a=a-1
    	b=1
    	while a>=0:
    		print '.'*a+'*'+'.'*b+'*'
    		a=a-1
    		b=b+2
     
    pr(5)
    ....*
    ...*.*
    ..*...*
    .*.....*
    *.......*
    
    pr(10)
    .........*
    ........*.*
    .......*...*
    ......*.....*
    .....*.......*
    ....*.........*
    ...*...........*
    ..*.............*
    .*...............*
    *.................*
    Dernière modification par polo974 ; 04/11/2010 à 12h42.
    Jusqu'ici tout va bien...

  14. #13
    Jack
    Modérateur

    Re : Petit programme en C.

    1ere ligne 4 espaces ensuite une etoile.
    Il faut exprimer le nombre d'espaces en fonction du numéro de la ligne.

    le reste c'est h-2 espace puis une etoile ouis 2*h-9(2eme ligne); ensuite 2*h-7...2*h-3
    ????
    Il faut faire une boucle dont chaque itération correspondra à une ligne. Si i est le numéro de ligne, il y aura donc, à partir de la 2ème ligne, nombre_total_de_ligne - i espaces, puis une étoile, puis ... A toi de continuer.

    A+

  15. #14
    invitebf26947a

    Re : Petit programme en C.

    Rebonjour et merci beaucoup de toutes vos reponses.

    Merci beaucoup polo pour avoir pris le temps d'ecrire le programme

    Toutes vos reponses m'aident beaucoup, mais j'ai encore quelques problemes:
    apres l'étoile j'ai 7 espace puis puis 5... Au lieu de l'inverse.

    Et ça veut dire quoi en python :
    print '.'*a+'*'+'.'*b+'*'

    Merci.

  16. #15
    polo974

    Re : Petit programme en C.

    Citation Envoyé par deyni Voir le message
    Rebonjour et merci beaucoup de toutes vos reponses.
    ...
    Et ça veut dire quoi en python :
    print '.'*a+'*'+'.'*b+'*'

    Merci.
    imprimer a fois ' ' suivi d'un '*' suivi de b fois '.' suivi de '*'
    donc le a fois '.' et le b fois '.' sont à faire dans des boucles si tu ne peux les faire que caractère par caractère

    mais je crois qu'en c++, on a aussi le droit de faire "blabla"+"coucou" (c'est vieux, ça...)sinon, en C pur et dur, il y a toujours memset() pour remplir une zone mémoire...
    Jusqu'ici tout va bien...

  17. #16
    invite2d7144a7

    Re : Petit programme en C.

    Bonjour,
    Citation Envoyé par deyni Voir le message
    Toutes vos reponses m'aident beaucoup, mais j'ai encore quelques problemes:
    apres l'étoile j'ai 7 espace puis puis 5... Au lieu de l'inverse.
    Et à ton avis, d'où peut venir le problème ?

    Moi, quand j'ai 2 variables qui devraient valoir 6 et 15, et que j'obtiens 15 et 6, je vais vérifier que je les ai bien utilisées comme prévu.

  18. #17
    invitebf26947a

    Re : Petit programme en C.

    Merci beaucoup de m'avoir aidé, ca m'a fait beaucoup plaisir...
    Mais laissez tombez j'y arrive pas.

    Merci de m'avoir aidé.

  19. #18
    Jack
    Modérateur

    Re : Petit programme en C.

    apres l'étoile j'ai 7 espace puis puis 5... Au lieu de l'inverse.
    la relation est assez simple pourtant:

    Pour une ligne i, la 1ère étoile est suivie de 2*i - 1 espaces.

    Pour afficher les espaces, il suffit de faire une boucle dans laquelle on affiche un espace à la fois.

    A+

Discussions similaires

  1. Petit programme en C
    Par invite70eda27f dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 11/06/2008, 11h53
  2. Petit programme
    Par gwendoline dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 30/10/2007, 20h12
  3. Petit programme sous Maple
    Par invitea87a1dd7 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 03/06/2007, 16h07
  4. aide petit programme PIC16F877
    Par invite3842cc13 dans le forum Électronique
    Réponses: 12
    Dernier message: 26/04/2006, 21h18