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

avec Java Discussion :

"Suites" d'étoiles sous Java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 28
    Par défaut "Suites" d'étoiles sous Java
    Bonjour, bonsoir...

    On a le dessin suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    __*___*___*
    _*_*_*_*_*_
    *___*___*__
    Les "_" sont en réalité des espaces, mais j'ai mis "_" sinon je n'y me retrouvais plus !

    Comme vous pouvez le voir, le dessin comprend 11 colonnes.

    On doit coder ce même dessin avec 100 colonnes (je n'ai malheureusement pas l'énoncé exact sous mes yeux, mais en gros c'est ça). Vous suivez ? Je ne sais pas si je suis très claire

    Ce que j'ai pu remarquer, c'est que la deuxième ligne comprendra donc une espace, puis une étoile, ce 100 fois. Donc 50 espaces/50 étoiles !
    La première ligne comporte 2 espaces, puis une étoile, puis 3 espaces, 1 étoile, 3 espaces, etc.
    La dernière ligne comporte 1 étoile, 3 espaces, 1 étoile, etc.

    Comment faire pour coder ça ?
    Evidemment je dois utiliser les boucles, notamment for (je suppose).

    Je m'essaye... On va appeler i le nombre de colonnes (donc allant de 1 à 100), et j le nombre de lignes (donc allant de 1 à 3).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (int i=1; i<=98; i++) {
    for (int j=1; j<=3; j++) {
    Je ne vois vraiment pas comment je pourrais faire...
    Pouvez-vous me donner des indications ?

    Je vous remercie d'avance.
    PS : Je suis débutante, je n'ai jamais fait de programmation.

    Bonne soirée.

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    Tu n'aurais pas l'énoncé par hasard ?

    Parce que de ce que je vois, on dirait bien que sa représente une fonction sinusoïdale affiché en console

    Ducoup avant de m'embarquer dans des problèmes de math, j'aimerais être sûr que t'a pas une indication dans ton énoncé qui pourrait faire en sorte de résoudre ça plus facilement ^^

    Cdt.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 28
    Par défaut
    Coucou !

    Non malheureusement je ne retrouve absolument pas l'énoncé D:

    Mais oui, je croie bien que c'est une fonction sinusoïdale. En tous cas on voit bien que le dessin est "régulier".

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Comme c'est la console, tu ne peux pas commencer à écrire sur une ligne, puis sur une autre, puis revenir à la première etc. Quand tu passes à une nouvelle ligne tu ne peux plus toucher aux précédentes.

    Donc il faut,
    - d'abord écrire la première ligne
    - ensuite écrire la deuxième ligne
    - enfin écrire la troisième ligne.

    Je ne pense pas que tu doives faire des "boucles dans des boucles". Il faut une boucle, seule, pour la première ligne. Une boucle, seule, pour la deuxième ligne. Une boucle, seule, pour la troisième ligne.

    Faire une boucle de 3 pour les 3 lignes obligerait à chercher une formule mathématique. C'est faisable, mais inutilement compliqué tant que c'est pas demandé.
    (Et si tu le fais quand même, la boucle de 3 doit contenir la boucle de 100. Puisqu'il faut d'abord écrire la ligne 1, puis la ligne 2, puis la ligne 3)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Personnellement, je réaliserai une fonction qui prend une position (x, y) d'un point d'une fonction (double) et le transforme en une étoile dans l'affichage désiré (Ici , 3 lignes 11 colonnes).

    Le plus simple serai d'avoir une représentation matriciel de l'affichage final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char[][] graphique = new char[3][11]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public abstract placePointSurGraphique(double x, double y, char[][] graphique);
    Et donc pour l'ensemble de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(double x = 0; x <11;i++){
        double y = Math.cos(Math.PI*x);
        placePointSurGraphique(x,y, graphique);
    }
    Je détail pas l'affiche des lignes ou la fonction qui transforme une coordonnée en une étoile...

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 097
    Par défaut
    Citation Envoyé par Nico02 Voir le message
    Parce que de ce que je vois, on dirait bien que sa représente une fonction sinusoïdale affiché en console
    Moi du coup je vois une fonction "triangle" et pas "sin" Mais vu la résolution, c'est rien...


    Sinon pour l'inspiration ... (même si comme thelvin le souligne ca ne te semblait pas demander ainsi)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for (int y = -1 ; y <= 1; y++)
    		{
    			for (int x = 0 ; x <= 100; x++)
    			{
    				double c = Math.cos(Math.PI*x/2);
    			    if (Math.abs(c-y)<0.01)
    					System.err.print("*");
    				else
    					System.err.print("_");
    			}
    			System.err.println("");
    		}
    qui donne un beau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    __*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*__
    _*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_
    *___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*___*
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 097
    Par défaut
    Et comme c'est vendredi, une version améliorée pour changer aussi la hauteur.

    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
    21
    int fact = 1; // Taille en hauteur (modifie aussi la frequence)
     
    		for ( fact = 1; fact < 8; fact++)
    		{
    			System.err.println("FACTEUR = "+fact);
    			for (int y = -1*fact ; y <= 1*fact; y++)
    			{
    				for (int x = 0 ; x <= 100; x++)
    				{
    					double c = fact*Math.cos(Math.PI*(x)/Math.pow(2, fact));
     
    				    if (Math.abs(c-y)<0.5)
    						System.err.print("*");
    					else
    						System.err.print(".");
    				}
    				System.err.println("");
    			}
    			System.err.println("");
    			System.err.println("");
    		}
    qui doit donner un truc (mais y'a une petite erreur quelque part...

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    FACTEUR = 1
    ..*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*..
    .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.
    *...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*
     
     
    FACTEUR = 2
    ....*.......*.......*.......*.......*.......*.......*.......*.......*.......*.......*.......*.......*
    ...*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.
    ..*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*..
    .*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*.....*.*...
    *.......*.......*.......*.......*.......*.......*.......*.......*.......*.......*.......*.......*....
     
     
    FACTEUR = 3
    .......***.............***.............***.............***.............***.............***...........
    ......*...*...........*...*...........*...*...........*...*...........*...*...........*...*..........
    .....*.....*.........*.....*.........*.....*.........*.....*.........*.....*.........*.....*.........
    ....*.......*.......*.......*.......*.......*.......*.......*.......*.......*.......*.......*.......*
    ...*.........*.....*.........*.....*.........*.....*.........*.....*.........*.....*.........*.....*.
    ..*...........*...*...........*...*...........*...*...........*...*...........*...*...........*...*..
    **.............***.............***.............***.............***.............***.............***...
     
     
    FACTEUR = 4
    ..............*****...........................*****...........................*****..................
    ............**.....**.......................**.....**.......................**.....**................
    ..........**.........**...................**.........**...................**.........**..............
    .........*.............*.................*.............*.................*.............*.............
    ........*...............*...............*...............*...............*...............*............
    .......*.................*.............*.................*.............*.................*...........
    .....**...................**.........**...................**.........**...................**.........
    ...**.......................**.....**.......................**.....**.......................**.....**
    ***...........................*****...........................*****...........................*****..
     
     
    FACTEUR = 5
    ............................*********.......................................................*********
    ........................****.........****...............................................****.........
    ......................**.................**...........................................**.............
    ....................**.....................**.......................................**...............
    ..................**.........................**...................................**.................
    ...............***.............................***.............................***...................
    .............**...................................**.........................**......................
    ...........**.......................................**.....................**........................
    .........**...........................................**.................**..........................
    .....****...............................................****.........****............................
    *****.......................................................*********................................
     
     
    FACTEUR = 6
    ........................................................*****************............................
    ..................................................******.................******......................
    .............................................*****.............................*****.................
    .........................................****.......................................****.............
    ......................................***...............................................***..........
    ..................................****.....................................................****......
    ...............................***.............................................................***...
    ...........................****...................................................................***
    ........................***..........................................................................
    ....................****.............................................................................
    ...............*****.................................................................................
    .........******......................................................................................
    *********............................................................................................
     
     
    FACTEUR = 7
    .....................................................................................................
    .....................................................................................................
    .............................................................................................********
    ......................................................................................*******........
    ...............................................................................*******...............
    .........................................................................******......................
    ...................................................................******............................
    ..............................................................*****..................................
    ........................................................******.......................................
    ..................................................******.............................................
    ...........................................*******...................................................
    ....................................*******..........................................................
    ............................********.................................................................
    ................************.........................................................................
    ****************.....................................................................................
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    @wax78: On est pas sensé attendre que la personne ai un minimum compris comment résoudre son problème avant de lui donnée la solution super magique ?
    En particulier quand celle-ci nous précise qu'elle "juste" besoin d'indication et qu'elle débute en programmation :
    Je ne vois vraiment pas comment je pourrais faire...
    Pouvez-vous me donner des indications ?

    Je vous remercie d'avance.
    PS : Je suis débutante, je n'ai jamais fait de programmation.
    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.err.println("FACTEUR = "+fact);
    Pourquoi tu utilise à sortie d'erreur pour affiché une restitution classique ?
    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("FACTEUR = "+fact);
    c'est pas beaucoup plus cher...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if (Math.abs(c-y)<0.5)
    	System.err.print("*");
    else
    	System.err.print(".");
    Sachant qu'Ennydra début en programmation, on ne devrait pas utiliser les if else sans {/* Le code de ma condition */}Car seul l'instruction suivante est prise le bloc if, ce qui mène à beaucoup d'erreur ou de confusion pour les débutants.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // code démonstration des if / else sans {}
    if(false)
        System.out.println("Je ne serai pas affiché ! Car présent dans le bloc if !");
        System.out.println("Même avec l'intention, je serai affiché ! Car je ne suis pas dans le bloc if !");
    Cordialement,
    Patrick Kolodziejczyk.

    PS: Sens la fin de semaine !
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  9. #9
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 097
    Par défaut
    Citation Envoyé par kolodz Voir le message
    @wax78: On est pas sensé attendre que la personne ai un minimum compris comment résoudre son problème avant de lui donnée la solution super magique ?
    ça dépend.

    Parfois le lecteur va rendre le truc tel quel a son prof qui lui posera des question et il se fera "petter"
    OU
    Il va chercher a comprendre, quitte a réécrire un petit bout et sera à même de montrer et d'expliquer le pourquoi du comment et gagnera des points.

    Après à chacun de choisir... Il n'est pas obligé de prendre le bout de code magique

    Citation Envoyé par kolodz Voir le message
    Pourquoi tu utilise à sortie d'erreur pour affiché une restitution classique ?
    Parce que j'aime bien, et qu'en plus j'adore le rouge... :p (et que je veux garder l'ordre d'affichage, même si dans ce cas ci c'est inutile puisqu'il n'y a qu'un thread qui ecrit dans la console).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

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