Misez P'tit, Optimisez - N°32 (factorielle)
Modérateur : Politburo
- Paul Tergeist
- Fonctionne à 9600 bauds
- Messages : 2417
- Enregistré le : 15 oct. 2007 15:50
- Localisation : 3ème planète après le soleil
Re: Misez P'tit, Optimisez - N°32 (factorielle)
Vos solutions sont tellement bien que j'ai fortement envie de les copier sur mon p'tit site en citant vos pseudos silicium.
histoire de les posteriser. (dans le sens de postérité pas d'en faire des poster)
histoire de les posteriser. (dans le sens de postérité pas d'en faire des poster)
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3422
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: Misez P'tit, Optimisez - N°32 (factorielle)
Pas de souci pour ce qui est de mes productions, postées ou en posters, elles sont immédiatement tombées dans le domaine publique et à la dispositions de tous et toutes.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Re: Misez P'tit, Optimisez - N°32 (factorielle)
Tout à fait OK en ce qui le concernePaul Tergeist a écrit :Vos solutions sont tellement bien que j'ai fortement envie de les copier sur mon p'tit site en citant vos pseudos silicium.
histoire de les posteriser. (dans le sens de postérité pas d'en faire des poster)
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
- Paul Tergeist
- Fonctionne à 9600 bauds
- Messages : 2417
- Enregistré le : 15 oct. 2007 15:50
- Localisation : 3ème planète après le soleil
Re: Misez P'tit, Optimisez - N°32 (factorielle)
Merci C.Ret mais je les mettrai juste en listing car en poster cela tenterait trop les fabricants
de T-Shirt.
Comment réagirais-tu si tu croisais à la plage des demoiselles portant tes oeuvres sur
leur T-shirt échancrés ?
Comme tout bon auteur tu les arracherais en disant "c'est à moi, je le reprends".
Et tu aurais raison, mais après tu risquerais des conséquences...
Donc juste en listing.
de T-Shirt.
Comment réagirais-tu si tu croisais à la plage des demoiselles portant tes oeuvres sur
leur T-shirt échancrés ?
Comme tout bon auteur tu les arracherais en disant "c'est à moi, je le reprends".
Et tu aurais raison, mais après tu risquerais des conséquences...
Donc juste en listing.
Re: Misez P'tit, Optimisez - N°32 (factorielle)
Tant que ce n'est pas en lit string...Paul Tergeist a écrit :Merci C.Ret mais je les mettrai juste en listing car en poster cela tenterait trop les fabricants
de T-Shirt.
Comment réagirais-tu si tu croisais à la plage des demoiselles portant tes oeuvres sur
leur T-shirt échancrés ?
Comme tout bon auteur tu les arracherais en disant "c'est à moi, je le reprends".
Et tu aurais raison, mais après tu risquerais des conséquences...
Donc juste en listing.
- Paul Tergeist
- Fonctionne à 9600 bauds
- Messages : 2417
- Enregistré le : 15 oct. 2007 15:50
- Localisation : 3ème planète après le soleil
Re: Misez P'tit, Optimisez - N°32 (factorielle)
Pas de danger, les programmes sont trop grand pour tenir sur un string.
Ou alors un grand string....
Ou alors un grand string....
Re: Misez P'tit, Optimisez - N°32 (factorielle)
"format string size ="...
- Paul Tergeist
- Fonctionne à 9600 bauds
- Messages : 2417
- Enregistré le : 15 oct. 2007 15:50
- Localisation : 3ème planète après le soleil
Re: Misez P'tit, Optimisez - N°32 (factorielle)
On ne parle pas du même string. Moi je parle du chanteur String.
- Marge
- Fonctionne à 14400 bauds
- Messages : 6192
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: Misez P'tit, Optimisez - N°32 (factorielle)
Bien vu Paul !...Gilles59 a écrit :Paul Tergeist a écrit :Allez plus loin avec le logarithme décimal !!!
.
Ma Casio 602P sait maintenant que 200! = 7.88658E374
et que
400! = 6.40345E868
1000! =4.02391E2567 (en fait 4.023872 ... )
nombres plus qu'astronomiques qui ne représentent rien de concevable. L'univers "ne contient que" 10^80 atomes
[...]
Certes, mais combien de manières de combiner ces atomes ?
3 hommes, 3 demis, un 3a... Magnéto, Serge !
Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67__: A L I E N .
♣ ♦ « Boris », c'était juste Maurice enrhumé. ♥ ♠
Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67__: A L I E N .
♣ ♦ « Boris », c'était juste Maurice enrhumé. ♥ ♠
- charognard
- Fonctionne à 9600 bauds
- Messages : 4412
- Enregistré le : 06 juin 2007 19:28
- Localisation : Indre et loire
- Contact :
Re: Misez P'tit, Optimisez - N°32 (factorielle)
sur G850
2550 double fact(char n){
2560 return n?n*fact(n-1):1;
2570 }
tiré de mon emulateur RPN
2550 double fact(char n){
2560 return n?n*fact(n-1):1;
2570 }
tiré de mon emulateur RPN
Code : Tout sélectionner
10 #define BL printf(" ")
20 #define ENT ent=1
30 double x,y,z,t;
40 char ent=0;
50 main(){
60 unsigned char code,ascii;
70 /**/
80 double val(char*);
90 unsigned int key(unsigned char*,unsigned char*);
100 char* stredit(char str[],unsigned char asc);
110 void calcul();
120 char fonction(unsigned char);
130 void pile(char);
140 void interf();
150 void affpile();
160 /**/
170 angle(0);
180 interf();
190 do{
200 affpile();
210 calcul();
220 do{}while(key(&code,&ascii));
230 }while(1);
240 }
250 /**/
260 double val(char *chain){
270 long double nbre;
280 sscanf(chain,"%Lg",&nbre);
290 return nbre;
300 }
310 /**/
320 unsigned int key(unsigned char* code,unsigned char* ascii){
330 unsigned int touche;
340 touche=call((int)"\xCD\x53\xBE\x6F\xCD\x56\xBE\x67\xC9",0);
350 *code=touche,*ascii=touche>>8;
360 return touche?1:0;
370 }
380 /**/
390 char* stredit(char str[],unsigned char asc){
400 if(asc!=8&strlen(str)<16)
410 str[strlen(str)+1]='\0',str[strlen(str)]=asc;
420 else if(asc==8&strlen(str)>0)
430 str[strlen(str)-1]='\0';
440 return str;
450 }
460 /**/
470 void calcul(){
480 char str[17]="";
490 unsigned char code,ascii,touche,lache=1,pnt=0,expos=0,edit=0,flag=1;
500 affpile();
510 do{
520 touche=key(&code,&ascii);
530 if(touche&lache){
540 switch(ascii){
550 case 8:
560 if(str){
570 strcpy(str,stredit(str,ascii));
580 if(strlen(str)<pnt) pnt=0;
590 if(strlen(str)<expos) expos=0;
600 edit=1;
610 }
620 break;
630 case 46:
640 if(ent) pile(4);
650 if(!pnt){
660 strcpy(str,stredit(str,ascii));
670 pnt=strlen(str);}
680 edit=1;
690 break;
700 case 101:
710 case 69:
720 if(ent) pile(4);
730 if(!expos){
740 strcpy(str,stredit(str,ascii));
750 expos=strlen(str);}
760 edit=1;
770 break;
780 }
790 if(ascii>=48&ascii<=57){
800 if(ent) pile(4);
810 strcpy(str,stredit(str,ascii));
820 edit=1;}
830 if(edit){
840 gotoxy(9,5);BL;
850 gotoxy(9,5);
860 printf("%s ",str);
870 x=val(str),edit=0;
880 }
890 lache=0;
900 } else if(!touche) lache=1;
910 gotoxy(0,3);
920 printf("%d ",code);
930 gotoxy(9,5);
940 }while(fonction(code));
950 }
960 /**/
970 char fonction(unsigned char code){
980 char ret=0;
990 double fact(char);
1000 switch(code){
1010 case 25:
1020 breakpt();
1030 break;
1040 case 31:
1050 ENT;
1060 pile(1);
1070 break;
1080 case 32:
1090 ENT;
1100 pile(-1);
1110 break;
1120 case 33:
1130 x=-x,ENT;
1140 break;
1150 case 34:
1160 ENT;
1170 pile(3);
1180 break;
1190 case 39:
1200 x+=y,ENT;
1210 pile(2);
1220 break;
1230 case 40:
1240 t=z,z=y,y=x,ent=0;
1250 affpile();
1260 break;
1270 case 47:
1280 x=y-x,ENT;
1290 pile(2);
1300 break;
1310 case 55:
1320 x*=y,ENT;
1330 pile(2);
1340 break;
1350 case 59:
1360 if(ent) pile(0);
1370 x=3.141592654,ENT;
1380 break;
1390 case 63:
1400 x=y/x,ENT;
1410 pile(2);
1420 break;
1430 case 67:
1440 if(x>0)
1450 x=sqrt(x),ENT;
1460 break;
1470 case 68:
1480 x*=x,ENT;
1490 break;
1500 case 69:
1510 if(x>0)
1520 x=pow(y,x),ENT;
1530 pile(2);
1540 break;
1550 case 71:
1560 x=1/x,ENT;
1570 break;
1580 case 74:
1590 x=sin(x),ENT;
1600 break;
1610 case 75:
1620 x=cos(x),ENT;
1630 break;
1640 case 76:
1650 x=log(x),ENT;
1660 break;
1670 case 77:
1680 x=log10(x),ENT;
1690 break;
1700 case 78:
1710 x=tan(x),ENT;
1720 break;
1730 case 195:
1740 x=pow(x,(1./3)),ENT;
1750 break;
1760 case 196:
1770 x*=x*x,ENT;
1780 break;
1790 case 199:
1800 if(x>=0&x<70)
1810 x=fact(x),ENT;
1820 break;
1830 case 202:
1840 x=asin(x),ENT;
1850 break;
1860 case 203:
1870 x=acos(x),ENT;
1880 break;
1890 case 204:
1900 x=exp(x),ENT;
1910 break;
1920 case 205:
1930 x=pow(10,x),ENT;
1940 break;
1950 case 206:
1960 x=atan(x),ENT;
1970 break;
1980 default:
1990 ret=1;
2000 if(code) ent=0;
2010 }
2020 return ret;
2030 }
2040 /**/
2050 void pile(char sens){
2060 double m;
2070 switch(sens){
2080 case -1:
2090 m=x,x=t,t=z,z=y,y=m;
2100 break;
2110 case 0:
2120 t=z,z=y,y=x;
2130 break;
2140 case 1:
2150 m=x,x=y,y=z,z=t,t=m;
2160 break;
2170 case 2:
2180 y=z,z=t;
2190 break;
2200 case 3:
2210 m=x,x=y,y=m;
2220 break;
2230 case 4:
2240 pile(0);
2250 x=0,ent=0;
2260 affpile();
2270 }
2280 }
2290 /**/
2300 void interf(){
2310 gotoxy(2,0);
2320 printf("RPN 4 Level emulator");
2330 line(0,0,143,7,2,65535,2);
2340 line(39,8,39,47,0,65535,2);
2350 }
2360 void affpile(){
2370 gotoxy(7,2);
2380 printf("t:");BL;
2390 gotoxy(9,2);
2400 printf("%Lg",t);
2410 gotoxy(7,3);
2420 printf("z:");BL;
2430 gotoxy(9,3);
2440 printf("%Lg",z);
2450 gotoxy(7,4);
2460 printf("y:");BL;
2470 gotoxy(9,4);
2480 printf("%Lg",y);
2490 gotoxy(7,5);
2500 printf("x:");BL;
2510 gotoxy(9,5);
2520 printf("%Lg",x);
2530 }
2540 /**/
2550 double fact(char n){
2560 return n?n*fact(n-1):1;
2570 }
- Paul Tergeist
- Fonctionne à 9600 bauds
- Messages : 2417
- Enregistré le : 15 oct. 2007 15:50
- Localisation : 3ème planète après le soleil
Re: Misez P'tit, Optimisez - N°32 (factorielle)
Ouaou c'est encore du sévère...
Félicitations oryctolagus cuniculus ensanglanté....
Félicitations oryctolagus cuniculus ensanglanté....
Re: Misez P'tit, Optimisez - N°32 (factorielle)
Rien d'original; mais fallait bien tester sur PRIME
EXPORT Fact(n) BEGIN IFTE(n>0,n*Fact(n-1),1); END;
EXPORT Fact(n) BEGIN IFTE(n>0,n*Fact(n-1),1); END;
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
- Paul Tergeist
- Fonctionne à 9600 bauds
- Messages : 2417
- Enregistré le : 15 oct. 2007 15:50
- Localisation : 3ème planète après le soleil
Re: Misez P'tit, Optimisez - N°32 (factorielle)
et les tours de babel ?
Re: Misez P'tit, Optimisez - N°32 (factorielle)
J'ai fait le test sur HP-41
Il faut mettre R02 à zéro. L’algorithme ne fonctionne pas pour 0
Le programme affiche d'abord la puissance de 10 et faire R(RDN) pour afficher le résultat
Il faut mettre R02 à zéro. L’algorithme ne fonctionne pas pour 0
Code : Tout sélectionner
01 LBL FACTO3
02 ENTER^
03 LBL 01
04 LOG
05 ST+ 02
06 LASTX
07 DSE X
08 GTO 01
09 RCL 02
10 RCL 02
11 INT
12 -
13 10^X
14 ENTER^
15 RCL 02
16 INT
17 BEEP