Posté le 25/08/2018 20:35
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 187 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 25/08/2018 20:36 | #
Je crois bien qu'il y avait un article paru il y a quelques semaines sur le sujet...
Je fais des recherches.
Citer : Posté le 25/08/2018 20:39 | #
Pourquoi une boucle ne te suffirait-elle pas ?
Citer : Posté le 25/08/2018 20:41 | #
En effet la même question à été demandé il y a peu.
Je ne sais plus qui avait trouvé l'astuce, il suffit de vérifier la condition
Min(List 1) = Max(List 1)
Citer : Posté le 25/08/2018 20:42 | #
Pour une liste, oui, mais pour une matrice ?
Citer : Posté le 25/08/2018 20:43 | #
Ah zut je pensais plutôt au tuto de Drak sur les fonctions utiles et méconnues.
Oui mais non.
Pour les matrices, je pense à un truc genre : Max(Mat 1=Min(Mat1
Citer : Posté le 25/08/2018 20:49 | #
Ah oui, j'avais pas vu.
Une boucle semble pertinent, sinon une boucle avec l'astuce Min Max et Mat->List
Citer : Posté le 25/08/2018 20:50 | #
Pour autant que je sache Min() et Max() ne marchent pas sur les matrices, en tous cas un test rapide semble prouver le contraire.
Tu peux toujours extraire vers des listes avec List»Mat et Mat»List mais ce n'est pas très pratique.
Citer : Posté le 25/08/2018 21:13 | #
J'ai trouvé quelque chose, mais c'est lorsqu'on déclare les dimensions d'une matrice, donc forcement tout est pareil, après je sais pas si ça peut aider:
For 1→N To A-1
For 1→M To B-1
If Mat A[N,M]=Mat A[N+1,M+1]
Then "Ok"
Else "No"
IfEnd
Next
Next
Citer : Posté le 25/08/2018 21:23 | #
C'est pas mal, toutefois ça prouve juste que les diagonales sont homogènes. Une matrice comme ceci va afficher "Ok" :
3 4 5 6
2 3 4 5
1 2 3 4
Sinon l'idée est bonne, et une fois la matrice créée tu peux toujours écrire :
List Ans[1]→A
List Ans[2]→B
For 1→N To A-1
...
Citer : Posté le 25/08/2018 21:32 | #
En reprenant ton idée de départ, j'ai tapé ce code. Il n'est pas testé et des optimisations sont certainement possibles.
Mat A[1,1→C
1
For 1→N To A
For 1→M To B
If C≠Mat A[N,M
Then 0:Break
IfEnd
Next
Next
If Ans
Then "OK"
Else "Non"
IfEnd
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 25/08/2018 21:34 | #
Tu es sûr que tu as envie de réinitialiser la matrice avant de tester ? Là le programme répond trivialement "OK" à tous les coups si A et B sont des entiers fréquentables.
Citer : Posté le 25/08/2018 21:36 | #
J'ai repris le code Redeyes
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 25/08/2018 21:38 | #
Qui a bien dit que son code ne marchait qu'à la création de la matrice (parce qu'il avait besoin des dimensions). Toi tu sais comment les récupérer plus tard x)
Citer : Posté le 25/08/2018 21:40 | #
Je ne vais pas lui mâcher tout le travail non plus
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 25/08/2018 23:19 | #
List Ans[1]→A
List Ans[2]→B
For 1→N To A-1
...
Oui! Du coup avec ça on peut avoir:
List Ans[1]→A // Nombre de lignes
List Ans[2]→B //Nombre de colonnes
For 1→N To A
For 1→M To B-1
If Mat A[N,M]=Mat A[N,M+1] //Le programme analyse les cases horizontalement avant de passer à la ligne suivante
Then "OK"
Else "NO"
IfEnd
Next
Next
Et si il n'y a ne serait-ce qu'un "NO", alors toutes les cases de la matrices ne sont pas identiques. Après il doit y avoir un moyen pour afficher ok ou non en une fois
Citer : Posté le 26/08/2018 09:14 | #
Cette fois-ci tu ne compares jamais la ligne N avec des autres lignes, du coup cette matrice non uniforme va passer le test...
2 2 2 2
3 3 3 3
4 4 4 4
La méthode de Totoyo est plus sûre : elle vérifie que toutes les cases sont égales à la première (Mat A[1,1]), ce qui garantit l'uniformité !
Citer : Posté le 26/08/2018 09:38 | #
J'ai trouvé plus simple, regardez c'est juste deux boucles "for" et une variable.
0→A
For 1→U To 21
For 1→V To 7
Mat Z[V,U]=0⇒A+1→A
Next
Next
A=147⇒"OK"
A≠147⇒"NO"
Citer : Posté le 26/08/2018 09:46 | #
C'est pas mal ! Toutefois ça ne marche que si toutes cases valent 0, n'est-ce-pas ?
Si tu ne connais pas la valeur à l'avance tu peux la déduire de Mat A[1,1] et tu te rapproches de la méthode de Totoyo.
L'autre avantage d'utiliser Break c'est que ça va plus vite si la matrice n'est pas uniforme (ça arrête de chercher dès qu'une cellule différente est trouvée).
Citer : Posté le 26/08/2018 11:56 | #
Une version sans boucle for (peut être plus rapide, mais consomme plus de place car elle génère une matrice temporaire) :
Mat Z - Mat Z[1,1] -> Mat Z
If Mat Z = Mat A
Then "OK"
Else "NO"
IfEnd
ClrMat A
- On génère une matrice A de même taille que la Z, avec que des 0
- On soustrait la 1ère case de la matrice Z à elle même, ce qui fait que la 1ère case est à 0
- Si toutes les cases de la matrice sont égales à la 1ère case, elle sont toutes à 0, et donc Mat Z = Mat A.
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 26/08/2018 12:04 | #
Par contre tu as détruit la matrice, là.