Partage
  • Partager sur Facebook
  • Partager sur Twitter

inverser mon code en language C

3 décembre 2020 à 13:05:36

White Crow a écrit:

Sinon il y a la version libc classique

C'était le cas de la première solution, avec passage en revue de toutes les fonctions d'écriture à l'écran !

  • Partager sur Facebook
  • Partager sur Twitter
3 décembre 2020 à 13:14:10

rouloude a écrit:

White Crow a écrit:

Sinon il y a la version libc classique

C'était le cas de la première solution, avec passage en revue de toutes les fonctions d'écriture à l'écran !


rholala ! alzeimher guette ! désolé !!!
  • Partager sur Facebook
  • Partager sur Twitter
3 décembre 2020 à 13:44:47

michelbillaud a écrit:

Montre ton code en entier qu'on voie en quoi c'est mieux que les autres solutions !

-
Edité par michelbillaud il y a environ 1 heure


Je e dis pas que mon code serait meilleur, mais la conception du programme si, on ne m'ôtera jamais de l'esprit que l'affichage des résultats est une tâche à part de leur obtention.
  • Partager sur Facebook
  • Partager sur Twitter

Le crayon la gomme et le papier sont les meilleurs outils du programmeur !

3 décembre 2020 à 15:43:39

joel76 a écrit:


Je e dis pas que mon code serait meilleur, mais la conception du programme si, on ne m'ôtera jamais de l'esprit que l'affichage des résultats est une tâche à part de leur obtention.


Exactement. Et une bonne conception fait apparaitre que ce qui est attendu du programme, c'est l'affichage d'une certaine suite de caractères.

Pas la construction d'un objet en mémoire qui contiendrait cette suite de caractères pour l'afficher ensuite. La suite de caractères, elle est expédiée au fur et à mesure sur stdout, qui contient un tampon pour la ligne. C'est son job.

-
Edité par michelbillaud 3 décembre 2020 à 16:57:45

  • Partager sur Facebook
  • Partager sur Twitter
3 décembre 2020 à 16:36:02

joel76 a écrit:

si on fait de l'interface graphique, ça change le concept.

Et oui ! avec des si on en fait des choses !



  • Partager sur Facebook
  • Partager sur Twitter
3 décembre 2020 à 17:40:50

michelbillaud a écrit:

Pas la construction d'un objet en mémoire qui contiendrait cette suite de caractères pour l'afficher ensuite. 

-
Edité par michelbillaud il y a 34 minutes


C'est là que nos avis divergent !
  • Partager sur Facebook
  • Partager sur Twitter

Le crayon la gomme et le papier sont les meilleurs outils du programmeur !

3 décembre 2020 à 17:48:33

Et si on demandais l'avis du PO (auteur du sujet) ce qu'elle en pense. Elle a peut-être son mot à dire.
J'aime la solution de joel76 si on passe au cas général.
Mais je suis d'accord avec michelbillaud, on ne demande que d'afficher un sapin à la console, pas plus.
Et si tinapow3 est débutante, pourquoi l'emmerder avec toute sorte de complication?
  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

3 décembre 2020 à 19:36:36

PierrotLeFou a écrit:

Et si tinapow3 est débutante, pourquoi l'emmerder avec toute sorte de complication?


Pour montrer qu'on sait plein de choses. Concours de bites.

A remarquer, dans son code d'origine, il y a déjà l'usage d'une fonction pour la lecture de la hauteur. Mais ça devait faire partie du corrigé d'un exercice précédent (sinon il y aurait eu l'idée de faire une fonction qui répète la question jusqu'à obtenir une réponse acceptable).

Mais bon, le coeur du sujet, c'est savoir faire des boucles avec compteur en marche avant et en marche arrière. Probablement que l'objectif, c'est l'entraînement aux usages idiomatiques de la boucle for

for (int i = 1; i <= n ; i ++) {
   // de 1 à n
}

for (int i = n; i >= 1; i--) {
   // de n à 1
}

Et la question d'origine montrait que la notion de boucle descendante n'était pas encore acquise.

-
Edité par michelbillaud 13 décembre 2020 à 19:04:07

  • Partager sur Facebook
  • Partager sur Twitter
13 décembre 2020 à 18:51:34

Pour être honnête je suis un peu confuse, je n'arrive pas à suivre toutes les conversations 🙈

Mes connaissances sont vraiment encore très limités ! Mais j'essaie de faire mon mieux pour comprendre 😁

@michelbillaud ta piste m'a l'air clair justement je n'arrivais pas à faire le schéma inverse commencer par un seul # et finir par n # et au contraire commencer par n # et finir par un seul #

