IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Convertisseur Gold Root


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    Janvier 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Electronicien

    Informations forums :
    Inscription : Janvier 2023
    Messages : 4
    Par défaut Convertisseur Gold Root
    Bonjour,

    J'aimerais pouvoir faire fonctionner ce convertisseur Gold/Root , et comprendre sa programmation car je n'arrive pas à le faire fonctionner avec Code::Blocks 20.03
    J'obtiens l'affichage suivant: "Specify either root or gold code with -r or -g"
    Normalement, dans tout convertisseur, il faut entrer une valeur, par exemple une valeur Gold qui est donc ensuite convertie en Root (ou inversement Root vers Gold)
    Je ne comprend pas pourquoi cela me demande de spécifier -r ou -g , et surtout je ne sais pas où taper cette valeur car une fois le programme lancé il n'y a pas de possibilité d'entrer une valeur, et si j'appuis sur une touche du clavier cela fait quitter la console.
    Je suis novice en C++ , c'est probablement la cause, j'aimerai donc savoir si ce convertisseur fonctionne, et comprendre pourquoi cela ne fonctionne pas chez moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    #include <stdio.h>
    #include <ctype.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <stdint.h>
    #include <stdlib.h>
    #include <getopt.h>
    #include <stdio.h>
    #include <stdint.h>
     
    static uint32_t gold2root(uint32_t gold)
    {
    	uint32_t x, g;
     
    	for (g = 0, x = 1; g < gold; g++)
    		x = (((x ^ (x >> 7)) & 1) << 17) | (x >> 1);
    	return x;
    }
     
    static uint32_t root2gold(uint32_t root)
    {
    	uint32_t x, g;
     
    	for (g = 0, x = 1; g < 0x3ffff; g++)  {
    		if (root == x)
    			return g;
    		x = (((x ^ (x >> 7)) & 1) << 17) | (x >> 1);
    	}
    	return 0xffffffff;
    }
     
    int main(int argc, char **argv)
    {
    	uint32_t gold = 0xffffffff, root = 0xffffffff;
     
    	while (1) {
                    int option_index = 0;
    		int c;
                    static struct option long_options[] = {
    			{"gold", required_argument, 0, 'g'},
    			{"root", required_argument, 0, 'r'},
    			{"help", no_argument , 0, 'h'},
    			{0, 0, 0, 0}
    		};
                    c = getopt_long(argc, argv, 
    				"r:g:h",
    				long_options, &option_index);
    		if (c==-1)
     			break;
     
    		switch (c) {
    		case 'g':
    			gold = strtoul(optarg, NULL, 0);
    			break;
    		case 'r':
    			root = strtoul(optarg, NULL, 0);
    			break;
    		case 'h':
    			printf("pls -g gold_code\n");
    			printf("or\n");
    			printf("pls -r root_code\n");
    			exit(-1);
    		default:
    			break;
     
    		}
    	}
    	if (optind < argc) {
    		printf("Warning: unused arguments\n");
    	}
    	if (gold != 0xffffffff && root != 0xffffffff) {
    		printf("Only specify root or gold code\n");
    		exit(-1);
    	};
    	if (gold != 0xffffffff) {
    		if (gold < 0x3ffff) {
    			root = gold2root(gold);
    			printf("gold = %u (0x%05x)   root = %u (0x%05x)\n",
    			       gold, gold, root, root);
    		} else
    			printf("Invalid gold code specified.\n");
    		exit(0);
    	} 
    	if (root != 0xffffffff) {
    		if (root > 0 && root < 0x40000)
    			gold = root2gold(root);
    		if (gold != 0xffffffff)
    			printf("gold = %llu (0x%05x)   root = %llu (0x%05x)\n",
    			       gold, gold, root, root);
    		else
    			printf("Invalid root code specified.\n");
    		exit(0);
    	}
    	printf("Specify either root or gold code with -r or -g.\n");
    }
    Merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [phpMyAdmin] [phpMyAdmin] Problème mot de passe Root !
    Par StouffR dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 26/09/2014, 11h59
  2. Convertisseur VB --> Delphi : VB2D
    Par gbuxo dans le forum Outils
    Réponses: 11
    Dernier message: 25/05/2005, 10h47
  3. IDE vs programmation "roots" ?
    Par yoloosis dans le forum Débats sur le développement - Le Best Of
    Réponses: 44
    Dernier message: 27/01/2005, 00h37
  4. probleme identification et mot de passe root
    Par freums dans le forum Débuter
    Réponses: 5
    Dernier message: 19/09/2003, 17h09
  5. Password root perdu !!
    Par Va(l)ve dans le forum Administration système
    Réponses: 8
    Dernier message: 18/08/2003, 22h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo