En effet merci.:mouarf: Et pour la question : Pour faire en sorte qu'un caractère soit affichée dans une matrice du type "(" est il obligatoirement nécessaire de passer par le code Ascii ?
Merci.;)
Version imprimable
En effet merci.:mouarf: Et pour la question : Pour faire en sorte qu'un caractère soit affichée dans une matrice du type "(" est il obligatoirement nécessaire de passer par le code Ascii ?
Merci.;)
ben là tu as une matrice d entier tu ne peux pas mettre "(" dedans :? ...
Oui je sais mais il me semble qu'en passant par le code ASCII le caractère ( correspond à un nombre et ca permet ainsi l'affichage non ?
Merci c'est gentil. Je veux par exemple que l'on puisse afficher dans ma matrice un caractère ( à la place d'un 0.:?
ben du coup je pense qu'il faudrait que ta matrice devienne une matrice de chaine de caractères... :
mais on s'éloigne de ce que tu voulais au départ :s :sCode:String [][] mat
C'est juste pour savoir en fait. Une question un chiffre est il considéré comme un caractère ?
un chiffre c'est chiffre...
Code:
1
2 String s = "1 " ; // c est un caractere int i = 1; // un chiffre ...
Donc il est impossible d'afficher un caractère et un chiffre dans une meme matrice ?
ben si ta matrice devien une matrice de String du peux afficher ce que tu veux (chiffre , caractere ) car tt sera considéré comme caractère.
En revanche si tu la garde comme ça ( int[][]mat) ben tu peux afficher que des int désolé
Ah ok donc suffit de changer le int en string... Merci.
Ok merci. Donc je vais le réécrire en changeant et vous montrer ce que ca donne. Par contre je reviens à la boucle tant que faite dans les messages précédents, elle ne marche pas, la matrice n'est initialisée qu'une seule fois.
Je parle de cet algo :
Je ne vois pas pourquoi le tant que ne se déclenche pas et que seulement à la fin la matrice soit affichée. Merci d'avance.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public static void remplacement(int[][]mat,int n,int m, int val){ int cpt1; cpt1=0; while(cpt1!=nbre){ if (mat[n][m]==0){ mat[n][m]=val; } else{ System.out.println("Error"); } cpt1=cpt1+1; } }
cette boucle marche bien , c'est juste qu'elle ne veux rien dire...
ceci boucle sur la meme case (n,m). Elle boucle en mettant 0 à chq fois dans cette case...Code:
1
2
3
4
5
6
7
8
9 while(cpt1!=nbre){ if (mat[n][m]==0){ mat[n][m]=val; } else{ System.out.println("Error"); } cpt1=cpt1+1; }
A mon avis tu dois faire boucler l'appel à cette fonction pas la fonction elle meme...
Donc plutot ça :
TANT_QUE il reste des case à 0 FAIRE
demander les valeurs à l utilisateur (print)
remplacer cette case par la valeur donné ( remplacer(mat,...) )
FIN
Je l'ai passé en tant que paramètre nbre. Voici l'algo rectifié :
Jojo je suis d'accord avec toi mais dans l'algo principal je demande à l'utilisateur combien il veut changer de case et je ne voudrais pas que toutes les cases à 0 soit changé...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public static void remplacement(int[][]mat,int n,int m, int val, int nbre){ int cpt1; cpt1=0; while(cpt1!=nbre){ if (mat[n][m]==0){ mat[n][m]=val; } else{ System.out.println("Error"); } cpt1=cpt1+1; } }
cela revient au même, tu change juste la condition du TANT_QUe. Ca devient :
TANT_QUE il reste des case à changer FAIRE
demander les valeurs à l utilisateur (print)
remplacer cette case par la valeur donné ( remplacer(mat,...) )
FIN
tu vois ?
Tu veux dire de faire de la sorte :
J'ai une petite erreur cependant... Mais les demandes se déclenchent correctement...Code:
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 // Remplacement public class remplacement{ public static final int MAX= 20 ; public static void creation(int[][]mat){ int i,j; int N=mat.length; int M=mat[0].length; for(i=0;i<N;i++){ for(j=0;j<M;j++){ System.out.print(mat[i][j]+"\t"); } System.out.println(); } } public static void remplissagemat(int[][]mat,int n,int m,int A){ int i,j,cpt; cpt=0; while(cpt!=A){ i=(int) (Math.random()*((n-1)+1)); j=(int) (Math.random()*((m-1)+1)); if (mat[i][j]==0){ mat[i][j]=(int) (Math.random()*(MAX+1)); cpt=cpt+1; } } } public static void remplacement(int[][]mat,int n,int m, int val){ if (mat[n][m]==0){ mat[n][m]=val; } } public static void afficher(int[][]mat){ int i,j; int N=mat.length; int M=mat[0].length; for(i=0;i<N;i++){ for(j=0;j<M;j++){ System.out.print(mat[i][j]+"\t"); } System.out.println(); } } //Programme principal. public static void main(String [] args){ System.out.println("Taille du plateau en commencant par le nombre de lignes puis en second le nombre de colonnes"); int N=Clavier.readInt(); int M=Clavier.readInt(); System.out.println(" nombre d'objets "); int A= Clavier.readInt(); // A correspond au nombre d'objets voulu. int[][] mat1= new int[N][M]; System.out.println("Le plateau est le suivant :"); remplissagemat(mat1,N,M,A); creation(mat1); System.out.println("Nombres de cases à remplacer"); int nbre= Clavier.readInt(); int cpt1; cpt1=0; while(cpt1!=nbre){ System.out.println("Donnez la ligne et la colonne de la valeur que vous voulez remplacer :"); int n= Clavier.readInt(); int m= Clavier.readInt(); System.out.println("Donnez la valeur à mettre :"); int val = Clavier.readInt(); remplacement(mat1,n,m,val); cpt1=cpt1+1; } afficher(mat1); } }
quel est ton erreur ?
En fait c'est bon. Merci beaucoup. C'était une erreur de ma part. Dans 5 minutes je poste l'algo modifié pour que ce soit bon pour les caractères.;)