Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Intervalles
Calipso le 20/10/2011 à 17:14
Bonjour, j'aimerais faire un programme sur les intervalles ! et c'est plus compliqué que ça en a l'air !
Avec les association de 2 ou 3 intervalles, les "Union" les "inter" etc...
genre d'abord choisir si on veut 2 ou 3 interval
Puis on entre les valeur si ya par exemple 2 interval:
5/4 < x <= -5/3
ou
1/2 < x <= 7/2
et comme c'est "ou", "union" ça dois donner l'interval: [-5/3 ; 5/4[
et si possible un ptit dessin avec les 4 nombres dans l'ordre et tout
mais le problème c'est que, je ne sais pas comment faire les condition avec les signe ">" ou "=>". surtout que ce n'est pas toujours du genre: a<x<b ; ya aussi x<a pour un interval avec + ou - infini...
Calipso le 20/10/2011 à 17:18
A oui, il faut aussi que le programme dis si c'est un ensemble vide et tout...
et si ya 3 intervalles, qu'il fasse d'abord les 2 premiers, puis l'autre
par exemple: a<x<b ou c<x<d et x>e
ça fasse dabord a<x<b ou c<x<d; puis le résultat inter x>e
voila je sais pas si c'est faisable !Calipso le 20/10/2011 à 18:03
Et... encore moi, commetn on fais si on a des nombre, que le programme les mettre dans l'ordre croissant ??sandro le 20/10/2011 à 18:17
Tu peut les mettre dans une liste et utiliser lafonction TriCroi( (dans stats) avc pour argument : soit une liste à trier, soit plusieurs listes de même longueur dont les termes seront clasés par odre croisaant de la liste placée en première.
SandroCalipso le 20/10/2011 à 18:27
Merci de répondre
mais je ne comprend pas trop !
Si j'ai par exemple 6 variable A,B,C,D,E,F :
je fais: L1={A,B,C,D,E,F}
et après ?
sandro le 20/10/2011 à 18:32
Je te conseille :
Code
Prompt A,B,C,D,E,F
{A,B,C,D,E,F -> L1
TriCroi(L1
L1(1 -> G
L1(2 -> H
L1(3 -> I
L1(4 -> J
L1(5 -> K
L1(6 -> L
Tu aura donc G<H<I<J<K<L.
Si l'ordre importe, prévient moi en expliquant clairement comment tu compte untiliser les résultats une fois triés.
Sandro
Calipso le 20/10/2011 à 18:37
Merci !!
Si j'ai 6 variables, dans le désordre je veux les mettres dans l'ordre croissant pour pouvoir les mettre ensuite sur un axe des Réel.
Je pense que tu as répondu a ma question merci

sandro le 20/10/2011 à 18:54
Derien, si c'es ça qu'il te faut, ça va; si par contre il t'aurrait fallut garder les intervales, ça aurrait été plus compliqué.
SandroCalipso le 20/10/2011 à 19:02
J'ai fais comme cela:
-je choisi la forme du premier interval
-je choisi si c'est une union ou intersection
-je choisi la forme du second interval
forme:
a < x < b
a <= x <= b
a <= x < b
a < x <= b
a < x
a <= x
a > x
a >= x
Puis j'entre la (ou les) valeur(s)
Puis je les met dasn l'ordre sur un axe, avec les beau interval
puis, après quelque condition je vois le résultat si c'est ensemble vide ou autre chose.
sandro le 20/10/2011 à 19:16
Bonne chance.
Par contre un petit rappel : ne fait jamais If 9<X<20 sur la TI, elle le comprendrait comme : si 9<X : If 1<20 et sinon 0<20
Il te faut doncécrire If 9<X and X<20
SandroCalipso le 20/10/2011 à 19:20
Dac, merci !!
je montrerais le programme quand je finirais

Calipso le 20/10/2011 à 20:15
Une ptit chose qui me pose problème ^^
Si dans les valeur je met: 5/3 ; ou racine de 2
je voudrai que elle reste comme elle sont, en fraction ou en racine sans être calculé... ou, au pire je voudrai qu'elle soit arrondi a un seul chiffre après la virgulesandro le 20/10/2011 à 20:20
Pour garder tel quel, il faut que tu remplace Prompt A par
Code
Imput"A",Chaîne1 //Chaîne1 se trouve dans Var/7
expr(Chaîne1 -> A //expr( n'est que dans le catalogue
Ensuite, pour afficher A exactement comme rentré, tu remplace A par Chaîne 1
Sandro
Calipso le 20/10/2011 à 20:33
C'est cool ça

si par exemple dans la chaine on ne met pas un nombre mais des lettre le expr ne marche pas ? ^^ je ne veux pas le faire mais c'est juste pour savoir
merci ! et bien on a tout prévu en programmation

Calipso le 20/10/2011 à 20:38
Aaaah ça me pose un autre problème !
par exemple:
Code
Imput"A",Chaîne1
expr(Chaîne1 -> A
Imput"B",Chaîne2
expr(Chaîne2 -> B
{A,B-> L1
SorA(L1
L1(1 -> C // ma chaine 1 et ma chaine 2 elle sont ou ???
L1(2 -> D // je ne peut plus savoir ??
sandro le 20/10/2011 à 20:41
Dans tous les cas tu poura afficher le contenue en tant que texte, par contre si tu met expr(Chaîne1 et que le contenu de Chaîne 1 ne peut pas être calculé, la Ti t'affiche une erreure.
Par example:
2+6(2) est valable
2+()2 est invalide
2+3A+C est valide
7*L1(1 est valide (L1 est une chaîne
7*L1 est valide si au lieux d'enregistrer le résulat dans une variable nombre, tu l'enregistre dans une liste
SandroCalipso le 20/10/2011 à 20:45
Ok ! et pour mon dernier problème ? ^^
je peux mettre dans l'ordre des nombres mais mettre dans l'ordre des chaines calculable je sais pas...sandro le 20/10/2011 à 20:52
Pas directement : tu peut mettre dans l'ordre les nombres et ensuite tester chaîne par chaîne si la valeur corespond : si oi : afficher la chaîne, sinon, tenter la chaîne suivante.
Ou alors, chercher dans la liste où ce situe le nombre corespondant à telle chaîne et afficher en conséquence.
sandroCalipso le 20/10/2011 à 20:56
Code
Imput"A",Chaîne1
expr(Chaîne1 -> A
Imput"B",Chaîne2
expr(Chaîne2 -> B
{A,B-> L1
SorA(L1
L1(1 -> str3
expr(str3 -> C
L1(2 -> str4
expr(str4 -> C
if str1 = str3 : str3 -> str1
comme ça ?
sandro le 20/10/2011 à 21:06
Non, ça ne marchear pas, on ne peut pas mettre un nombre dans une chaîne directement.
Il te faudrait faire :
Code
Imput"A",Chaîne1
expr(Chaîne1 -> A
Imput"B",Chaîne2
expr(Chaîne2 -> B
Imput"C",Chaîne3
expr(Chaîne3 -> B
Imput"D",Chaîne4
expr(Chaîne4 -> B
{A,B,C,D-> L1
SorA(L1
{X1,X2,X3,X4 -> L2 //abscisse du premier, puis second, puis 3ème puis 4ème texte
{Y1,Y2,Y3,Y4 -> L3 //ordonnée du premier, puis second, puis 3ème puis 4ème texte
For(X,1,dim(L1
L1(X -> Z
If Z=A
Output(L3(X),L2(X),Chaîne1
If Z=B
Output(L3(X),L2(X),Chaîne2
If Z=C
Output(L3(X),L2(X),Chaîne3
If Z=D
Output(L3(X),L2(X),Chaîne4
End
Sandro
PS : si tu est sur écran graphique, remplace Output par Texte en adaptant les valeures des coordonnées.
Calipso le 20/10/2011 à 21:26
Bouuuuh je comprend plus...
bon j'ai:
G = str4
H = str5
I = str6
J = str7
{G,H,I,J-> L1
L1(1-> K
L1(2-> L
L1(3-> M
L1(4-> N
et après je veux affiché K,L,M,N dans l'ordre en image
je n'ai vraiment pas compris ce que tu as fais avant...sandro le 20/10/2011 à 21:45
La méthode que tu site n'est plus trop d'actualité (s'était avant que je sache précisément ce que tu voulait en faire.
Je t'explique donc le code :
Code
Imput"A",Chaîne1 //on entre les chaînes et en les calcule : de ici
expr(Chaîne1 -> A
Imput"B",Chaîne2
expr(Chaîne2 -> B
Imput"C",Chaîne3
expr(Chaîne3 -> B
Imput"D",Chaîne4
expr(Chaîne4 -> B //jusqu'à là
{A,B,C,D-> L1 // on met les valeures numériques dans une liste ...
SorA(L1 // ... que l'on trie par ordre croissant
{X1,X2,X3,X4 -> L2 //liste qui permet de retrouver l'abscisse des expréssions
à placer (indépendamant de valeures: on associe juste à la plus petite valeur un emplacement
spécifique, et de même pour les suivantes.
{Y1,Y2,Y3,Y4 -> L3 //idem mais pour l'ordonnéee
For(X,1,dim(L1 // boucle plaçant les expréssions
L1(X -> Z
If Z=A
Output(L3(X),L2(X),Chaîne1
If Z=B
Output(L3(X),L2(X),Chaîne2
If Z=C
Output(L3(X),L2(X),Chaîne3
If Z=D
Output(L3(X),L2(X),Chaîne4
End
Explication de la boucle :
For(X,1,dim(L1 : on fait passer la variable X par toutes les rand dans la liste (plus X est petit, plus la valeur associée sera petite.
L1(X -> Z : on fait passer dans Z la valeur numérique du Xème plus petit nombre
ensuite, on teste à chaque fois si c'est égal à A (c'est-à-dire a la première chaîne), puis à B, à C et à D et quand c'est la bonne chaîne qui a été retrouvée, on la positionne à l'emplacement déterminé par son rand à l'aide des listes L2 et L3.
En espérant avoir été assez clair,
Sandro
Calipso le 20/10/2011 à 22:03
C'est assez compliqué ^^
merci en tout cas. Mais je n'ai pas assez d'expérience dans le domaine...
pour arrondir un nombre, c'est int(
mais pour arrondir a un chiffre après la virgule c'est quoi ?
Je pense qu'après ça je vais me couché, merci d'avoir suivi mmon programme je le posterais demain

Calipso le 20/10/2011 à 23:05
{X1,X2,X3,X4 -> L2
X1 c'est quoi ? un "X" suivi d'un "1" ?sandro le 21/10/2011 à 20:31
Non, c'est à remplacer par les abscisses : si par example tu veut afficher la plus petite valeur en abcisse 3, la secconde en 5, la 3ème en 7 et la dernière en 9 , tu fait {3,5,7,9 -> L2
Sandrolinkakro le 24/10/2011 à 23:31
Ce code permet certes d'afficher des expressions, mais je trouve dommage de compliquer le problème ainsi. Je tente donc ceci tout simplement.
Code
Prompt A,B,C,D
{A,B,C,D->L1
SortA(L1
For(E,1,4
Output(E+4,1,arrondi(L1(E),1
End
Et avec ça il ne devrait plus y avoir de problème pour voir les intervalles et les intersections.
Code
Prompt A,B,C,D
{A,B,C,D->L1
SortA(L1
For(E,1,4
Texte(0,10E,arrondi(L1(E),1
End
For(E,1,4
L1(E
If A=Rép
10E->F
If B=Rép
10E->G
If C=Rép
10E->H
If D=Rép
10E->I
End
Ligne(F,10,G,10
Ligne(H,20,I,10
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.