Bon j'ai l'impression que plus l'on touche du bois l'objectif plus on le perd aussi vite 😂 la 5eme ligne est parfaite la 1ere par contre elle fonction pas comme je le souhaite regarde un peu :

int main(void)
{
    int n;
    do
    {
        n = get_int("Hauteur: ");
 
    }
    while (n < 1 || n > 8);
    
    do
    {
        for (int i = n; i >= 1; i--)
        {
            printf(" ");
        }
 
        for (int i = 1; i <= n ; i ++)
        {
            printf("#");
        } 
        printf("\n");
    }
while ( n-- ); 
 
}

Et ça me donne :

Hauteur: 4
    ####
   ###
  ##
 #


Soit de n " " à un seul " " et de n # à un seul # 🥺

Alors que je souhaite commencer par n " " à un seul " " et ensuite commencer par un seul #  et continuer jusqu'à n #

@PierrotLeFou haha oui merci, la conversation n'avais pas trop de sens pour moi (littéralement) après le forum est aussi la pour les gens qui souhaite aller plus loin et justement débattre c'est cool ça veut dire le sujet vous anime 🥳

-
Edité par tinapow3 13 décembre 2020 à 19:35:30

  • Partager sur Facebook
  • Partager sur Twitter
14 décembre 2020 à 11:29:26

 Il y a un problème dans ce que tu cherches à coder, robun te l'a indiqué

robun a écrit:

Je pense que tu ne devrais pas utiliser comme indice de boucle, dans le 'while', la variable 'n'. Cette variable représente la taille de la pyramide, elle ne devrait pas varier. En tout cas, la voir comme variable de boucle m'a embrouillé : je ne sais pas comment inverser le sens de parcours avec ce 'while'. J'ai l'impression qu'on mélange plusieurs choses.

 Tu as répondu cela

tinapow3 a écrit:

Merci beaucoup pour vos réponses edgarjacobs et robun !

Ce que j'aimerais c'est de respecter la structure de mon code et changer que le fond. Parce que au fond ce que je veux c'est garder mes variables et changer la disposition du programme.

Et dans le flot des propositions, la partie importante s'est perdue. Je l'ai mis en gars dans le texte de robun.

Quand on trace les diverses lignes, on voit bien qu'au moment de la dernière ligne on doit utiliser la valeur de n. Mais ton code la décrémente petit à petit et donc on a perdu sa valeur initiale.
Ton code n'utilise que 2 variables i et n. La solution est simple mais il faut envisager 3 variables:
- n qui ne changera jamais pendant la boucle
- par exemple j qui correspond au tracé de chacune des lignes
- par exemple i qui correspond à une boucle interne qui va tracer les j étoiles de la ligne

  • Partager sur Facebook
  • Partager sur Twitter

En recherche d'emploi.

14 décembre 2020 à 11:54:58

Je voudrais pas dire, mais ça fait 4 mois qu'on est dessus.

Donc peut être qu'il faudrait se décider à prendre un papier, un crayon, et réfléchir sérieusement 5 minutes pour régler le problème.

Ou décider de faire autre chose. Il y a plein d'autres choses plus intéressantes dans la vie (qui est beaucoup trop courte) que de tenter mollement pendant 4 mois d'écrire du code C pour dessiner un triangle avec des caractères.

-
Edité par michelbillaud 14 décembre 2020 à 11:58:07

  • Partager sur Facebook
  • Partager sur Twitter
14 décembre 2020 à 17:43:31

Je pense que tinapow3, ni personne d'autre d'ailleurs, n'a passé 4 mois à plein temps sur ce sujet.
L'exercice en soi est stupide, c'est vrai.
Mais la compréhension des boucles ascendantes ou descendantes et les variables associées ne l'est pas.
  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

14 décembre 2020 à 17:52:56

Ce qui serait bien, ça serait d'y passer 10 minutes à plein temps pour régler le problème.

Quand même pas besoin d'être Einstein pour faire la différence entre 12345 et 54321.

L'exercice en question est simple, et formateur sur ce point. Mais c'est inquiétant de ne pas arriver à le dépasser en quelques jours.

Je ne mets pas en doute les capacités mentales de la personne : au minimum il y a un problème de méthodologique de l'apprentissage. Pour apprendre le piano, on ne fait pas le do le lundi, le ré le mardi, et le mi quinze jours après.

-
Edité par michelbillaud 14 décembre 2020 à 18:05:50

  • Partager sur Facebook
  • Partager sur Twitter