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 :

ecrire un Z en *


Sujet :

avec Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut ecrire un Z en *
    Bonjour,

    Je suis débutant et je voudais savoir comment on fait pour dessiner un Z en *
    Sachant qu'il faut tenir compte du nombre de ligne...

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, l'écrire où? sur une interface swing, JSF, dans un fichier?

  3. #3
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Je pense que c'est une sortie console. Un classique des exercices d'algo.

  4. #4
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    a mon avis c'est du ascii art.

    le plus simple est de definit soit meme la matrice des caracteres a afficher.
    La generation automatique en fonction un width/height dynamique est plus chaude.
    Mais sur le principe, il faut diviser le nombre de colonnes par le nombre de lignes et tu aura le nombre de caracteres par ligne a ecrire (en decalage bien sur) pour afficher le "/" pour les barres horizontale, je te laisse faire c'est simple

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut
    oui c'est un exercice qui est dans mon livre mais je ne trouve pas la solution.
    Je suis un débutant qui essaye d'apprendre rapidement.

    merci du conseil pour les colonnes je vais essayer.

    Il faut obtenir cela par exemple:

    ****
    *
    ****

  6. #6
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Sur quoi tu bloque ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut
    Et bien je sais l'écrire en dur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Z {
     
    	public static void main (String[]args){
    		System.out.println("*****");
    		System.out.println("   * ");
    		System.out.println("  *  ");
    		System.out.println(" *   ");
    		System.out.println("*****");
    		ecrireZ("*", 10);
    mais après pour utiliser avec la classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static void ecrireZ(String c, int taille){
    		String s =                 ;
    	        return s
    	}
    j'ai du mal je vois pas le fonctionnement.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    .....

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut
    Désolé 19cmos83

    je débute faut toujours une première fois !!

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    non non, pas du tout, je t'avais ecris ca au départ ...


    Voila, si tu veux une solution cassecou.
    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
    import java.io.*;
    public class test{
     
    	//Classe Interne qui va te permettre de pouvoir saisir un truc dans ta console
    	public class ReadLine{
     
    			public String read(){
    			  BufferedReader buf = new BufferedReader( new InputStreamReader( System.in ) );
    				String str = null;
    				System.out.print("Tapez une lettre : ");
    				try{
    					str = buf.readLine(); //Pour une ligne 
    				}catch (IOException ex){
    				 	ex.printStackTrace();
    				}
    			return str;
    			}
    	}	
     
     
    	public static void main(String args[]){
     
    			test objTest = new test();		
    			ReadLine lecteur = objTest. new ReadLine();
    			String str = lecteur.read();
    			if(str.equals("z")){
    				str = "*";
    				System.out.print("Lettre Tapez : " + str);
    			}
    			else
    				System.out.print("Lettre Tapez : " + str);
    	}
    }
    J'avais mal compris le problème.
    Et nous avons tous commencé par les bases et les petits exos consoles, pas de honte à avoir.

    @+.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut
    Merci !!

    Au moins j'ai une reponse pour comprendre comment faire

    c'est surper sympa de ta part

    merci !!

    Sinon vous me conseillé quoi pour apprendre le plus vite possible sachant que j'ai 8h par jour à consacrer à Java !

    Je dois faire tous les tutoriaux ??
    Combien d'heure avant de se considérer comme niveau moyen ?

  12. #12
    Membre éprouvé Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Par défaut
    Salut

    et qui ne passe pas par ce stade la première fois, ils nous cassent la tête avec des trucs pareils mais je trouve amusant
    dans ce genre d'exercice il faut utiliser des tableau et regarder bien la relation qui existe entre les indices. (avec un petit dessin sur papier)

    Voici une solution :

    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
     
    public class Z
    {
    	public static void ecrire(char s , int taille)
    	{
     
    		for (int i = 0 ; i < taille ; i++)
    		{
    			for (int j = 0 ; j < taille ; j++)
    			{
    				if (( i == 0) || (i == taille -1))
    				{
    					System.out.print(s);
    				}
    				else
    				{
    					if((i+j) == taille -1)
    					{
    						System.out.print(s);
    					}
     
    					else
    					{
    						System.out.print(" ");
    					}
    				}
     
    			}
    			System.out.println();
    		}
    	}
    	public static void main(String[] args)
    	{
    		ecrire('*',10);
    		System.out.println();
    	}
    }
    Bon apprentissage

  13. #13
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    Combien d'heure avant de se considérer comme niveau moyen ?

    Si vous cherchez à maîtriser des techniques ou a influencer des personnes, votre but est limité. Mais si votre but est l'univers, alors il est sans limite.
    La voie du guerrier:Iwata Ikkusai

    « L’objectif de l’entraînement est de réduire la lenteur, de renforcer le corps et de polir l’esprit. »
    La voie du guerrier:Ueshiba Morihei

    « Si tu t'entraînes 100 jours alors tu ne seras sur la voie du Disciple, mais si tu t'entraînes 1000 jours alors, tu seras qu'à ce moment là, devant le pied de la porte des Maîtres, et si tu t'entraînes 10.000 jours alors tu ne seras qu'un Disciple des Maîtres ... . »
    La voie du guerrier:inconnu




    pour java, 1 an c'est bon.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut
    Merci pour vos réponse

  15. #15
    Membre éprouvé Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Par défaut
    Salut

    C'est toi qui va dire au système où mettre les *
    Voici une explication de mon code

    imagine tu veux remplir un tableau de taille i par j ( i lignes et j colonnes) alors tu fais un dessin sur une feuille et tu y mes le Z en étoiles bien sur, tu vas remarquer que :

    la première ligne va contenir des étoiles. (1)
    la dernière ligne aussi. (2)
    la diagonale secondaire (/) aussi (3)

    et de là tu dégages une relation entre i et j dans et tu fais une boucle.

    prenons un exemple de tableau 5 par 5

    si on écrit

    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
    for (int i = 0 ; i < 5 ; i++)
    {
         for (int j = 0 ; j < 5 ; j++)
         {
             System.out.print('*');
         }
         System.out.print();  // sauter une ligne à chaque changement de i
    }
    
    l'affichage va être (j'ai mis les couleur pour voir les étoiles en Z)
    
    *****  i=0  (j = 0 , 1, 2, 3, 4)
    *****  i = 1 (       ,,           )
    *****  etc..
    *****
    *****
    
    mais dans cette notre exemple on veut éliminer les étoiles en noir
    Les deux premières sont faciles
    (1) ===> dans ce cas on a i=0
    (2) ====> i = 4

    C'est pour ça dans la boucle on met

    Si i = 0 ou i = 4 dessine *

    reste à penser comment faire pour (3)
    on voit que les étoiles ne se dessinent que si

    (i,j) = (1,3) ici on remarque que (i+j) = (taille -1) = 5-1 = 4
    (i,j) = (2,2) ,, ,,
    (i,j) = (3,1) ,, ,,

    donc on continue
    sinon
    si (i+j) = (taille -1) dessine *
    sinon dessine un espace


    Bon continuation

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut
    Merci pour ton explication et pout le temps que tu passe pour m'expliquer
    J'ai bien compris grâce à toi.
    En avant pour la suite

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut
    Je vous embete à nouveau.

    Le code marche nikel mais il y a un petit défaut que je voulais régler mais je suis débutant hé ouai .. ça craint..

    en gros si je mets un seul caractère cela va afficher mon Z mais si je mets deux caractères ou même trois... et bien mon Z n'est plus un Z.

    Je vois ou est le problème, c'est au niveau de l'espace " " que l'on place dans les lignes qui fait la diagonale de Z.

    Donc pour revenir à mon soucis après ce long discours.

    Comment dois-je faire pour lui dire "si je met un caractère tu me met un espace et si je met 5 caractère tu me met 5 espaces" ????

    merci d'avance

  18. #18
    Membre éprouvé Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Par défaut
    salut

    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
    public class Z
    {
    	public static void ecrire(String s , int taille)
    	{
     
    		for (int i = 0 ; i < taille ; i++)
    		{
    			for (int j = 0 ; j < taille ; j++)
    			{
    				if (( i == 0) || (i == taille -1))
    				{
    					System.out.print(s);
    				}
    				else
    				{
    					if((i+j) == taille -1)
    					{
    						System.out.print(s);
    					}
     
    					else
    					{
    						for (int k = 0 ; k < s.length() ; k++)
    						System.out.print(" ");
    					}
    				}
     
    			}
    			System.out.println();
    		}
    	}
    	public static void main(String[] args)
    	{
    		ecrire("****",10);
    		System.out.println();
    	}
    }
    Maintenant essaye de faire un N, U ...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut
    d'accord merci du conseil
    ça sera un bon entrainement
    sans regarder le code du Z
    je ferais le N
    et le U
    et aussi le T

    Merci bobmidou

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Par défaut
    Pour le N
    c'est pareil que le Z
    Sauf qu'on affiche * quand j=0 et quand j= taille -1 pour avoir les barres de gauche et droite du N

    Pour la diagonale il faut afficher * quand i=j


    Pur U
    c'est comme N sauf qu'au lieu de faire la diagonale
    on dit ( i=taille-1) on ecrit *


    Voila ça marche en plus merci pour les idées d'exo

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [LG]Ecrire le contenu d'un fichier dans un autre
    Par lucke dans le forum Langage
    Réponses: 10
    Dernier message: 26/04/2003, 21h48
  2. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 16h44
  3. [VB6] Ecrire/Modifier/Effacer ds un fichier text-4 Chs/Lg
    Par Jonathan_Korvitch dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 24/12/2002, 19h54
  4. [VB6] Ecrire à un endroit précis d'un richtextbox
    Par STG dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/11/2002, 15h35
  5. ecrire son OS (assembleur ??)
    Par Anonymous dans le forum Programmation d'OS
    Réponses: 9
    Dernier message: 25/11/2002, 20h25

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