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 Invité
Posté le : Jeu 20 Oct 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 Invité
Posté le : Jeu 20 Oct 2011, 18:03
Et... encore moi, commetn on fais si on a des nombre, que le programme les mettre dans l'ordre croissant ??
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 20 Oct 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.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Calipso Invité
Posté le : Jeu 20 Oct 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}
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 20 Oct 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é.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Calipso Invité
Posté le : Jeu 20 Oct 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.
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 20 Oct 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
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Calipso Invité
Posté le : Jeu 20 Oct 2011, 19:20
Dac, merci !!
je montrerais le programme quand je finirais
Calipso Invité
Posté le : Jeu 20 Oct 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 virgule
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 20 Oct 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
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Calipso Invité
Posté le : Jeu 20 Oct 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 Invité
Posté le : Jeu 20 Oct 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 ??
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 20 Oct 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
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Calipso Invité
Posté le : Jeu 20 Oct 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...
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 20 Oct 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.
sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Calipso Invité
Posté le : Jeu 20 Oct 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
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 20 Oct 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.
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Calipso Invité
Posté le : Jeu 20 Oct 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...
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 20 Oct 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
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Calipso Invité
Posté le : Jeu 20 Oct 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
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Ven 21 Oct 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
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 24 Oct 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
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)