Nombre sans 0
Résolu
Dayvid
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
Dayvid Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Dayvid Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toutes et à tous,
Pour mon premier sujet, je souhaiterais vous demandez votre aide sur un problème qui m'est très compliquée, je suis nul en math et je débute juste dans VB.Net que je trouve superbe !
Je demande pas de faire à ma place, juste de m'aider à savoir comment my prendre pour réaliser se que je souhaiterais faire.
Voici mon problème qui est un vrais casse tête:
Je voudrait convertir un nombre quelconque depuis la base 10 (0123456789)
vers la base 9 mais sans le 0 (123456789)...
De plus, je souhaiterais que ceci soit réversible !
Voici un mini échantillon de nombre en base 10 convertie en base 9 sans 0:
Je voudrait faire cette algorithme en VB.Net, je souhaiterais également que cet
algorithme soit le plus efficace possible étang donner que celui-ci va devoir convertir des millions de nombres en le moins de temps possible, les nombres serons toujours positif et serons parfois très grand, minimum un Int64, mais si je peut gérer les BigInteger, se serais encore bien mieux !
Pourquoi je veux faire ça ?!
Je ne souhaite pas en dire d'avantage sur le sujet car je souhaiterais garder ça
secret pour le moment et en espèrent sincèrement que vous ne m'en tiendrait pas rigueur.
Je vous remercie par avance de votre attention.
Cordialement.
Le respect n'est pas une option mais une obligation !
Restons cool: politesse, patience et indulgence sont indispensable !
Pour mon premier sujet, je souhaiterais vous demandez votre aide sur un problème qui m'est très compliquée, je suis nul en math et je débute juste dans VB.Net que je trouve superbe !
Je demande pas de faire à ma place, juste de m'aider à savoir comment my prendre pour réaliser se que je souhaiterais faire.
Voici mon problème qui est un vrais casse tête:
Je voudrait convertir un nombre quelconque depuis la base 10 (0123456789)
vers la base 9 mais sans le 0 (123456789)...
De plus, je souhaiterais que ceci soit réversible !
Voici un mini échantillon de nombre en base 10 convertie en base 9 sans 0:
1 = 1 2 = 2 3 = 3 4 = 4 5 = 5 6 = 6 7 = 7 8 = 8 9 = 9 10 = 11 11 = 12 12 = 13 13 = 14 14 = 15 15 = 16 16 = 17 17 = 18 18 = 19 19 = 21 20 = 22 21 = 23 22 = 24 23 = 25 24 = 26 25 = 27 26 = 28 27 = 29 28 = 31 29 = 32 30 = 33 31 = 34 32 = 35 33 = 36 34 = 37 35 = 38 36 = 39 37 = 41 38 = 42 39 = 43 40 = 44 41 = 45 42 = 46 43 = 47 44 = 48 45 = 49 46 = 51 47 = 52 48 = 53 49 = 54 50 = 55 51 = 56 52 = 57 53 = 58 54 = 59 55 = 61 56 = 62 57 = 63 58 = 64 59 = 65 60 = 66 61 = 67 62 = 68 63 = 69 64 = 71 65 = 72 66 = 73 67 = 74 68 = 75 69 = 76 70 = 77 71 = 78 72 = 79 73 = 81 74 = 82 75 = 83 76 = 84 77 = 85 78 = 86 79 = 87 80 = 88 81 = 89 82 = 91 83 = 92 84 = 93 85 = 94 86 = 95 87 = 96 88 = 97 89 = 98 90 = 99 91 = 111 92 = 112 93 = 113 94 = 114 95 = 115 96 = 116 97 = 117 98 = 118 99 = 119 100 = 121 101 = 122 102 = 123 103 = 124 104 = 125 105 = 126 106 = 127 107 = 128 108 = 129 109 = 131 110 = 132 111 = 133 112 = 134 113 = 135 114 = 136 115 = 137 116 = 138 117 = 139 118 = 141 119 = 142 120 = 143 121 = 144 122 = 145 123 = 146 124 = 147 125 = 148 126 = 149 127 = 151 128 = 152 129 = 153 130 = 154 131 = 155 132 = 156 133 = 157 134 = 158 135 = 159 136 = 161 137 = 162 138 = 163 139 = 164 140 = 165 141 = 166 142 = 167 143 = 168 144 = 169 145 = 171 146 = 172 147 = 173 148 = 174 149 = 175 150 = 176 151 = 177 152 = 178 153 = 179 154 = 181 155 = 182 156 = 183 157 = 184 158 = 185 159 = 186 160 = 187 161 = 188 162 = 189 163 = 191 164 = 192 165 = 193 166 = 194 167 = 195 168 = 196 169 = 197 170 = 198 171 = 199 172 = 211 173 = 212 174 = 213 175 = 214 176 = 215 177 = 216 178 = 217 179 = 218 180 = 219 181 = 221 182 = 222 183 = 223 184 = 224 185 = 225 186 = 226 187 = 227 188 = 228 189 = 229 190 = 231 191 = 232 192 = 233 193 = 234 194 = 235 195 = 236 196 = 237 197 = 238 198 = 239 199 = 241 200 = 242 201 = 243 202 = 244 203 = 245 204 = 246 205 = 247 206 = 248 207 = 249 208 = 251 209 = 252 210 = 253 211 = 254 212 = 255 213 = 256 214 = 257 215 = 258 216 = 259 217 = 261 218 = 262 219 = 263 220 = 264 221 = 265 222 = 266 223 = 267 224 = 268 225 = 269 226 = 271 227 = 272 228 = 273 229 = 274 230 = 275 231 = 276 232 = 277 233 = 278 234 = 279 235 = 281 236 = 282 237 = 283 238 = 284 239 = 285 240 = 286 241 = 287 242 = 288 243 = 289 244 = 291 245 = 292 246 = 293 247 = 294 248 = 295 249 = 296 250 = 297 251 = 298 252 = 299 253 = 311 254 = 312 255 = 313 256 = 314 257 = 315 258 = 316 259 = 317 260 = 318 261 = 319 262 = 321 263 = 322 264 = 323 265 = 324 266 = 325 267 = 326 268 = 327 269 = 328 270 = 329 271 = 331 272 = 332 273 = 333 274 = 334 275 = 335 276 = 336 277 = 337 278 = 338 279 = 339 280 = 341 281 = 342 282 = 343 283 = 344 284 = 345 285 = 346 286 = 347 287 = 348 288 = 349 289 = 351 290 = 352 291 = 353 292 = 354 293 = 355 294 = 356 295 = 357 296 = 358 297 = 359 298 = 361 299 = 362 300 = 363 301 = 364 302 = 365 303 = 366 304 = 367 305 = 368 306 = 369 307 = 371 308 = 372 309 = 373 310 = 374 311 = 375 312 = 376 313 = 377 314 = 378 315 = 379 316 = 381 317 = 382 318 = 383 319 = 384 320 = 385 321 = 386 322 = 387 323 = 388 324 = 389 325 = 391 326 = 392 327 = 393 328 = 394 329 = 395 330 = 396 331 = 397 332 = 398 333 = 399 334 = 411 335 = 412 336 = 413 337 = 414 338 = 415 339 = 416 340 = 417 341 = 418 342 = 419 343 = 421 344 = 422 345 = 423 346 = 424 347 = 425 348 = 426 349 = 427 350 = 428 351 = 429 352 = 431 353 = 432 354 = 433 355 = 434 356 = 435 357 = 436 358 = 437 359 = 438 360 = 439 361 = 441 362 = 442 363 = 443 364 = 444 365 = 445 366 = 446 367 = 447 368 = 448 369 = 449 370 = 451 371 = 452 372 = 453 373 = 454 374 = 455 375 = 456 376 = 457 377 = 458 378 = 459 379 = 461 380 = 462 381 = 463 382 = 464 383 = 465 384 = 466 385 = 467 386 = 468 387 = 469 388 = 471 389 = 472 390 = 473 391 = 474 392 = 475 393 = 476 394 = 477 395 = 478 396 = 479 397 = 481 398 = 482 399 = 483 400 = 484 401 = 485 402 = 486 403 = 487 404 = 488 405 = 489 406 = 491 407 = 492 408 = 493 409 = 494 410 = 495 411 = 496 412 = 497 413 = 498 414 = 499 415 = 511 416 = 512 417 = 513 418 = 514 419 = 515 420 = 516 421 = 517 422 = 518 423 = 519 424 = 521 425 = 522 426 = 523 427 = 524 428 = 525 429 = 526 430 = 527 431 = 528 432 = 529 433 = 531 434 = 532 435 = 533 436 = 534 437 = 535 438 = 536 439 = 537 440 = 538 441 = 539 442 = 541 443 = 542 444 = 543 445 = 544 446 = 545 447 = 546 448 = 547 449 = 548 450 = 549 451 = 551 452 = 552 453 = 553 454 = 554 455 = 555 456 = 556 457 = 557 458 = 558 459 = 559 460 = 561 461 = 562 462 = 563 463 = 564 464 = 565 465 = 566 466 = 567 467 = 568 468 = 569 469 = 571 470 = 572 471 = 573 472 = 574 473 = 575 474 = 576 475 = 577 476 = 578 477 = 579 478 = 581 479 = 582 480 = 583 481 = 584 482 = 585 483 = 586 484 = 587 485 = 588 486 = 589 487 = 591 488 = 592 489 = 593 490 = 594 491 = 595 492 = 596 493 = 597 494 = 598 495 = 599 496 = 611 497 = 612 498 = 613 499 = 614 500 = 615 501 = 616 502 = 617 503 = 618 504 = 619 505 = 621 506 = 622 507 = 623 508 = 624 509 = 625 510 = 626 511 = 627 512 = 628 513 = 629 514 = 631 515 = 632 516 = 633 517 = 634 518 = 635 519 = 636 520 = 637 521 = 638 522 = 639 523 = 641 524 = 642 525 = 643 526 = 644 527 = 645 528 = 646 529 = 647 530 = 648 531 = 649 532 = 651 533 = 652 534 = 653 535 = 654 536 = 655 537 = 656 538 = 657 539 = 658 540 = 659 541 = 661 542 = 662 543 = 663 544 = 664 545 = 665 546 = 666 547 = 667 548 = 668 549 = 669 550 = 671 551 = 672 552 = 673 553 = 674 554 = 675 555 = 676 556 = 677 557 = 678 558 = 679 559 = 681 560 = 682 561 = 683 562 = 684 563 = 685 564 = 686 565 = 687 566 = 688 567 = 689 568 = 691 569 = 692 570 = 693 571 = 694 572 = 695 573 = 696 574 = 697 575 = 698 576 = 699 577 = 711 578 = 712 579 = 713 580 = 714 581 = 715 582 = 716 583 = 717 584 = 718 585 = 719 586 = 721 587 = 722 588 = 723 589 = 724 590 = 725 591 = 726 592 = 727 593 = 728 594 = 729 595 = 731 596 = 732 597 = 733 598 = 734 599 = 735 600 = 736 601 = 737 602 = 738 603 = 739 604 = 741 605 = 742 606 = 743 607 = 744 608 = 745 609 = 746 610 = 747 611 = 748 612 = 749 613 = 751 614 = 752 615 = 753 616 = 754 617 = 755 618 = 756 619 = 757 620 = 758 621 = 759 622 = 761 623 = 762 624 = 763 625 = 764 626 = 765 627 = 766 628 = 767 629 = 768 630 = 769 631 = 771 632 = 772 633 = 773 634 = 774 635 = 775 636 = 776 637 = 777 638 = 778 639 = 779 640 = 781 641 = 782 642 = 783 643 = 784 644 = 785 645 = 786 646 = 787 647 = 788 648 = 789 649 = 791 650 = 792 651 = 793 652 = 794 653 = 795 654 = 796 655 = 797 656 = 798 657 = 799 658 = 811 659 = 812 660 = 813 661 = 814 662 = 815 663 = 816 664 = 817 665 = 818 666 = 819 667 = 821 668 = 822 669 = 823 670 = 824 671 = 825 672 = 826 673 = 827 674 = 828 675 = 829 676 = 831 677 = 832 678 = 833 679 = 834 680 = 835 681 = 836 682 = 837 683 = 838 684 = 839 685 = 841 686 = 842 687 = 843 688 = 844 689 = 845 690 = 846 691 = 847 692 = 848 693 = 849 694 = 851 695 = 852 696 = 853 697 = 854 698 = 855 699 = 856 700 = 857 701 = 858 702 = 859 703 = 861 704 = 862 705 = 863 706 = 864 707 = 865 708 = 866 709 = 867 710 = 868 711 = 869 712 = 871 713 = 872 714 = 873 715 = 874 716 = 875 717 = 876 718 = 877 719 = 878 720 = 879 721 = 881 722 = 882 723 = 883 724 = 884 725 = 885 726 = 886 727 = 887 728 = 888 729 = 889 730 = 891 731 = 892 732 = 893 733 = 894 734 = 895 735 = 896 736 = 897 737 = 898 738 = 899 739 = 911 740 = 912 741 = 913 742 = 914 743 = 915 744 = 916 745 = 917 746 = 918 747 = 919 748 = 921 749 = 922 750 = 923 751 = 924 752 = 925 753 = 926 754 = 927 755 = 928 756 = 929 757 = 931 758 = 932 759 = 933 760 = 934 761 = 935 762 = 936 763 = 937 764 = 938 765 = 939 766 = 941 767 = 942 768 = 943 769 = 944 770 = 945 771 = 946 772 = 947 773 = 948 774 = 949 775 = 951 776 = 952 777 = 953 778 = 954 779 = 955 780 = 956 781 = 957 782 = 958 783 = 959 784 = 961 785 = 962 786 = 963 787 = 964 788 = 965 789 = 966 790 = 967 791 = 968 792 = 969 793 = 971 794 = 972 795 = 973 796 = 974 797 = 975 798 = 976 799 = 977 800 = 978 801 = 979 802 = 981 803 = 982 804 = 983 805 = 984 806 = 985 807 = 986 808 = 987 809 = 988 810 = 989 811 = 991 812 = 992 813 = 993 814 = 994 815 = 995 816 = 996 817 = 997 818 = 998 819 = 999 820 = 1111 821 = 1112 822 = 1113 823 = 1114 824 = 1115 825 = 1116 826 = 1117 827 = 1118 828 = 1119 829 = 1121 830 = 1122 831 = 1123 832 = 1124 833 = 1125 834 = 1126 835 = 1127 836 = 1128 837 = 1129 838 = 1131 839 = 1132 840 = 1133 841 = 1134 842 = 1135 843 = 1136 844 = 1137 845 = 1138 846 = 1139 847 = 1141 848 = 1142 849 = 1143 850 = 1144 851 = 1145 852 = 1146 853 = 1147 854 = 1148 855 = 1149 856 = 1151 857 = 1152 858 = 1153 859 = 1154 860 = 1155 861 = 1156 862 = 1157 863 = 1158 864 = 1159 865 = 1161 866 = 1162 867 = 1163 868 = 1164 869 = 1165 870 = 1166 871 = 1167 872 = 1168 873 = 1169 874 = 1171 875 = 1172 876 = 1173 877 = 1174 878 = 1175 879 = 1176 880 = 1177 881 = 1178 882 = 1179 883 = 1181 884 = 1182 885 = 1183 886 = 1184 887 = 1185 888 = 1186 889 = 1187 890 = 1188 891 = 1189 892 = 1191 893 = 1192 894 = 1193 895 = 1194 896 = 1195 897 = 1196 898 = 1197 899 = 1198 900 = 1199 901 = 1211 902 = 1212 903 = 1213 904 = 1214 905 = 1215 906 = 1216 907 = 1217 908 = 1218 909 = 1219 910 = 1221 911 = 1222 912 = 1223 913 = 1224 914 = 1225 915 = 1226 916 = 1227 917 = 1228 918 = 1229 919 = 1231 920 = 1232 921 = 1233 922 = 1234 923 = 1235 924 = 1236 925 = 1237 926 = 1238 927 = 1239 928 = 1241 929 = 1242 930 = 1243 931 = 1244 932 = 1245 933 = 1246 934 = 1247 935 = 1248 936 = 1249 937 = 1251 938 = 1252 939 = 1253 940 = 1254 941 = 1255 942 = 1256 943 = 1257 944 = 1258 945 = 1259 946 = 1261 947 = 1262 948 = 1263 949 = 1264 950 = 1265 951 = 1266 952 = 1267 953 = 1268 954 = 1269 955 = 1271 956 = 1272 957 = 1273 958 = 1274 959 = 1275 960 = 1276 961 = 1277 962 = 1278 963 = 1279 964 = 1281 965 = 1282 966 = 1283 967 = 1284 968 = 1285 969 = 1286 970 = 1287 971 = 1288 972 = 1289 973 = 1291 974 = 1292 975 = 1293 976 = 1294 977 = 1295 978 = 1296 979 = 1297 980 = 1298 981 = 1299 982 = 1311 983 = 1312 984 = 1313 985 = 1314 986 = 1315 987 = 1316 988 = 1317 989 = 1318 990 = 1319 991 = 1321 992 = 1322 993 = 1323 994 = 1324 995 = 1325 996 = 1326 997 = 1327 998 = 1328 999 = 1329 1000 = 1331 1001 = 1332 1002 = 1333 1003 = 1334 1004 = 1335 1005 = 1336 1006 = 1337 1007 = 1338 1008 = 1339 1009 = 1341 1010 = 1342 1011 = 1343 1012 = 1344 1013 = 1345 1014 = 1346 1015 = 1347 1016 = 1348 1017 = 1349 1018 = 1351 1019 = 1352 1020 = 1353 1021 = 1354 1022 = 1355 1023 = 1356 1024 = 1357 1025 = 1358 1026 = 1359 1027 = 1361 1028 = 1362 1029 = 1363 1030 = 1364 1031 = 1365 1032 = 1366 1033 = 1367 1034 = 1368 1035 = 1369 1036 = 1371 1037 = 1372 1038 = 1373 1039 = 1374 1040 = 1375 1041 = 1376 1042 = 1377 1043 = 1378 1044 = 1379 1045 = 1381 1046 = 1382 1047 = 1383 1048 = 1384 1049 = 1385 1050 = 1386 1051 = 1387 1052 = 1388 1053 = 1389 1054 = 1391 1055 = 1392 1056 = 1393 1057 = 1394 1058 = 1395 1059 = 1396 1060 = 1397 1061 = 1398 1062 = 1399 1063 = 1411 1064 = 1412 1065 = 1413 1066 = 1414 1067 = 1415 1068 = 1416 1069 = 1417 1070 = 1418 1071 = 1419 1072 = 1421 1073 = 1422 1074 = 1423 1075 = 1424 1076 = 1425 1077 = 1426 1078 = 1427 1079 = 1428 1080 = 1429 1081 = 1431 1082 = 1432 1083 = 1433 1084 = 1434 1085 = 1435 1086 = 1436 1087 = 1437 1088 = 1438 1089 = 1439 1090 = 1441 1091 = 1442 1092 = 1443 1093 = 1444 1094 = 1445 1095 = 1446 1096 = 1447 1097 = 1448 1098 = 1449 1099 = 1451 1100 = 1452 1101 = 1453 1102 = 1454 1103 = 1455 1104 = 1456 1105 = 1457 1106 = 1458 1107 = 1459 1108 = 1461 1109 = 1462 1110 = 1463 1111 = 1464 1112 = 1465 1113 = 1466 1114 = 1467 1115 = 1468 1116 = 1469 1117 = 1471 1118 = 1472 1119 = 1473 1120 = 1474 1121 = 1475 1122 = 1476 1123 = 1477 1124 = 1478 1125 = 1479 1126 = 1481 1127 = 1482 1128 = 1483 1129 = 1484 1130 = 1485 1131 = 1486 1132 = 1487 1133 = 1488 1134 = 1489 1135 = 1491 1136 = 1492 1137 = 1493 1138 = 1494 1139 = 1495 1140 = 1496 1141 = 1497 1142 = 1498 1143 = 1499 1144 = 1511 1145 = 1512 1146 = 1513 1147 = 1514 1148 = 1515 1149 = 1516 1150 = 1517 1151 = 1518 1152 = 1519 1153 = 1521 1154 = 1522 1155 = 1523 1156 = 1524 1157 = 1525 1158 = 1526 1159 = 1527 1160 = 1528 1161 = 1529 1162 = 1531 1163 = 1532 1164 = 1533 1165 = 1534 1166 = 1535 1167 = 1536 1168 = 1537 1169 = 1538 1170 = 1539 1171 = 1541 1172 = 1542 1173 = 1543 1174 = 1544 1175 = 1545 1176 = 1546 1177 = 1547 1178 = 1548 1179 = 1549 1180 = 1551 1181 = 1552 1182 = 1553 1183 = 1554 1184 = 1555 1185 = 1556 1186 = 1557 1187 = 1558 1188 = 1559 1189 = 1561 1190 = 1562 1191 = 1563 1192 = 1564 1193 = 1565 1194 = 1566 1195 = 1567 1196 = 1568 1197 = 1569 1198 = 1571 1199 = 1572 1200 = 1573 1201 = 1574 1202 = 1575 1203 = 1576 1204 = 1577 1205 = 1578 1206 = 1579 1207 = 1581 1208 = 1582 1209 = 1583 1210 = 1584 1211 = 1585 1212 = 1586 1213 = 1587 1214 = 1588 1215 = 1589 1216 = 1591 1217 = 1592 1218 = 1593 1219 = 1594 1220 = 1595 1221 = 1596 1222 = 1597 1223 = 1598 1224 = 1599 1225 = 1611 1226 = 1612 1227 = 1613 1228 = 1614 1229 = 1615 1230 = 1616 1231 = 1617 1232 = 1618 1233 = 1619 1234 = 1621 1235 = 1622 1236 = 1623 1237 = 1624 1238 = 1625 1239 = 1626 1240 = 1627 1241 = 1628 1242 = 1629 1243 = 1631 1244 = 1632 1245 = 1633 1246 = 1634 1247 = 1635 1248 = 1636 1249 = 1637 1250 = 1638 1251 = 1639 1252 = 1641 1253 = 1642 1254 = 1643 1255 = 1644 1256 = 1645 1257 = 1646 1258 = 1647 1259 = 1648 1260 = 1649 1261 = 1651 1262 = 1652 1263 = 1653 1264 = 1654 1265 = 1655 1266 = 1656 1267 = 1657 1268 = 1658 1269 = 1659 1270 = 1661 1271 = 1662 1272 = 1663 1273 = 1664 1274 = 1665 1275 = 1666 1276 = 1667 1277 = 1668 1278 = 1669 1279 = 1671 1280 = 1672 1281 = 1673 1282 = 1674 1283 = 1675 1284 = 1676 1285 = 1677 1286 = 1678 1287 = 1679 1288 = 1681 1289 = 1682 1290 = 1683 1291 = 1684 1292 = 1685 1293 = 1686 1294 = 1687 1295 = 1688 1296 = 1689 1297 = 1691 1298 = 1692 1299 = 1693 1300 = 1694 1301 = 1695 1302 = 1696 1303 = 1697 1304 = 1698 1305 = 1699 1306 = 1711 1307 = 1712 1308 = 1713 1309 = 1714 1310 = 1715 1311 = 1716 1312 = 1717 1313 = 1718 1314 = 1719 1315 = 1721 1316 = 1722 1317 = 1723 1318 = 1724 1319 = 1725 1320 = 1726 1321 = 1727 1322 = 1728 1323 = 1729 1324 = 1731 1325 = 1732 1326 = 1733 1327 = 1734 1328 = 1735 1329 = 1736 1330 = 1737 1331 = 1738 1332 = 1739 1333 = 1741 1334 = 1742 1335 = 1743 1336 = 1744 1337 = 1745 1338 = 1746 1339 = 1747 1340 = 1748 1341 = 1749 1342 = 1751 1343 = 1752 1344 = 1753 1345 = 1754 1346 = 1755 1347 = 1756 1348 = 1757 1349 = 1758 1350 = 1759 1351 = 1761 1352 = 1762 1353 = 1763 1354 = 1764 1355 = 1765 1356 = 1766 1357 = 1767 1358 = 1768 1359 = 1769 1360 = 1771 1361 = 1772 1362 = 1773 1363 = 1774 1364 = 1775 1365 = 1776 1366 = 1777 1367 = 1778 1368 = 1779 1369 = 1781 1370 = 1782 1371 = 1783 1372 = 1784 1373 = 1785 1374 = 1786 1375 = 1787 1376 = 1788 1377 = 1789 1378 = 1791 1379 = 1792 1380 = 1793 1381 = 1794 1382 = 1795 1383 = 1796 1384 = 1797 1385 = 1798 1386 = 1799 1387 = 1811 1388 = 1812 1389 = 1813 1390 = 1814 1391 = 1815 1392 = 1816 1393 = 1817 1394 = 1818 1395 = 1819 1396 = 1821 1397 = 1822 1398 = 1823 1399 = 1824 1400 = 1825 1401 = 1826 1402 = 1827 1403 = 1828 1404 = 1829 1405 = 1831 1406 = 1832 1407 = 1833 1408 = 1834 1409 = 1835 1410 = 1836 1411 = 1837 1412 = 1838 1413 = 1839 1414 = 1841 1415 = 1842 1416 = 1843 1417 = 1844 1418 = 1845 1419 = 1846 1420 = 1847 1421 = 1848 1422 = 1849 1423 = 1851 1424 = 1852 1425 = 1853 1426 = 1854 1427 = 1855 1428 = 1856 1429 = 1857 1430 = 1858 1431 = 1859 1432 = 1861 1433 = 1862 1434 = 1863 1435 = 1864 1436 = 1865 1437 = 1866 1438 = 1867 1439 = 1868 1440 = 1869 1441 = 1871 1442 = 1872 1443 = 1873 1444 = 1874 1445 = 1875 1446 = 1876 1447 = 1877 1448 = 1878 1449 = 1879 1450 = 1881 1451 = 1882 1452 = 1883 1453 = 1884 1454 = 1885 1455 = 1886 1456 = 1887 1457 = 1888 1458 = 1889 1459 = 1891 1460 = 1892 1461 = 1893 1462 = 1894 1463 = 1895 1464 = 1896 1465 = 1897 1466 = 1898 1467 = 1899 1468 = 1911 1469 = 1912 1470 = 1913 1471 = 1914 1472 = 1915 1473 = 1916 1474 = 1917 1475 = 1918 1476 = 1919 1477 = 1921 1478 = 1922 1479 = 1923 1480 = 1924 1481 = 1925 1482 = 1926 1483 = 1927 1484 = 1928 1485 = 1929 1486 = 1931 1487 = 1932 1488 = 1933 1489 = 1934 1490 = 1935 1491 = 1936 1492 = 1937 1493 = 1938 1494 = 1939 1495 = 1941 1496 = 1942 1497 = 1943 1498 = 1944 1499 = 1945 1500 = 1946 1501 = 1947 1502 = 1948 1503 = 1949 1504 = 1951 1505 = 1952 1506 = 1953 1507 = 1954 1508 = 1955 1509 = 1956 1510 = 1957 1511 = 1958 1512 = 1959 1513 = 1961 1514 = 1962 1515 = 1963 1516 = 1964 1517 = 1965 1518 = 1966 1519 = 1967 1520 = 1968 1521 = 1969 1522 = 1971 1523 = 1972 1524 = 1973 1525 = 1974 1526 = 1975 1527 = 1976 1528 = 1977 1529 = 1978 1530 = 1979 1531 = 1981 1532 = 1982 1533 = 1983 1534 = 1984 1535 = 1985 1536 = 1986 1537 = 1987 1538 = 1988 1539 = 1989 1540 = 1991 1541 = 1992 1542 = 1993 1543 = 1994 1544 = 1995 1545 = 1996 1546 = 1997 1547 = 1998 1548 = 1999 1549 = 2111 1550 = 2112 1551 = 2113 1552 = 2114 1553 = 2115 1554 = 2116 1555 = 2117 1556 = 2118 1557 = 2119 1558 = 2121 1559 = 2122 1560 = 2123 1561 = 2124 1562 = 2125 1563 = 2126 1564 = 2127 1565 = 2128 1566 = 2129 1567 = 2131 1568 = 2132 1569 = 2133 1570 = 2134 1571 = 2135 1572 = 2136 1573 = 2137 1574 = 2138 1575 = 2139 1576 = 2141 1577 = 2142 1578 = 2143 1579 = 2144 1580 = 2145 1581 = 2146 1582 = 2147 1583 = 2148 1584 = 2149 1585 = 2151 1586 = 2152 1587 = 2153 1588 = 2154 1589 = 2155 1590 = 2156 1591 = 2157 1592 = 2158 1593 = 2159 1594 = 2161 1595 = 2162 1596 = 2163 1597 = 2164 1598 = 2165 1599 = 2166 1600 = 2167 1601 = 2168 1602 = 2169 1603 = 2171 1604 = 2172 1605 = 2173 1606 = 2174 1607 = 2175 1608 = 2176 1609 = 2177 1610 = 2178 1611 = 2179 1612 = 2181 1613 = 2182 1614 = 2183 1615 = 2184 1616 = 2185 1617 = 2186 1618 = 2187 1619 = 2188 1620 = 2189 1621 = 2191 1622 = 2192 1623 = 2193 1624 = 2194 1625 = 2195 1626 = 2196 1627 = 2197 1628 = 2198 1629 = 2199 1630 = 2211 1631 = 2212 1632 = 2213 1633 = 2214 1634 = 2215 1635 = 2216 1636 = 2217 1637 = 2218 1638 = 2219 1639 = 2221 1640 = 2222 1641 = 2223 1642 = 2224 1643 = 2225 1644 = 2226 1645 = 2227 1646 = 2228 1647 = 2229 1648 = 2231 1649 = 2232 1650 = 2233 1651 = 2234 1652 = 2235 1653 = 2236 1654 = 2237 1655 = 2238 1656 = 2239 1657 = 2241 1658 = 2242 1659 = 2243 1660 = 2244 1661 = 2245 1662 = 2246 1663 = 2247 1664 = 2248 1665 = 2249 1666 = 2251 1667 = 2252 1668 = 2253 1669 = 2254 1670 = 2255 1671 = 2256 1672 = 2257 1673 = 2258 1674 = 2259 1675 = 2261 1676 = 2262 1677 = 2263 1678 = 2264 1679 = 2265 1680 = 2266 1681 = 2267 1682 = 2268 1683 = 2269 1684 = 2271 1685 = 2272 1686 = 2273 1687 = 2274 1688 = 2275 1689 = 2276 1690 = 2277 1691 = 2278 1692 = 2279 1693 = 2281 1694 = 2282 1695 = 2283 1696 = 2284 1697 = 2285 1698 = 2286 1699 = 2287 1700 = 2288 1701 = 2289 1702 = 2291 1703 = 2292 1704 = 2293 1705 = 2294 1706 = 2295 1707 = 2296 1708 = 2297 1709 = 2298 1710 = 2299 1711 = 2311 1712 = 2312 1713 = 2313 1714 = 2314 1715 = 2315 1716 = 2316 1717 = 2317 1718 = 2318 1719 = 2319 1720 = 2321 1721 = 2322 1722 = 2323 1723 = 2324 1724 = 2325 1725 = 2326 1726 = 2327 1727 = 2328 1728 = 2329 1729 = 2331 1730 = 2332 1731 = 2333 1732 = 2334 1733 = 2335 1734 = 2336 1735 = 2337 1736 = 2338 1737 = 2339 1738 = 2341 1739 = 2342 1740 = 2343 1741 = 2344 1742 = 2345 1743 = 2346 1744 = 2347 1745 = 2348 1746 = 2349 1747 = 2351 1748 = 2352 1749 = 2353 1750 = 2354 1751 = 2355 1752 = 2356 1753 = 2357 1754 = 2358 1755 = 2359 1756 = 2361 1757 = 2362 1758 = 2363 1759 = 2364 1760 = 2365 1761 = 2366 1762 = 2367 1763 = 2368 1764 = 2369 1765 = 2371 1766 = 2372 1767 = 2373 1768 = 2374 1769 = 2375 1770 = 2376 1771 = 2377 1772 = 2378 1773 = 2379 1774 = 2381 1775 = 2382 1776 = 2383 1777 = 2384 1778 = 2385 1779 = 2386 1780 = 2387 1781 = 2388 1782 = 2389 1783 = 2391 1784 = 2392 1785 = 2393 1786 = 2394 1787 = 2395 1788 = 2396 1789 = 2397 1790 = 2398 1791 = 2399 1792 = 2411 1793 = 2412 1794 = 2413 1795 = 2414 1796 = 2415 1797 = 2416 1798 = 2417 1799 = 2418 1800 = 2419 1801 = 2421 1802 = 2422 1803 = 2423 1804 = 2424 1805 = 2425 1806 = 2426 1807 = 2427 1808 = 2428 1809 = 2429 1810 = 2431 1811 = 2432 1812 = 2433 1813 = 2434 1814 = 2435 1815 = 2436 1816 = 2437 1817 = 2438 1818 = 2439 1819 = 2441 1820 = 2442 1821 = 2443 1822 = 2444 1823 = 2445 1824 = 2446 1825 = 2447 1826 = 2448 1827 = 2449 1828 = 2451 1829 = 2452 1830 = 2453 1831 = 2454 1832 = 2455 1833 = 2456 1834 = 2457 1835 = 2458 1836 = 2459 1837 = 2461 1838 = 2462 1839 = 2463 1840 = 2464 1841 = 2465 1842 = 2466 1843 = 2467 1844 = 2468 1845 = 2469 1846 = 2471 1847 = 2472 1848 = 2473 1849 = 2474 1850 = 2475 1851 = 2476 1852 = 2477 1853 = 2478 1854 = 2479 1855 = 2481 1856 = 2482 1857 = 2483 1858 = 2484 1859 = 2485 1860 = 2486 1861 = 2487 1862 = 2488 1863 = 2489 1864 = 2491 1865 = 2492 1866 = 2493 1867 = 2494 1868 = 2495 1869 = 2496 1870 = 2497 1871 = 2498 1872 = 2499 1873 = 2511 1874 = 2512 1875 = 2513 1876 = 2514 1877 = 2515 1878 = 2516 1879 = 2517 1880 = 2518 1881 = 2519 1882 = 2521 1883 = 2522 1884 = 2523 1885 = 2524 1886 = 2525 1887 = 2526 1888 = 2527 1889 = 2528 1890 = 2529 1891 = 2531 1892 = 2532 1893 = 2533 1894 = 2534 1895 = 2535 1896 = 2536 1897 = 2537 1898 = 2538 1899 = 2539 1900 = 2541 1901 = 2542 1902 = 2543 1903 = 2544 1904 = 2545 1905 = 2546 1906 = 2547 1907 = 2548 1908 = 2549 1909 = 2551 1910 = 2552 1911 = 2553 1912 = 2554 1913 = 2555 1914 = 2556 1915 = 2557 1916 = 2558 1917 = 2559 1918 = 2561 1919 = 2562 1920 = 2563 1921 = 2564 1922 = 2565 1923 = 2566 1924 = 2567 1925 = 2568 1926 = 2569 1927 = 2571 1928 = 2572 1929 = 2573 1930 = 2574 1931 = 2575 1932 = 2576 1933 = 2577 1934 = 2578 1935 = 2579 1936 = 2581 1937 = 2582 1938 = 2583 1939 = 2584 1940 = 2585 1941 = 2586 1942 = 2587 1943 = 2588 1944 = 2589 1945 = 2591 1946 = 2592 1947 = 2593 1948 = 2594 1949 = 2595 1950 = 2596 1951 = 2597 1952 = 2598 1953 = 2599 1954 = 2611 1955 = 2612 1956 = 2613 1957 = 2614 1958 = 2615 1959 = 2616 1960 = 2617 1961 = 2618 1962 = 2619 1963 = 2621 1964 = 2622 1965 = 2623 1966 = 2624 1967 = 2625 1968 = 2626 1969 = 2627 1970 = 2628 1971 = 2629 1972 = 2631 1973 = 2632 1974 = 2633 1975 = 2634 1976 = 2635 1977 = 2636 1978 = 2637 1979 = 2638 1980 = 2639 1981 = 2641 1982 = 2642 1983 = 2643 1984 = 2644 1985 = 2645 1986 = 2646 1987 = 2647 1988 = 2648 1989 = 2649 1990 = 2651 1991 = 2652 1992 = 2653 1993 = 2654 1994 = 2655 1995 = 2656 1996 = 2657 1997 = 2658 1998 = 2659 1999 = 2661 2000 = 2662 2001 = 2663 2002 = 2664 2003 = 2665 2004 = 2666 ...
Je voudrait faire cette algorithme en VB.Net, je souhaiterais également que cet
algorithme soit le plus efficace possible étang donner que celui-ci va devoir convertir des millions de nombres en le moins de temps possible, les nombres serons toujours positif et serons parfois très grand, minimum un Int64, mais si je peut gérer les BigInteger, se serais encore bien mieux !
Pourquoi je veux faire ça ?!
Je ne souhaite pas en dire d'avantage sur le sujet car je souhaiterais garder ça
secret pour le moment et en espèrent sincèrement que vous ne m'en tiendrait pas rigueur.
Je vous remercie par avance de votre attention.
Cordialement.
Le respect n'est pas une option mais une obligation !
Restons cool: politesse, patience et indulgence sont indispensable !
A voir également:
- Nombre sans 0
- Afficher le 0 devant un nombre dans excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Remettre a 0 un pc - Guide
- Ascii nombre de caractères - Guide
16 réponses
Je ne parle pas VB.NET, alors j'ai fait un code Java, mais j'ai utilisé des choses très simples, qui se retrouvent dans la plupart des langages...
Voici comment passer de la base 10 à l'écriture sans 0.
Ce n'est pas vraiment optimisé, mais ce n'est pas très lourd non plus...
Remarque : ce code est correct pour n'importe quel entier, du plus petit au plus grand, et est tout à fait transposable à des BigInteger.
Pour l'algorithme dans l'autre sens il faut enlever toutes les retenues que l'on a ajouté ici, en faisant un raisonnement comparable.
Voici comment passer de la base 10 à l'écriture sans 0.
Ce n'est pas vraiment optimisé, mais ce n'est pas très lourd non plus...
public static long transformer(long entier) { // À toutes les dizaines on est décalé d'une unité, ça donne une retenue long retenue = (entier-1)/9; // on ajoute la retenue au résultat long resultat = entier+retenue; // Pour l'instant on n'a modifié que les unités ajoutés toutes les dizaines, il faut aussi ajouter tous les blocs de 0 qui apparaissent 10 fois toutes les centaines, 100 fois tous les milliers, etc. Sans oublier qu'à chaque fois qu'on ajoute une retenue celle-ci décale le résultat, il faut donc calculer aussi la retenue de la retenue ! // 1 = unités, 10 = dizaines, 100 = centaines... int rang = 1; // on s'arrête quand il n'y a plus de retenue à ajouter while (retenue > 0) { // nouvelle retenue à ajouter retenue = (10*rang)*((retenue-1)/(9*rang)); // ajout de la retenue resultat += retenue; // passage au rang suivant rang *= 10; } return resultat; // résultat correct }
Remarque : ce code est correct pour n'importe quel entier, du plus petit au plus grand, et est tout à fait transposable à des BigInteger.
Pour l'algorithme dans l'autre sens il faut enlever toutes les retenues que l'on a ajouté ici, en faisant un raisonnement comparable.
D'un point de vue algébrique ta deuxième colonne ne peux pas être considéré comme une base numérique. Si tu es "nul en math" je ne vais pas détailler pourquoi, mais d'un point de vue du vocabulaire n'utilise pas le terme de "base 9", c'est faux.
Ensuite, si tu veux de l'efficacité dans tes résultats, il ne faut pas réfléchir en conversion base 10 → "base 9", puisque la base 10 n'est de de toute façon pas naturelle pour l'ordinateur, il faut directement réfléchir en base 2, pour les deux colonnes de ton tableau, et déterminer quelles opérations binaires permettent de passer d'une colonne à l'autre.
Après, je pense que des outils d'intelligence artificielle (un perceptron par exemple) permettraient de rapidement déterminer des relations simples entre les bits de chacune des deux colonnes. Il faudrait fouiller internet pour trouver un outil déjà prêt où tu n'as plus qu'à amorcer la phase d'apprentissage et recueillir les résultats.
Ensuite, si tu veux de l'efficacité dans tes résultats, il ne faut pas réfléchir en conversion base 10 → "base 9", puisque la base 10 n'est de de toute façon pas naturelle pour l'ordinateur, il faut directement réfléchir en base 2, pour les deux colonnes de ton tableau, et déterminer quelles opérations binaires permettent de passer d'une colonne à l'autre.
1 : 00001 00001 : 1 2 : 00010 00010 : 2 3 : 00011 00011 : 3 4 : 00100 00100 : 4 5 : 00101 00101 : 5 6 : 00110 00110 : 6 7 : 00111 00111 : 7 8 : 01000 01000 : 8 9 : 01001 01001 : 9 10 : 01010 01011 : 11 11 : 01011 01100 : 12 12 : 01100 01101 : 13 13 : 01101 01110 : 14 14 : 01110 01111 : 15 15 : 01111 10000 : 16 16 : 10000 10001 : 17 17 : 10001 10010 : 18 18 : 10010 10011 : 19 19 : 10011 10101 : 21 20 : 10100 10110 : 22 21 : 10101 10111 : 23 22 : 10110 11000 : 24 23 : 10111 11001 : 25 24 : 11000 11010 : 26 25 : 11001 11011 : 27 26 : 11010 11100 : 28 27 : 11011 11101 : 29 28 : 11100 11111 : 31
Après, je pense que des outils d'intelligence artificielle (un perceptron par exemple) permettraient de rapidement déterminer des relations simples entre les bits de chacune des deux colonnes. Il faudrait fouiller internet pour trouver un outil déjà prêt où tu n'as plus qu'à amorcer la phase d'apprentissage et recueillir les résultats.
Hello,
Heureusement que tu as pas mis tous les chiffres sinon on avait pas fini :)
Bon comme source de l' "algorithme" je me suis servi de Wikipedia
Ca fonctionne pour toute les bases mais quand il y a des lettres (Hexadécimal par exemple) c'est plus compliqué ...
Ce que je me demande c'est comment tu as fait si tu ne sais pas faire ? Tableau Excel ?
...
Pour passer d'un nombre K en base décimale à un nombre en base N
a/ on divise successivement K/N=D (On ne garde que la partie entière de D (pas ce qu'il y a après la virgule)) ...
Exemple avec 2004 :
Opé 1 : 2004/9=222
/!\ A chaque fois on garde les "restes" de chaque division (les modulo !) car ce sont eux qui vont servir à faire le chiffre en base 9 à la fin
(Modulo Opé 1=6) (ou ((222*9)+6)=2004)
b/ On teste si D (Le résultat) >= N alors K=D et on revient à l'étape a/ (On ne garde pas le résultat qui ne sert pas sauf pour le test)
Opé 2 : 222/9=24 Comme (D >= N) alors on revient à a/ (Modulo Opé 2=6)(ou ((24*9)+6)=222)
Opé 3 : 24/9=2 là D<N alors on garde le résultat et on passe à c/ (Modulo Opé 3=6)(ou ((2*9)+6)=24)
c/ Puis on concatene le dernier résultat avec les modulos de chaque opé en commençant par la fin
Résultat Opé 3 & Modulo Opé 3 & Modulo Opé 2 & Modulo Opé 1
2 & 6 & 6 & 6
2004 en base 9 donne 2666
Pour reconvertir de la base N vers 10 (Plus simple encore ...)
Pour tout chiffre c de rang r dans K, on calcule c×N^r
On incrémente un "r" depuis la droite vers la gauche (en commençant à 0)
Par exemple pour 2666 en base 9 (9 est notre N) :
= (2x(N^r (4eme rang)) + (6x(N^r (3eme rang)) + (6x(N^r (2eme rang)) + (6x(N^r (1er rang))
= (2x(9^3)) + (6x(9^2)) + (6x(9^1)) + (6x(9^0))
= (2x729) + (6x81) + (6x9) + (6x1)
= 1458 + 486 + 54 + 6
= 2004
J'espère que c'est clair, normalement avec cet exemple et celui de wikipedia tu à les armes pour t'en sortir ...
Bon courage :)
Heureusement que tu as pas mis tous les chiffres sinon on avait pas fini :)
Bon comme source de l' "algorithme" je me suis servi de Wikipedia
Ca fonctionne pour toute les bases mais quand il y a des lettres (Hexadécimal par exemple) c'est plus compliqué ...
Ce que je me demande c'est comment tu as fait si tu ne sais pas faire ? Tableau Excel ?
...
Pour passer d'un nombre K en base décimale à un nombre en base N
a/ on divise successivement K/N=D (On ne garde que la partie entière de D (pas ce qu'il y a après la virgule)) ...
Exemple avec 2004 :
Opé 1 : 2004/9=222
/!\ A chaque fois on garde les "restes" de chaque division (les modulo !) car ce sont eux qui vont servir à faire le chiffre en base 9 à la fin
(Modulo Opé 1=6) (ou ((222*9)+6)=2004)
b/ On teste si D (Le résultat) >= N alors K=D et on revient à l'étape a/ (On ne garde pas le résultat qui ne sert pas sauf pour le test)
Opé 2 : 222/9=24 Comme (D >= N) alors on revient à a/ (Modulo Opé 2=6)(ou ((24*9)+6)=222)
Opé 3 : 24/9=2 là D<N alors on garde le résultat et on passe à c/ (Modulo Opé 3=6)(ou ((2*9)+6)=24)
c/ Puis on concatene le dernier résultat avec les modulos de chaque opé en commençant par la fin
Résultat Opé 3 & Modulo Opé 3 & Modulo Opé 2 & Modulo Opé 1
2 & 6 & 6 & 6
2004 en base 9 donne 2666
Pour reconvertir de la base N vers 10 (Plus simple encore ...)
Pour tout chiffre c de rang r dans K, on calcule c×N^r
On incrémente un "r" depuis la droite vers la gauche (en commençant à 0)
Par exemple pour 2666 en base 9 (9 est notre N) :
= (2x(N^r (4eme rang)) + (6x(N^r (3eme rang)) + (6x(N^r (2eme rang)) + (6x(N^r (1er rang))
= (2x(9^3)) + (6x(9^2)) + (6x(9^1)) + (6x(9^0))
= (2x729) + (6x81) + (6x9) + (6x1)
= 1458 + 486 + 54 + 6
= 2004
J'espère que c'est clair, normalement avec cet exemple et celui de wikipedia tu à les armes pour t'en sortir ...
Bon courage :)
Hello,
En suivant mon algorithme (trouvé sur wiki) pour la conversion.
Je fais pas de VB.Net et en C ça aurait été un peu facile, alors j'ai fait du vbscript, freestyle :)
Un copié/collé dans un fichier texte renomé en .vbs et ça doit marcher, mais y'a pas de contrôle.
L'autre algo. me semble plus facile à mettre en oeuvre ... Je vais voir ...
Sinon ça marche pour toutes les bases sauf celle qui ont des lettres (octal, hexa, etc ...)
En suivant mon algorithme (trouvé sur wiki) pour la conversion.
Je fais pas de VB.Net et en C ça aurait été un peu facile, alors j'ai fait du vbscript, freestyle :)
Un copié/collé dans un fichier texte renomé en .vbs et ça doit marcher, mais y'a pas de contrôle.
Dim nbToConvert, baseToconvertIn, myArrResult(3), myModuloMem(1024), i, j, myResult nbToConvert=InputBox("Enter your number in base 10") baseToconvertIn=InputBox("Enter base") nbToConvert=(nbToConvert-0) 'Conversion en chiffre ;) baseToconvertIn=(baseToconvertIn-0) i=0 j=0 Call divideAndSee(nbToConvert,baseToconvertIn) function Main(MyArrResult) myModuloMem(i)=myArrResult(2) i=i+1 if (myArrResult(0)=0) Then nbToConvert=myArrResult(1) Call divideAndSee(nbToConvert,baseToconvertIn) Else myResult=Cstr(myArrResult(1)) For j=i to 0 Step -1 myResult=myResult & myModuloMem(j) Next End If End Function wscript.echo ("Resultat = " & myResult) Function divideAndSee(nbToConvert,baseToconvertIn) if ((nbToConvert\baseToconvertIn)>=baseToconvertIn) Then myArrResult(0)=0 myArrResult(1)=(nbToConvert\baseToconvertIn) myArrResult(2)=(nbToConvert Mod baseToconvertIn) Else ' (nbToConvert<baseToconvertIn) Dernière passe myArrResult(0)=1 myArrResult(1)=(nbToConvert\baseToconvertIn) myArrResult(2)=(nbToConvert Mod baseToconvertIn) End If call Main(myArrResult) 'On appelle la fonction appelante :) End Function
L'autre algo. me semble plus facile à mettre en oeuvre ... Je vais voir ...
Sinon ça marche pour toutes les bases sauf celle qui ont des lettres (octal, hexa, etc ...)
Pour rester dans l'algo donné au départ , c'est vrai que l'opération inverse était beaucoup plus simple ... Encore du VBS alors un copié / collé dans un fichier texte renommé en .VBS et ça roule.
Ça semble marcher mais pas de "sécurité" .
Dim nbToConvert, baseToconvertFrom, nbRang, myArrResult(1024), i, myResult nbToConvert=InputBox("Enter your number in base N") baseToconvertFrom=InputBox("Enter base type") nbRang=len(nbToConvert) baseToconvertFrom=(baseToconvertFrom-0) 'Conversion en chiffre ;) (Pas pour nbToConvert ça m'arrange qu'il soit en string) i=0 for i=nbRang to 1 step -1 myChiffre=(Left(nbToConvert,1)-0) nbToConvert=right(nbToConvert,(i-1)) myArrResult(i-1)=myChiffre*(baseToconvertFrom^(i-1)) Next myResult=0 i=0 for i=nbRang to 1 step -1 myResult=myresult + myArrResult(i-1) Next wscript.echo (myResult)
Ça semble marcher mais pas de "sécurité" .
KX, tu veux bien stp me dire comment je dois procéder pour faire l'inverse ?
Explique clairement stp, merci !
Explique clairement stp, merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Vraiment j'y arrive pas :(
J'ai essayer ça mais ça marche pas (En pleur)
Le respect n'est pas une option mais une obligation !
Restons cool: politesse, patience et indulgence sont indispensable !
Vraiment j'y arrive pas :(
J'ai essayer ça mais ça marche pas (En pleur)
Procedure Transformer2(Nombre.q) ; À toutes les dizaines on est décalé d'une unité, ça donne une Retenue Retenue = Nombre / 10 ; On ajoute la Retenue au résultat Resultat = Nombre - Retenue ; Pour l'instant on n'a modifié que les unités ajoutés toutes les dizaines, il faut aussi ajouter ; tous les blocs de 0 qui apparaissent 10 fois toutes les centaines, 100 fois tous les milliers, etc. ; Sans oublier qu'à chaque fois qu'on ajoute une Retenue celle-ci décale le résultat, il faut donc ; calculer aussi la Retenue de la Retenue ! ; 1 = unités, 10 = dizaines, 100 = centaines... Rang = 1 ; On s'arrête quand il n'y a plus de Retenue à ajouter While Retenue > 0 ; Nouvelle Retenue à ajouter Retenue = (10 * Rang) * (Retenue / (10 * Rang)) ; Ajout de la Retenue Resultat - Retenue ; Passage au Rang suivant Rang * 10 Wend ProcedureReturn Resultat EndProcedure
Le respect n'est pas une option mais une obligation !
Restons cool: politesse, patience et indulgence sont indispensable !
Je vous remercie pour votre aide,
Effectivement KX, tu as parfaitement raison je suppose !
Ma vision est faussé, je fais avec se que je sais !
En faite, moi je cherche la logique, y dois bien y en avoir une quand même !
Mais même avec une feuille et un crayon, impossible de savoir snif.
ryko1820, Lol, oui comme tu dis heureusement mais si j'ai mis ça c'est
pour une très bonne raison ^^, pour bien voir !
De plus je suis désoler, vraiment mais c'est un peut compliquer pour moi
se que tu viens de dire, et puis comme la si bien dis KX, même ainsi
ça ne marche pas, prends exemple par exemple de:
99
999
9999
99999
999999
Ou autre, en faite avec cette méthode ça marche pas !
Sa marche presque oui mais en faite non ^^, dommage snif.
Bien ^^, sur se, j'ai déjà poser des question comme ça à droite et à gauche
et quelqu'un ma fait se code qui marche super bien:
Le problème est que j'y comprends rien --'
Quelqu'un pourrais t-il la rendre beaucoup plus clair avec pas mal de commentaire s'il vous plait :)
Qui plus est, snif, ça marche mais... j'ai pas le code qui permet de faire l'inverses
Bhouuuuuuuuuuu snif :(.
Voilà, je suis coincé quoi et je peut même pas me débrouillé seul et ça c'est chiant :(
Alors je suis obliger de venir pleurer ici pour demander de l'aide, la personne qui à crée se code ne veux pas faire le code inverse :(
C'est bien... je suis content... mais en faite je peut rien faire :(
Voilà, je supplie votre aide s'il vous plait.
Merci d'avance ! :)
Effectivement KX, tu as parfaitement raison je suppose !
Ma vision est faussé, je fais avec se que je sais !
En faite, moi je cherche la logique, y dois bien y en avoir une quand même !
Mais même avec une feuille et un crayon, impossible de savoir snif.
ryko1820, Lol, oui comme tu dis heureusement mais si j'ai mis ça c'est
pour une très bonne raison ^^, pour bien voir !
De plus je suis désoler, vraiment mais c'est un peut compliquer pour moi
se que tu viens de dire, et puis comme la si bien dis KX, même ainsi
ça ne marche pas, prends exemple par exemple de:
99
999
9999
99999
999999
Ou autre, en faite avec cette méthode ça marche pas !
Sa marche presque oui mais en faite non ^^, dommage snif.
Bien ^^, sur se, j'ai déjà poser des question comme ça à droite et à gauche
et quelqu'un ma fait se code qui marche super bien:
Function NombreSansZéro(n As Int64) As Long Dim m = CInt(Math.Floor(Math.Log(8L * n + 1L, 9))) Dim b = Function(_j As Int64) (8L * n + 1L - CLng(Math.Pow(9, m))) \ (8L * CLng(Math.Pow(9, _j))) Return Enumerable.Range(0, m).Sum(Function(j) (1L + b(j) Mod 9L) * CLng(Math.Pow(10, j))) End Function
Le problème est que j'y comprends rien --'
Quelqu'un pourrais t-il la rendre beaucoup plus clair avec pas mal de commentaire s'il vous plait :)
Qui plus est, snif, ça marche mais... j'ai pas le code qui permet de faire l'inverses
Bhouuuuuuuuuuu snif :(.
Voilà, je suis coincé quoi et je peut même pas me débrouillé seul et ça c'est chiant :(
Alors je suis obliger de venir pleurer ici pour demander de l'aide, la personne qui à crée se code ne veux pas faire le code inverse :(
C'est bien... je suis content... mais en faite je peut rien faire :(
Voilà, je supplie votre aide s'il vous plait.
Merci d'avance ! :)
hello,
je t'ai déjà donné un algo. pour la conversion de base N en base 10 ...
Il est généraliste (applicable à toute les bases et pas optimisé à ton problème spécifique : base 9) mais tellement simple qu'il doit être assez rapide et en tous cas opérationnel.
Sinon en repartant du prog. de KX et en inversant la logique c'est pas bien compliqué non plus.
je t'ai déjà donné un algo. pour la conversion de base N en base 10 ...
Il est généraliste (applicable à toute les bases et pas optimisé à ton problème spécifique : base 9) mais tellement simple qu'il doit être assez rapide et en tous cas opérationnel.
Sinon en repartant du prog. de KX et en inversant la logique c'est pas bien compliqué non plus.
Help !!!
Le respect n'est pas une option mais une obligation !
Restons cool: politesse, patience et indulgence sont indispensable !
Le respect n'est pas une option mais une obligation !
Restons cool: politesse, patience et indulgence sont indispensable !
Bonjour,
KX, voici une procédure pour faire l'inverse, elle n'est pas de moi évidement car déjà que j'arrive même pas à comprendre ta première procédure qui est excellente je le rappel auquel je te remercie énormément ! ^^
Stp peux tu me faire voir comment toi tu procèderais :)
Je suis sur que tu peut faire bien mieux que ça :)
Elle n'est pas très optimisé, je pense qu'on peut faire
au moins deux fois plus rapide, encore merci de ton aide :)
Le respect n'est pas une option mais une obligation !
Restons cool: politesse, patience et indulgence sont indispensable !
KX, voici une procédure pour faire l'inverse, elle n'est pas de moi évidement car déjà que j'arrive même pas à comprendre ta première procédure qui est excellente je le rappel auquel je te remercie énormément ! ^^
Stp peux tu me faire voir comment toi tu procèderais :)
Je suis sur que tu peut faire bien mieux que ça :)
Elle n'est pas très optimisé, je pense qu'on peut faire
au moins deux fois plus rapide, encore merci de ton aide :)
Procedure.q Decoder(Nombre.q) Protected.q res, div10, mul9, c1, c2, reste, chiffre Protected i.l, j.l res = Nombre nb_chiffre = IntQ(Log10(Nombre)) + 1 Macro PowQ(nombre_q, puissance, resultat_q) resultat_q = 1 For j = 1 To puissance resultat_q * nombre_q Next EndMacro ; div10 = Pow(10, nb_chiffre); ne fonctionne pas avec des Quad PowQ(10, nb_chiffre, div10) ; mul9 = Pow(9, nb_chiffre - 1); ne fonctionne pas avec des Quad PowQ(9, nb_chiffre - 1, mul9) For i = nb_chiffre - 1 To 1 Step -1 div10 / 10 c1 = Nombre / div10 chiffre = IntQ(c1) - IntQ(c1 / 10) * 10 mul9 / 9 res = res - i * mul9 * (chiffre + reste) reste = reste * 10 + chiffre Next ProcedureReturn res EndProcedure
Le respect n'est pas une option mais une obligation !
Restons cool: politesse, patience et indulgence sont indispensable !
Voici le code traduit en VB.Net
Normalement je me suis pas trompé si ce n'est que cella ne fonctionne pas correctement !
Serais t-il possible de corriger ou me dire se qui ne va pas svp :)
Normalement je me suis pas trompé si ce n'est que cella ne fonctionne pas correctement !
Serais t-il possible de corriger ou me dire se qui ne va pas svp :)
Function PowQ(ByVal NombreQ As Int64, ByVal Puissance As Int64, ByVal ResultaQ As Int64) As Int64 ResultaQ = 1 For j = 1 To Puissance ResultaQ *= NombreQ Next Return ResultaQ End Function Function Décode(ByVal Nombre As Int64) As Int64 Dim Res As Int64 = Nombre Dim Div10 As Int64 = 0 Dim Mul9 As Int64 = 0 Dim C1 As Int64 = 0 Dim Reste As Int64 = 0 Dim Chiffre As Int64 = 0 Dim NombreChiffre As Int64 = CLng(Fix(Math.Log10(Nombre))) + 1 Res = Nombre Div10 = PowQ(10, NombreChiffre, Div10) Mul9 = PowQ(9, NombreChiffre - 1, Mul9) For i = NombreChiffre - 1 To 1 Step -1 Div10 \= 10 C1 = CLng(Nombre \ Div10) Chiffre = CLng(Fix(C1) - Fix(CLng(C1) \ 10) * 10) Mul9 \= 9 Res = CLng(Res - (i * Mul9 * (Chiffre + Reste))) Reste = CLng(Reste * (10 + Chiffre)) Next Return Res End Function Sub Main() Console.WriteLine(Décode(1331)) Console.ReadLine() End Sub
Bonjour,
Noter que le système de base se défini comme suit :
K
Noter que le système de base se défini comme suit :
Donc par définition, toutes les bases contiennent le symbole [ 0 ].
Base 10 (0123456789)
Base 9 (012345678)
Base 8 (01234567)
Base 7 (0123456)
Base 6 (012345)
Base 5 (01234)
Base 4 (0123)
Base 3 (012)
Base 2 (01)
Base 11 (0123456789A)
Base 12 (0123456789AB)
Base 13 (0123456789ABC)
Base 14 (0123456789ABCD)
Base 15 (0123456789ABCDE)
Base 16 (0123456789ABCDEF)
K
À condition de considérer que l'alphabet du codage est 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F...
Mais rien ne nous empêche de considérer un autre alphabet, par exemple en décalant tout l'alphabet pour avoir 0 → 1 // 1 → 2 // 2 → 3... Mais il faudrait quand même respecter les contraintes d'algèbres, c'est à dire que k+0=k → k+1=k // k*1=k → k*2=k
Mais tout cela ne se retrouvait pas dans les exemples d'échantillon donné par Dayvid, en particulier parce que l'on aurait du avoir 1=11=111 (de même qu'on a 0=00=000...)
Ce qu'il recherchait n'avait donc rien à voir avec une base (au sens algébrique), mais c'était quand même une bijection d'une base 10 {0,1,2,3,4,5,6,7,8,9} vers une base 9 {1,2,3,4,5,6,7,8,9}
Mais rien ne nous empêche de considérer un autre alphabet, par exemple en décalant tout l'alphabet pour avoir 0 → 1 // 1 → 2 // 2 → 3... Mais il faudrait quand même respecter les contraintes d'algèbres, c'est à dire que k+0=k → k+1=k // k*1=k → k*2=k
Mais tout cela ne se retrouvait pas dans les exemples d'échantillon donné par Dayvid, en particulier parce que l'on aurait du avoir 1=11=111 (de même qu'on a 0=00=000...)
Ce qu'il recherchait n'avait donc rien à voir avec une base (au sens algébrique), mais c'était quand même une bijection d'une base 10 {0,1,2,3,4,5,6,7,8,9} vers une base 9 {1,2,3,4,5,6,7,8,9}
re:
Je suis d'accord avec ta remarque et j'ajouterai ceci :
Certe, je ne suis pas un expert mathématicien, par contre après 29 ans d'expérience
(16 en électronique/matériel et programmation BIOS et firmware) et (13 ans en informatique),
Il est clair que l'ordinateur ne comprend à la base que la Base 2.
Un mathématicien expérimenté à démontré que par regroupement binaire de 4 bits,
nous pouvions passer de la base 2 à la base 16 par un calcul mental très simple
(Électronique 101- Circuit logique). C'est de là que nous vient l'octet tel que conceptualiser aujourd'hui.
Or il est certain que mondialement le base 16 est identifier par les symboles
[ 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F ], ce qui n'exclus pas que quelqu'un pourrait
définir un autre suite de symbole pour un système propriétaire.
Comme je dis toujours, pourquoi faire simple qu'en on peut faire compliqué :-)
K
Je suis d'accord avec ta remarque et j'ajouterai ceci :
Certe, je ne suis pas un expert mathématicien, par contre après 29 ans d'expérience
(16 en électronique/matériel et programmation BIOS et firmware) et (13 ans en informatique),
Il est clair que l'ordinateur ne comprend à la base que la Base 2.
Un mathématicien expérimenté à démontré que par regroupement binaire de 4 bits,
nous pouvions passer de la base 2 à la base 16 par un calcul mental très simple
(Électronique 101- Circuit logique). C'est de là que nous vient l'octet tel que conceptualiser aujourd'hui.
Or il est certain que mondialement le base 16 est identifier par les symboles
[ 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F ], ce qui n'exclus pas que quelqu'un pourrait
définir un autre suite de symbole pour un système propriétaire.
Comme je dis toujours, pourquoi faire simple qu'en on peut faire compliqué :-)
K
La demande de Dayvid était un exercice d'algorithmique et tout le monde sait que ce genre d'exercices n'ont aucun intérêt ^^
Mais encore une fois ce n'était pas un changement de base, ni d'alphabet.
Sinon on n'aurait pas eu "7, 8, 9, 11, 12, 13" mais plutôt eu "7, 8, 9, 21, 22, 23", puisque sans 0 c'est le 1 qui prend sa place donc 11=1, 12=2, 13=3 (de même qu'en base 10 on a 01=1, 02=2, 03=3...)
En fait ici il s'agissait de lister les entiers un par un, sauf ceux qui contenait le chiffre 0, et associer la valeur n au nième nombre de la liste ainsi obtenu, mais sans calculer explicitement la liste.
Ça n'a donc rien à voir avec un changement de base, même si on pouvait s'y ramener de manière détournée pour faire le calcul direct...
Mais encore une fois ce n'était pas un changement de base, ni d'alphabet.
Sinon on n'aurait pas eu "7, 8, 9, 11, 12, 13" mais plutôt eu "7, 8, 9, 21, 22, 23", puisque sans 0 c'est le 1 qui prend sa place donc 11=1, 12=2, 13=3 (de même qu'en base 10 on a 01=1, 02=2, 03=3...)
En fait ici il s'agissait de lister les entiers un par un, sauf ceux qui contenait le chiffre 0, et associer la valeur n au nième nombre de la liste ainsi obtenu, mais sans calculer explicitement la liste.
Ça n'a donc rien à voir avec un changement de base, même si on pouvait s'y ramener de manière détournée pour faire le calcul direct...
Salut,
ça fais un moment que le problème est résolus...
Pour convertir un nombre de base 10 vers base 9:
Pour décoder le nombre maintenant:
A noté que ses codes ne sont pas de moi, on me les à crée !
j'en est bavé pour mettre ça au point (Enfin que on me mette ça au point)
ça fais un moment que le problème est résolus...
Pour convertir un nombre de base 10 vers base 9:
Module Module1
Function Transformer(ByVal Int64 As Int64) As Int64
' À toutes les dizaines on est décalé d'une unité, ça donne une Retenue
Dim Retenue As Int64 = (Int64 - 1) \ 9
' On ajoute la Retenue au résultat
Dim Resultat As Int64 = Int64 + Retenue
' Pour l'instant on n'a modifié que les unités ajoutés toutes les dizaines, il faut aussi ajouter
' tous les blocs de 0 qui apparaissent 10 fois toutes les centaines, 100 fois tous les milliers, etc.
' Sans oublier qu'à chaque fois qu'on ajoute une Retenue celle-ci décale le résultat, il faut donc
' calculer aussi la Retenue de la Retenue !
' 1 = unités, 10 = dizaines, 100 = centaines...
Dim Rang As Int64 = 1
' On s'arrête quand il n'y a plus de Retenue à ajouter
While Retenue > 0
' Nouvelle Retenue à ajouter
Retenue = (10 * Rang) * ((Retenue - 1) \ (9 * Rang))
' Ajout de la Retenue
Resultat += Retenue
' Passage au Rang suivant
Rang *= 10
End While
Return Resultat
End Function
Sub Main()
Console.WriteLine(Transformer(1000))
Console.ReadLine()
End Sub
Pour décoder le nombre maintenant:
Module Module1
Function PowQ(ByVal NombreQ As Int64, ByVal Puissance As Int64, ByVal ResultaQ As Int64) As Int64
ResultaQ = 1
For j = 1 To Puissance
ResultaQ *= NombreQ
Next
Return ResultaQ
End Function
Function Décode(ByVal Nombre As Int64) As Int64
Dim Res As Int64 = Nombre
Dim Div10 As Int64 = 0
Dim Mul9 As Int64 = 0
Dim C1 As Int64 = 0
Dim Reste As Int64 = 0
Dim Chiffre As Int64 = 0
Dim NombreChiffre As Int64 = CLng(Fix(Math.Log10(Nombre))) + 1
Res = 0 'Nombre
Div10 = PowQ(10, NombreChiffre, Div10)
For i = NombreChiffre - 1 To 0 Step -1
Div10 \= 10
C1 = CLng(Nombre \ Div10)
Chiffre = CLng(Fix(C1) - Fix(CLng(C1) \ 10) * 10)
Mul9 = PowQ(9, i, Mul9)
Res += Mul9 * Chiffre
Next
Return Res
End Function
Sub Main()
Console.WriteLine(Décode(27726677999))
Console.ReadLine()
End Sub
End Module
A noté que ses codes ne sont pas de moi, on me les à crée !
j'en est bavé pour mettre ça au point (Enfin que on me mette ça au point)
Voici un exemple concret de se que cella donne:
Module Module1
Function Base10VersBase9(ByVal Int64 As Int64) As Int64
' À toutes les dizaines on est décalé d'une unité, ça donne une Retenue
Dim Retenue As Int64 = (Int64 - 1) \ 9
' On ajoute la Retenue au résultat
Dim Resultat As Int64 = Int64 + Retenue
' Pour l'instant on n'a modifié que les unités ajoutés toutes les dizaines, il faut aussi ajouter
' tous les blocs de 0 qui apparaissent 10 fois toutes les centaines, 100 fois tous les milliers, etc.
' Sans oublier qu'à chaque fois qu'on ajoute une Retenue celle-ci décale le résultat, il faut donc
' calculer aussi la Retenue de la Retenue !
' 1 = unités, 10 = dizaines, 100 = centaines...
Dim Rang As Int64 = 1
' On s'arrête quand il n'y a plus de Retenue à ajouter
While Retenue > 0
' Nouvelle Retenue à ajouter
Retenue = (10 * Rang) * ((Retenue - 1) \ (9 * Rang))
' Ajout de la Retenue
Resultat += Retenue
' Passage au Rang suivant
Rang *= 10
End While
Return Resultat
End Function
Function PowQ(ByVal NombreQ As Int64, ByVal Puissance As Int64, ByVal ResultaQ As Int64) As Int64
ResultaQ = 1
For j = 1 To Puissance
ResultaQ *= NombreQ
Next
Return ResultaQ
End Function
Function Base9VersBase10(ByVal Nombre As Int64) As Int64
Dim Res As Int64 = Nombre
Dim Div10 As Int64 = 0
Dim Mul9 As Int64 = 0
Dim C1 As Int64 = 0
Dim Reste As Int64 = 0
Dim Chiffre As Int64 = 0
Dim NombreChiffre As Int64 = CLng(Fix(Math.Log10(Nombre))) + 1
Res = 0 'Nombre
Div10 = PowQ(10, NombreChiffre, Div10)
For i = NombreChiffre - 1 To 0 Step -1
Div10 \= 10
C1 = CLng(Nombre \ Div10)
Chiffre = CLng(Fix(C1) - Fix(CLng(C1) \ 10) * 10)
Mul9 = PowQ(9, i, Mul9)
Res += Mul9 * Chiffre
Next
Return Res
End Function
Sub Main()
Dim Nombre As Integer = 0
For i = 1 To 100
Nombre = CInt(Base10VersBase9(i))
Console.WriteLine(i & " en base 9 fait: " & Nombre)
Console.WriteLine(Nombre & " en base 10 fait: " & Base9VersBase10(Nombre))
Next
Console.ReadLine()
End Sub
End Module
Enfin plus ou moins...
S'il te plais, peut tu me faire la chose inverses, merci encore !
Et je dois dire que ça à été très facile en faite ^^
Maintenant il faut juste que je comprenne mais c'est un peut se que j'avais fais sur la feuille de papier sauf que moi j'avais oublier des trucs et donc ça marchais pas ^^
Alors simplement un grand merci à toi KX, et de plus, ça me fais marrer
le premier code du gars, certes, code court mais incompréhensible ^^
Là, je peux comprendre le code car il est très simple ^^
Je vais essayer de faire travaillé mes méninges pour faire l'algo inverses maintenant que j'ai vue comment tu as fais ^^
ryko1820, ton code à l'air sympa ^^
Merci !
Le respect n'est pas une option mais une obligation !
Restons cool: politesse, patience et indulgence sont indispensable !
Cet algo est environ 9 fois plus rapide que le premier que j'ai donner !
Le premier, environ 18 secondes avec mon PC et là seulement 2 !
Bien jouer ! ^^
Merci beaucoup ^^
Sans parler de ce "Enumerable.Range(0, m).Sum..." je ne sais pas ce que c'est censé faire, mais ça a l'air compliqué ^^
Je te tien au courent.