Vérifier que 2 nombres ne sont sur même ligne
Fermé
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
-
21 mars 2013 à 18:14
walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 - 24 mars 2013 à 14:17
walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 - 24 mars 2013 à 14:17
A voir également:
- Vérifier que 2 nombres ne sont sur même ligne
- Verifier un lien - Guide
- Comment aller à la ligne sur excel - Guide
- Partager photos en ligne - Guide
- Vente en ligne particulier - Guide
- Comment ne pas apparaître en ligne sur instagram - Guide
7 réponses
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
21 mars 2013 à 19:21
21 mars 2013 à 19:21
Bonjour,
pouvez vous nous présenter une ébauche de ta part?
autrement, voila comment procéder:
- utiliser Math.random() pour générer un nombre aléatoire, et le changer pour avoir un nombre entre 1 et 4.
- utiliser une boucle while dans la boucle for pour tester la présence d'un nombre dêja enregistré.
NB:
- si tu vise un tableau comme celui du Sudoku en taille 4, alors ça va te demander un esprie dure en math et récursivité.
- si tu vise un tableau respectant exactement les consignes cité en message en haut, alors, il te faut une plage de nombre entre 1 et 7, pour éviter des situation de boucle infinie.
Bonne chance
pouvez vous nous présenter une ébauche de ta part?
autrement, voila comment procéder:
- utiliser Math.random() pour générer un nombre aléatoire, et le changer pour avoir un nombre entre 1 et 4.
- utiliser une boucle while dans la boucle for pour tester la présence d'un nombre dêja enregistré.
NB:
- si tu vise un tableau comme celui du Sudoku en taille 4, alors ça va te demander un esprie dure en math et récursivité.
- si tu vise un tableau respectant exactement les consignes cité en message en haut, alors, il te faut une plage de nombre entre 1 et 7, pour éviter des situation de boucle infinie.
Bonne chance
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
21 mars 2013 à 21:15
21 mars 2013 à 21:15
Je vois pas trop comment faire pour la boucle while dans le for
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 22/03/2013 à 20:53
Modifié par walidovich_85 le 22/03/2013 à 20:53
Bonsoir,
je te donne une explication, et si tu n'arrive pas à developper une ébauche, je passe au code:
int nbreGenere= (int) (Math.random()*max);
boolean existe=true
while(existe==true){
//regénération du nombre après avoir
//été trouvé dans une ligne ou une colonne
nbreGenere= (int) (Math.random()*max);
//éliminer le cas d'une valeur nulle
while(nbreGenere==0){
nbreGenere= (int) (Math.random()*max);
}
existe=false;
//recherche verticale
//bien sur si on est pas dêja à la 1iere ligne
if(i!=0){
for (int k = 0; k < i; k++){
if(monTableau[k][j]==nbreGenere){
existe=true;
}
}
}
if(j!=0){
//recherche horizontale
//bien sur si on est pas dêja à la 1iere colonne
for (int l = 0; l < j; l++){
if(monTableau[i][l]==nbreGenere){
existe=true;
}
}
}
}
à la sortie de cette boucle while, qui doit etre incluse dans les deux boucles for classiques (du tableau), tu seras sur que le nombre généré n'existe pas.
NB:
condition nécessaire, max=longeur+largeur du tableau.
alors tableau 4x4 implique max=8
Being normal is boring... being geek is interesting
je te donne une explication, et si tu n'arrive pas à developper une ébauche, je passe au code:
int nbreGenere= (int) (Math.random()*max);
boolean existe=true
while(existe==true){
//regénération du nombre après avoir
//été trouvé dans une ligne ou une colonne
nbreGenere= (int) (Math.random()*max);
//éliminer le cas d'une valeur nulle
while(nbreGenere==0){
nbreGenere= (int) (Math.random()*max);
}
existe=false;
//recherche verticale
//bien sur si on est pas dêja à la 1iere ligne
if(i!=0){
for (int k = 0; k < i; k++){
if(monTableau[k][j]==nbreGenere){
existe=true;
}
}
}
if(j!=0){
//recherche horizontale
//bien sur si on est pas dêja à la 1iere colonne
for (int l = 0; l < j; l++){
if(monTableau[i][l]==nbreGenere){
existe=true;
}
}
}
}
à la sortie de cette boucle while, qui doit etre incluse dans les deux boucles for classiques (du tableau), tu seras sur que le nombre généré n'existe pas.
NB:
condition nécessaire, max=longeur+largeur du tableau.
alors tableau 4x4 implique max=8
Being normal is boring... being geek is interesting
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 mars 2013 à 21:52
22 mars 2013 à 21:52
j'avais déjà fait sa moi:
import java.util.Scanner;
public class tableau{
public static void main(String[] args) {
int[][] monTableau= new int[4][4];
//remplissage de la matrice monTableau
for (int i = 0; i < 4; i++)
{
for(int j = 0; j < 4; j++)
{
monTableau[i][j]= (int) (int)(Math.random() * 4) + 1;
System.out.print(monTableau[i][j]);
}
System.out.println();
}
}
}
import java.util.Scanner;
public class tableau{
public static void main(String[] args) {
int[][] monTableau= new int[4][4];
//remplissage de la matrice monTableau
for (int i = 0; i < 4; i++)
{
for(int j = 0; j < 4; j++)
{
monTableau[i][j]= (int) (int)(Math.random() * 4) + 1;
System.out.print(monTableau[i][j]);
}
System.out.println();
}
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 22/03/2013 à 22:57
Modifié par walidovich_85 le 22/03/2013 à 22:57
Bonsoir
ce qu'il faut, c'est, avant d'affecter la valeur (int)(Math.random() * 4) + 1 à monTableau[i][j], de vérifier si cette valeur existe dêja sur la ligne [i] et la colonne [j].
je t'ai déjà parlé de la contrainte sur le max lié a random, et pour l'éclairer, imagine que ton programme a généré des valeurs et il arrive à l'élément T[3][3] (v):
x y 1 z
a b 3 c
2 4 v .
. . . w
si tes valeurs sont >=1 et <=4, étant donné la contrainte cité en message en top haut, le programme ne trouvera jamais une valeur v, car ttes les valeurs possible sont dja enregistrées.
pour la valeur w, nous aurons 3+3 valeurs diffirentes, et en ajoutant w, nours devons avoir 7 valeurs diffirentes, d'ou le max doit etre 8
Being normal is boring... being geek is interesting
ce qu'il faut, c'est, avant d'affecter la valeur (int)(Math.random() * 4) + 1 à monTableau[i][j], de vérifier si cette valeur existe dêja sur la ligne [i] et la colonne [j].
je t'ai déjà parlé de la contrainte sur le max lié a random, et pour l'éclairer, imagine que ton programme a généré des valeurs et il arrive à l'élément T[3][3] (v):
x y 1 z
a b 3 c
2 4 v .
. . . w
si tes valeurs sont >=1 et <=4, étant donné la contrainte cité en message en top haut, le programme ne trouvera jamais une valeur v, car ttes les valeurs possible sont dja enregistrées.
pour la valeur w, nous aurons 3+3 valeurs diffirentes, et en ajoutant w, nours devons avoir 7 valeurs diffirentes, d'ou le max doit etre 8
Being normal is boring... being geek is interesting
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 22/03/2013 à 22:58
Modifié par walidovich_85 le 22/03/2013 à 22:58
essaie ce code:
public class tableau{
public static void main(String[] args) throws InterruptedException {
//Définition des dimensions
int longueur=9, largeur=9;
//déclaration du tableau
int[][] monTableau= new int[9][9];
//le max non atteint doit être au moin 18.
int max=longueur+largeur;
//remplissage de la matrice monTableau
for (int i = 0; i < longueur; i++){
for(int j = 0; j < largeur; j++){
//première génération pou l'élément T(0,0)
int nbreGenere= (int) (Math.random()*max);
boolean existe=true;
while(existe){
//regénération du nombre après avoir
//été trouvé dans une ligne ou une colonne
nbreGenere= (int) (Math.random()*max);
//éliminer le cas d'une valeur nulle
while(nbreGenere==0){
nbreGenere= (int) (Math.random()*max);
}
existe=false;
//recherche verticale
//bien sur si on est pas dêja à la 1iere ligne
if(i!=0){
for (int k = 0; k < i; k++){
if(monTableau[k][j]==nbreGenere){
existe=true;
}
}
}
if(j!=0){
//recherche horizontale
//bien sur si on est pas dêja à la 1iere colonne
for (int l = 0; l < j; l++){
if(monTableau[i][l]==nbreGenere){
existe=true;
}
}
}
}
//élément non trouvé puisque
//on a sortis de la boucle while
monTableau[i][j]=nbreGenere;
//un peu de stylisme pour l'affichage
if(monTableau[i][j]<10)
System.out.print("0"+monTableau[i][j]+" ");
else
System.out.print(monTableau[i][j]+" ");
}
System.out.println();
}
}
}
Being normal is boring... being geek is interesting
public class tableau{
public static void main(String[] args) throws InterruptedException {
//Définition des dimensions
int longueur=9, largeur=9;
//déclaration du tableau
int[][] monTableau= new int[9][9];
//le max non atteint doit être au moin 18.
int max=longueur+largeur;
//remplissage de la matrice monTableau
for (int i = 0; i < longueur; i++){
for(int j = 0; j < largeur; j++){
//première génération pou l'élément T(0,0)
int nbreGenere= (int) (Math.random()*max);
boolean existe=true;
while(existe){
//regénération du nombre après avoir
//été trouvé dans une ligne ou une colonne
nbreGenere= (int) (Math.random()*max);
//éliminer le cas d'une valeur nulle
while(nbreGenere==0){
nbreGenere= (int) (Math.random()*max);
}
existe=false;
//recherche verticale
//bien sur si on est pas dêja à la 1iere ligne
if(i!=0){
for (int k = 0; k < i; k++){
if(monTableau[k][j]==nbreGenere){
existe=true;
}
}
}
if(j!=0){
//recherche horizontale
//bien sur si on est pas dêja à la 1iere colonne
for (int l = 0; l < j; l++){
if(monTableau[i][l]==nbreGenere){
existe=true;
}
}
}
}
//élément non trouvé puisque
//on a sortis de la boucle while
monTableau[i][j]=nbreGenere;
//un peu de stylisme pour l'affichage
if(monTableau[i][j]<10)
System.out.print("0"+monTableau[i][j]+" ");
else
System.out.print(monTableau[i][j]+" ");
}
System.out.println();
}
}
}
Being normal is boring... being geek is interesting
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
23 mars 2013 à 16:14
23 mars 2013 à 16:14
Il y aurai pas quelque chose de plus simple
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
23 mars 2013 à 17:35
23 mars 2013 à 17:35
plus simple !!!??
de quelle simplicité tu parle?
de quelle simplicité tu parle?
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
23 mars 2013 à 20:42
23 mars 2013 à 20:42
Bah je c pas trop
moi on m'a qu'il fallait que je fasse 4 for pour comparer les nombres: 2 pour l'horizontal et 2 pour le verticale
moi on m'a qu'il fallait que je fasse 4 for pour comparer les nombres: 2 pour l'horizontal et 2 pour le verticale
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
23 mars 2013 à 23:08
23 mars 2013 à 23:08
je pige rien ici.
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
24 mars 2013 à 00:03
24 mars 2013 à 00:03
JE voudrai un programme très simple à comprendre et à faire
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
24 mars 2013 à 00:34
24 mars 2013 à 00:34
Bonsoir tortue60
dans ce sujet, je pense que j'ai assez expliquer les points suivants:
1- le cahier de charge n'est pas réalisable avec des méthodes de programmation simples, parce que si tu demande un tableau comme celui du Sudoku, alors il te faut appliquer la récursivité. et je pense a ce stage, pour toi, la récursivité n'est une option.
2- les solutions proposées ne contiennent que des méthodes simples qui ne sont même pas limitées au JAVA, je parle bien sur du "for" et "while". l'utilisation seule des boucles "for" ne va pas garantir la génération des nombres valides avec random. d'où la nécessité des boucles while.
3- étant admis que la longueur de l'intervalle des nombres doit etre égale a la somme des dimensions du tableau, c'est a dire, dans ton cas, le tableau 4x4 implique des nombres entre 1 et 7 et pas entre 1 et 4, j'ai cité ci dessus un exemple pour montré l'impossibilité de réaliser ton cahier charge sans modification.
pour moi, je pense qu'il te faut 2 choses importantes:
- un cours complet du langage Java, pour pouvoir se familiariser avec les méthodes de calcul.
- beaucoup d'exercice d'entrainement en logique, pour pouvoir traduire un probleme en un programme informatique (l'algorithmique).
si tu en besoin, je peux te proposer des liens.
BONNE CHANCE.
dans ce sujet, je pense que j'ai assez expliquer les points suivants:
1- le cahier de charge n'est pas réalisable avec des méthodes de programmation simples, parce que si tu demande un tableau comme celui du Sudoku, alors il te faut appliquer la récursivité. et je pense a ce stage, pour toi, la récursivité n'est une option.
2- les solutions proposées ne contiennent que des méthodes simples qui ne sont même pas limitées au JAVA, je parle bien sur du "for" et "while". l'utilisation seule des boucles "for" ne va pas garantir la génération des nombres valides avec random. d'où la nécessité des boucles while.
3- étant admis que la longueur de l'intervalle des nombres doit etre égale a la somme des dimensions du tableau, c'est a dire, dans ton cas, le tableau 4x4 implique des nombres entre 1 et 7 et pas entre 1 et 4, j'ai cité ci dessus un exemple pour montré l'impossibilité de réaliser ton cahier charge sans modification.
pour moi, je pense qu'il te faut 2 choses importantes:
- un cours complet du langage Java, pour pouvoir se familiariser avec les méthodes de calcul.
- beaucoup d'exercice d'entrainement en logique, pour pouvoir traduire un probleme en un programme informatique (l'algorithmique).
si tu en besoin, je peux te proposer des liens.
BONNE CHANCE.
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
24 mars 2013 à 10:36
24 mars 2013 à 10:36
salut,
Je voudrais bien des liens si tu en connais
Je voudrais bien des liens si tu en connais
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
24 mars 2013 à 14:17
24 mars 2013 à 14:17
pour le langage JAVA: http://www.siteduzero.com/informatique/exportPdf/apprenez-a-programmer-en-java
pour l'algorithmique: https://openclassrooms.com/fr/courses?categories=informatique&page=2&tags=algorithmique plusieurs tuto qui traite les différents aspect de programmation (trie, recherche...)
pour l'algorithmique: https://openclassrooms.com/fr/courses?categories=informatique&page=2&tags=algorithmique plusieurs tuto qui traite les différents aspect de programmation (trie, recherche...)