besoin d'aide
6 posts
• Page 1 of 1
Re: besoin d'aide
je voudrais mettre des variables dans Request il peuvent allez de 7 à 12 variables. je voudrais que si j'ai 7 données les autres espaces je laisse des espaces libres et que la calculatrice me calcule que la ou il y a des données
-
saidina hamza
Niveau 8: ER (Espèce Rare: nerd)- Posts: 4
- Joined: 11 Oct 2014, 20:57
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BTS
Re: besoin d'aide
Il suffit d'utiliser des listes comme seules variables, avec la bonne taille !
Tu peux faire tous les calculs directement sur les listes
Tu peux même faire afficher toutes tes listes en même temps grâce aux matrices.
Cela simplifie encore grandement ton code :
Le "T" de la dernière ligne est le "T" de la transposée, que l'on obtient dans [2nd] [Math] [4] [1].
J'espère avoir bien compris ce que tu voulais...
Tu peux faire tous les calculs directement sur les listes
Tu peux même faire afficher toutes tes listes en même temps grâce aux matrices.
Cela simplifie encore grandement ton code :
- Code basic-68k : Select all
()
Prgm
Local d,e,g,pe,pg,ce,dg
Lbl deb
Dialog
Title "Tableau"
Request "Donner la liste des prix", d
Request "Q1 : trop cher", e
Request "Q2 : mauvaise qualité", g
EndDlog
Try
expr(d)->d
expr(e)->e
expr(g)->g
Else
Text "Une des listes entrées est erronée"
Goto deb
EndTry
e*100/sum(e)->pe
g*100/sum(g)->pg
cumSum(pe)->ce
100-cumSum(pg)->dg
ClrIO
Pause augment(["Prix", "trop cher", "en %", "% cumulé", "camelote", "en %", "% cumulé", "% acheteurs"]; {d, e, pe, ce, g, pg, dg, 100-ce-dg}T)
EndPrgm
Le "T" de la dernière ligne est le "T" de la transposée, que l'on obtient dans [2nd] [Math] [4] [1].
J'espère avoir bien compris ce que tu voulais...
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: besoin d'aide
- Code basic-68k : Select all
()
Prgm
Dialog
Title "prévision des ventes"
Request "liste prix",d
EndDlog
expr(d)»d
ClrIO
dim(d)»g
If fPart(g/2)=0 Then
mid(d,d[1],g/2)»k
Else
mid(d,d[1],g/2+0.5)»k
EndIf
mean(right(k,g))»e © (je voudrais moyenne de d[i] qui se trouve à droite)
mean(left(k,g))»f © (je voudrais moyenne de d[i] qui se trouve à gauche)
mean(right(d,g))»h © (je voudrais la moyenne de dim(d) qui se trouve à droite )
main(left(d,g))»j © (je voudrais la moyenne de dim(d) qui se trouve à gauche)
Disp "X1="&string(h)&" Y1="&string(e)
Pause "X2="&string(j)&" Y2="&string(f)
Disp string(f)&"=a*"&string(j)&"+b"
Pause string(e)&"=a*"&string(h)&"+b"
(f-e)/(h-j)»a
e-a*h»b
EndPrgm
-
saidina hamza
Niveau 8: ER (Espèce Rare: nerd)- Posts: 4
- Joined: 11 Oct 2014, 20:57
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BTS
Re: besoin d'aide
Je corrige une petite erreur sur le programme précédent et j'en profite pour mettre des valeurs approchées arrondies à 2 décimales :
Le "T" de la dernière ligne est le "T" de la transposée, que l'on obtient dans [2nd] [Math] [4] [1].
- Code basic-68k : Select all
()
Prgm
Local d,e,g,pe,pg,ce,dg
Lbl deb
Dialog
Title "Tableau"
Request "Donner la liste des prix", d
Request "Q1 : trop cher", e
Request "Q2 : mauvaise qualité", g
EndDlog
Try
expr(d)->d
expr(e)->e
expr(g)->g
Else
Text "Une des listes entrées est erronée"
Goto deb
EndTry
approx(e*100/sum(e))->pe
approx(g*100/sum(g))->pg
cumSum(pe)->ce
shift(pg)->dg
0->dg[1]
100-cumSum(dg)->dg
ClrIO
Pause augment(["Prix", "trop cher", "en %", "% cumulé", "camelote", "en %", "% cumulé", "% acheteurs"]; round({d, e, pe, ce, g, pg, dg, 100-ce-dg},2)T)
EndPrgm
Le "T" de la dernière ligne est le "T" de la transposée, que l'on obtient dans [2nd] [Math] [4] [1].
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: besoin d'aide
(en gros les données peuvent être inconnu pour les calculer j'ai l'habitude de mettre 0 et avec la condition If ... Then ... EndIf je les calcule )
- Code basic-68k : Select all
()
Prgm
ClrIO
Dialog
Request "Chiffre d'affaires",c
Request "charges variable",cv
Request "Marge sur cout var",sv
Request "charges fixes",cf
Request "résultat",r
EndDlog
expr(c)»c
expr(cv)»cv
expr(sv)»sv
expr(cf)»cf
expr(r)»r
Lbl a1
If cv=0 Then
c-sv»cv
Goto a1
EndIf
If c>0 and cv>0 and sv=0 Then
c+cv»sv
Goto a1
EndIf
If sv=0 and cf>0 and r>0 Then
cf+r»sv
Goto a1
EndIf
If c=0 Then
cv+sv»c
Goto a1
EndIf
If cf=0 Then
sv-r»cf
Goto a1
EndIf
If r=0 Then
sv-cf»r
Goto a1
EndIf
seq(i,i,1,1)»b
b*c/c*100»ca (pourcentage
b*cv/c*100»chv .....
b*sv/c*100»msv ......
b*cf/c*100»chf ........
b*r/c*100»re ....... pourcentage)
b*c»c (données ou calculés
b*cv»cv .........
b*sv»sv .........
b*cf»cf ........
b*r»r ..... données ou calculés )
Pause augment(["chiffre d'affaire","charges variable","MSCV","charges fixes","résultat"];{c,cv,sv,cf,r}T)
Pause augment(["chiffre d'affaire","charges variable","MSCV","charges fixes","résultat"];{ca,chv,msv,chf,re}T)
EndPrgm
-
saidina hamza
Niveau 8: ER (Espèce Rare: nerd)- Posts: 4
- Joined: 11 Oct 2014, 20:57
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BTS
Re: besoin d'aide
Voici quelques améliorations possibles :
1) Utilise des variables locales pour ne pas polluer ton espace de travail avec des variables qui ne servent que dans ton programme.
2) Donne des valeurs par défaut égales à 0 (pour ne pas être obligé de le taper... et du coup de pas oublier)
3) Évite le Goto avec une boucle while (ou même simplement des If bien écrits...) (d'ailleurs, il me semble qu'il y a une erreur dans l'une des formules : si sv=0, il faut le calculer en faisant c-cv et non c+cv, si je ne m'abuse)
4) Ta variable b ne sert à rien, ainsi que les 3/4 des calculs suivants. En plus, tu pourrais tout simplifier en mettant tout dans une seule liste.
5) Tu peux tout afficher (chiffres exacts ET pourcentages) dans un même tableau.
6) Il y a pas mal de fautes d'orthographe...
Voici une façon d'améliorer tout ce que je viens de citer :
1) Utilise des variables locales pour ne pas polluer ton espace de travail avec des variables qui ne servent que dans ton programme.
2) Donne des valeurs par défaut égales à 0 (pour ne pas être obligé de le taper... et du coup de pas oublier)
3) Évite le Goto avec une boucle while (ou même simplement des If bien écrits...) (d'ailleurs, il me semble qu'il y a une erreur dans l'une des formules : si sv=0, il faut le calculer en faisant c-cv et non c+cv, si je ne m'abuse)
4) Ta variable b ne sert à rien, ainsi que les 3/4 des calculs suivants. En plus, tu pourrais tout simplifier en mettant tout dans une seule liste.
5) Tu peux tout afficher (chiffres exacts ET pourcentages) dans un même tableau.
6) Il y a pas mal de fautes d'orthographe...
Voici une façon d'améliorer tout ce que je viens de citer :
- Code basic-68k : Select all
()
Prgm
Local c, cv, sv, cf, r, chif
ClrIO
"0"»c
c»cv
c»sv
c»cf
c»r
Dialog
Request "Chiffre d'affaires",c
Request "Charges variable",cv
Request "Marge sur coût var",sv
Request "Charges fixes",cf
Request "Résultat",r
EndDlog
expr(c)»c
expr(cv)»cv
expr(sv)»sv
expr(cf)»cf
expr(r)»r
While c*cv*sv*r*cf=0
If cv=0
c-sv»cv
If sv=0 and c>0 and cv>0
c-cv»sv
If sv=0 and cf>0 and r>0
cf+r»sv
If c=0
cv+sv»c
If cf=0
sv-r»cf
If r=0
sv-cf»r
EndWhile
{c, cv, sv, cf, r}»chif
Pause augment(["Chiffre d'affaire", "Charges variables", "MSCV", "Charges fixes", "Résultat"];{chif, 100*chif/c}T)
EndPrgm
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
6 posts
• Page 1 of 1
Who is online
Users browsing this forum: ClaudeBot [spider] and 4 guests