CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

java exercice sapin boucle imbriqué

SetsunaFSeiei88
SetsunaFSeiei88
Niveau 2
08 août 2020 à 14:14:30

Bonjour,

-Exercice construire un sapin avec le caractère '*' en superposant un nombre de triangle défini par l'utilisateur.

-Je pensais appliquer une structure du type:

".for(nbTriangle){
.for(ligne){
.for(decalage){
}
.for(espace){
}
.for(char){
}
}
}"

-Puis en faisant des testent sur les boucles, je trouve une solution dont je ne m'attendais pas:

"public class Tp4Exo2Q1SapinTropBeauLeRetour{
public static void main(String[]args){
int nbTriangle;
System.out.println("Combien voulez-vous d'étages à votre Sapin qui sera très beau?");
nbTriangle=Terminal.lireInt();
for(int l=0;l<nbTriangle;l++){
int ligne=3+l;
for(int i=0;i<ligne;i++){
int etoile=2*i+1;
int dec=nbTriangle-i;
for(int j=0;j<=dec;j++){ //nb espace pour le espace(sans décalage :|,mais avec)
System.out.print(" ");
}
for(int k=0;k<etoile;k++){
System.out.print("*");
}
System.out.println();
}
}"

Si quelqu'un pourrait m'expliquer comment le décalage est pris en compte dans ce programme?

-Merci d'avoir lu ce roman et désolé pour la nomenclature non respecté.

_S0uL
_S0uL
Niveau 9
08 août 2020 à 14:59:12

Je ne suis pas sûr de bien comprendre, tu as écris du code par hasard et tu veux qu'on te l'explique, ou tu as copié ça sur le net ?

C'est cette partie qui fait le décalage (le commentaire est pas clair mais bon) :

int dec=nbTriangle-i;
for(int j=0;j<=dec;j++){ //nb espace pour le espace(sans décalage :|,mais avec)
  System.out.print(" ");
}

Le mieux si tu veux bien comprendre ce que ça fait c'est de prendre un papier et un stylo et de dérouler exactement l'algo à la main. Tu n'as pas besoins de faire 50 tours de boucles pour te rendre compte du fonctionnement et ça t'aidera vraiment à assimiler l'algo.

PS : Utilise les balise <code></code> à l'avenir pour que ton code soit lisible (tu peux aussi surligner ton code et cliquer sur le bouton < > au dessus de l'éditeur), et n'oublie pas l'indentation :)

Message édité le 08 août 2020 à 15:00:52 par _S0uL
SetsunaFSeiei88
SetsunaFSeiei88
Niveau 2
08 août 2020 à 16:04:57

Merci _SouL,

Oui effectivement mon commentaire n'est pas clair, mais pour moi la variable "dec" est une mauvaise appellation que j'aurai du appeler "espace". car elle devrait permettre de décaler le caractère "*" pour que le triangle soit bien centrer.

de plus la fonction <dec=nbTriangle-i> ,si nbTriangle=3 normalement dec ne devrait pas pouvoir être superieure à 3, alors qu'il en affiche bien plus d'espaces.

J'ai trouvé cette solution en faisant le même exercice avec des carrés puis j'ai rajouté un décalage après remplacé par des triangles et en bidouillant j'ai trouvé une solution qui me fruste car quand je l'applique avec un tableau je retrouve pas le résultat que j'ai en appliquant ce programme :(

En tout cas, merci d'avoir pris le temps de lire et de me répondre je vais essayer reprendre étape par étape plus calmement.

SetsunaFSeiei88
SetsunaFSeiei88
Niveau 2
08 août 2020 à 16:13:55

ps: si tu veux l'énnoncé de l'exercice "http://deptinfo.cnam.fr/Enseignement/CycleA/APA/nfa031/newdocs/exercices-programmer-1.pdf"

SetsunaFSeiei88
SetsunaFSeiei88
Niveau 2
08 août 2020 à 16:15:14

ps biss :) : c'est le dernier.

SetsunaFSeiei88
SetsunaFSeiei88
Niveau 2
08 août 2020 à 18:03:19

finalement j'ai trouvé,

comme j'ai initialisé "j" à "0" j'ai un espace supplémentaire et comme la condition est "<=" je gagne un autre espace.(pour un exercice similaire sur un triangle j'initialisais la boucle à "1" en utilisant la même fonction avec comme condition sans comprendre la borne)

Donc au final avec c'est 2 espaces ça anticipe le décalage.

Merci pour le conseil de faire un tableau pour suivre les instructions

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment