A voir également:
- Comme peut on resolue ce petit probleme.
- Petit 3 ✓ - Forum Word
- Petit 1 comme ² ✓ - Forum Bureautique
- Petit colis distribution - Forum Réseaux sociaux
- Excel trier du plus grand au plus petit - Guide
- Comment retourner un colis - Forum Consommation & Internet
5 réponses
scriptiz
Messages postés
1424
Date d'inscription
dimanche 21 décembre 2008
Statut
Membre
Dernière intervention
14 septembre 2023
425
22 nov. 2009 à 14:55
22 nov. 2009 à 14:55
Bonjour, je peux te le faire si tu me fournit la spirale de façon dégressive ainsi que la matrice sous forme vectorielle.
nobie-cs
Messages postés
155
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
15 mai 2010
17
22 nov. 2009 à 17:50
22 nov. 2009 à 17:50
tu peut un peut explique l'énoncer c'est pas clair du tout
ok
on doit remplir une matrice par des entier par exemple 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.
soit le longue des lignes de i jusqu'a n
soit le longue des colones de j jusqu'a m
on doit entrer les entiers 1 2 3 4 5 sur la premiere ligne de i a n.
on commence de la position n jusqu'a la position m et on remplir par 5 6 7 8 9.
maintenant on ait a la position m. on commence de cette position et on termine a la position j.on la remplir par 9 10 11 12 13.
apres on commence de la position j et on s'arrete a la position j+1. 13 14 15 16 ainsi de suite jusqu'a la matrice se rempli.
c'est un exemple:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
normalement c'est clair!
on doit remplir une matrice par des entier par exemple 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.
soit le longue des lignes de i jusqu'a n
soit le longue des colones de j jusqu'a m
on doit entrer les entiers 1 2 3 4 5 sur la premiere ligne de i a n.
on commence de la position n jusqu'a la position m et on remplir par 5 6 7 8 9.
maintenant on ait a la position m. on commence de cette position et on termine a la position j.on la remplir par 9 10 11 12 13.
apres on commence de la position j et on s'arrete a la position j+1. 13 14 15 16 ainsi de suite jusqu'a la matrice se rempli.
c'est un exemple:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
normalement c'est clair!
nobie-cs
Messages postés
155
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
15 mai 2010
17
22 nov. 2009 à 18:43
22 nov. 2009 à 18:43
tés intéressent ton exemple je vais essaye de le résoudre je té réponde demain peut être si c'est pas trés urgent 'j'ai oublie tout en algo'
scriptiz
Messages postés
1424
Date d'inscription
dimanche 21 décembre 2008
Statut
Membre
Dernière intervention
14 septembre 2023
425
25 nov. 2009 à 11:42
25 nov. 2009 à 11:42
J'avoue que c'est un exercice malsain ^^
Explication de ma solution :
- Premièrement il vous faut entrer un nombre entier, qui représente la largeur de la matrice (exemple : 5).
- Ensuite il faut entrer 1 ou 2 (pas autre chose que des nombres) selon votre choix de remplir la matrice spirale automatiquement ou manuellement (avec vos valeurs).
- Si vous avez choisis le remplissage manuel il faut entrer les x valeurs (où x = largeur²), sinon le remplissage se fait tout seul.
- La matrice spiralée s'affiche à la fin du programme.
Ma solution fonctionne pour les matrices de largeur 2 et supérieure (sans quoi ce n'est plus une matrice si la largeur est inférieure à 2).
Conseils d'utilisation :
- Utiliser des matrices de largeur 9 maximum en remplissage automatique (sans quoi l'affichage est un peu décalé par les valeurs supérieures à 100 dans la matrice).
- En mode manuel pas de limites sur la largeur de la matrice, par contre je conseille de remplir la matrice avec des valeurs inférieures à 100 pour éviter le décalage lors de l'affichage.
Voilà, bon amusement !
Le code source (à mettre dans un fichier Spirale.java ou alors renommer la classe) :
Explication de ma solution :
- Premièrement il vous faut entrer un nombre entier, qui représente la largeur de la matrice (exemple : 5).
- Ensuite il faut entrer 1 ou 2 (pas autre chose que des nombres) selon votre choix de remplir la matrice spirale automatiquement ou manuellement (avec vos valeurs).
- Si vous avez choisis le remplissage manuel il faut entrer les x valeurs (où x = largeur²), sinon le remplissage se fait tout seul.
- La matrice spiralée s'affiche à la fin du programme.
Ma solution fonctionne pour les matrices de largeur 2 et supérieure (sans quoi ce n'est plus une matrice si la largeur est inférieure à 2).
Conseils d'utilisation :
- Utiliser des matrices de largeur 9 maximum en remplissage automatique (sans quoi l'affichage est un peu décalé par les valeurs supérieures à 100 dans la matrice).
- En mode manuel pas de limites sur la largeur de la matrice, par contre je conseille de remplir la matrice avec des valeurs inférieures à 100 pour éviter le décalage lors de l'affichage.
Voilà, bon amusement !
Le code source (à mettre dans un fichier Spirale.java ou alors renommer la classe) :
import java.util.*; public class Spirale { public static Scanner sc = new Scanner(System.in); public static void main(String[] args) { System.out.print("Entrez la largeur de la matrice carrée (min. 2) : "); int largeur = sc.nextInt(); // Si largeur est plus petit que 2, ce n'est pas une matrice if(largeur < 2) { System.out.println("Largeur trop petite, fin du programme !"); System.exit(1); } int[][] matrice = new int[largeur][largeur]; // Initialisation du tableau for(int i = 0; i < largeur; i++) for(int j = 0; j < largeur; j++) matrice[i][j] = 0; // Choix du remplissage System.out.println("\n1) Remplir la matrice manuellement"); System.out.println("2) Remplir la matrice automatiquement"); System.out.print("Entrez 1 ou 2 : "); int choix = sc.nextInt(); System.out.println(); int x = 0, y = 0; // positions dans la matrice char direction = 'r'; // la direction du remplissage // Remplissage for(int i = 0; i < (largeur * largeur); i++) { int value = 0; // valeur insérée // selon le choix du remplissage (automatique ou manuel) if(choix == 2) { value = i + 1; } else { System.out.print("Entrez le " + (i + 1) + "e nombre : "); value = sc.nextInt(); } matrice[x][y] = value; // avancons dans la bonne direction switch(direction) { case 'r': y++; break; case 'd': x++; break; case 'l': y--; break; case 'u': x--; break; } // spiralons quand il le faut if(matrice[x][y] != 0) { switch(direction) { case 'r': y--; x++; direction = 'd'; break; case 'd': x--; y--; direction = 'l'; break; case 'l': y++; x--; direction = 'u'; break; case 'u': x++; y++; direction = 'r'; break; } } else { // sinon, tournons aux coins if(y == (largeur - 1) && direction == 'r') direction = 'd'; if(x == (largeur - 1) && direction == 'd') direction = 'l'; if(y == 0 && direction == 'l') direction = 'u'; if(x == 0 && direction == 'u') direction = 'r'; } } // affichons la matrice spiralée System.out.println("\nLa matrice spirale : "); for(int i = 0; i < largeur; i++) { for(int j = 0; j < largeur; j++) { System.out.print(matrice[i][j] + " "); if(matrice[i][j] < 10) System.out.print(" "); } System.out.println(); } } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
scriptiz
Messages postés
1424
Date d'inscription
dimanche 21 décembre 2008
Statut
Membre
Dernière intervention
14 septembre 2023
425
30 nov. 2009 à 00:17
30 nov. 2009 à 00:17
Ah je n'avais pas vu qu'il fallait le faire en C.
En même temps, pour autant que tu ait des connaissances en C, tu n'aura aucun problème à adapter mon code Java en C étant donné qu'à part le Scanner je n'utilise rien de particulier à Java et que la syntaxe entre Java et C reste proche.
Bonne chance.
En même temps, pour autant que tu ait des connaissances en C, tu n'aura aucun problème à adapter mon code Java en C étant donné qu'à part le Scanner je n'utilise rien de particulier à Java et que la syntaxe entre Java et C reste proche.
Bonne chance.
22 nov. 2009 à 17:38