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 :

au lieu de prendre la valeur d'apres scanf on prendre valeur d'apres une liste ou tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : etudiante
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Par défaut au lieu de prendre la valeur d'apres scanf on prendre valeur d'apres une liste ou tableau
    salut
    je veux modifier la fonction
    telque la valeur demande par printf sera prendre d'apres une tableau ou liste .chaque instanciation de la focntion on choisit une valeur de liste ou tableau des entiers premiers comme
    a:{23, 29, 31, 37, 41, 43, 47,53, 59, 61, 67, 71, 73, 79, 83 ,89 ,97, 101, 103, 107, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521,653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857 }
    b*:{109 ,113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337,401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647,727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929}

    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
    void Rsa::p_e_e(void)
     
    {
     
    	int a,b,*reste,*s,*q;
     
       reste=(int*)malloc(sizeof(int));  //initialisation de reste
     
       s=(int*)malloc(sizeof(int));  //initialisation de s
     
       q=(int*)malloc(sizeof(int));  //initialisation de q
     
       printf("\n\n\t\t\t   ********************\n");
     
       printf("\t\t\t   *PREMIERS ENTRE EUX*\n");
     
    	printf("\t\t\t   ********************\n\n\n");
     
       printf("Donner le 1er entier : ");
     
       scanf("%d",&a);
     
       printf("\nDonner le 2eme entier : ");
     
       scanf("%d",&b);
     
     
       *s=a;
     
       *q=b;
     
       *reste=fmod(*s,*q);
     
       while(*reste!=0 && *reste>0)
     
       {
     
       	*s=*q;
     
          *q=*reste;
     
          *reste=fmod(*s,*q);
     
       }
     
     
     
       if(*q==1)
     
       {
       printf("\n\n%d et %d sont premiers entre eux.",a,b);
     
       }
       else
     
       {
       	printf("\n\n%d et %d ne sont pas premiers entre eux.",a,b);
     
       }
       getch();
     
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    ton utilisation des malloc est inutile en plus d'être mauvaise et entrainer une fuite mémoire.

    Je ne vois pas trop où se situe ton problème.
    Ne sais-tu pas prendre un élément d'un tableau ? Avec un index peut-être ?
    Btw, il s'agit de C et non de C++, je déplace.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    Bon avec le namespace et le cast du malloc ça sent le C++ quand même un peu

    Mais sinon je ne comprends pas trop la question, les deux listes que tu proposes sont des listes de nombres premiers (si je ne me trompe pas). Forcément quels que soient les nombres choisis ta fonction va imprimer qu'ils sont premiers entre eux ...

  4. #4
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    Bonjour,

    Je ne te cache pas que je n'ai pas très bien compris la question. Néanmoins je vais essayer de t'expliquer le code que tu as mis en espérant que ta prochaine question soit un peu plus clair.

    Avant d'écrire un code, on essaye d'abord de se poser la question "quoi?". Qu'est ce qu'on attend du programme? Dans ton cas tu veux savoir si deux nombres a et b sont premier entre eux.
    Ensuite vient la question "comment?". Les mathématiciens d'une autre époque, en l’occurrence Euclide nous répond que a et b sont premier entre eux si pgcd(a,b) = 1 .
    La question maintenant est "comment calculer pgcd(a,b) ?".
    Toujours avec Euclide, il nous répond :
    Il s'agit de divisions en cascade: les résultats de l'une servent à poser la suivante:
    • Le diviseur B devient le dividende; et
    • Le reste r1 devient le diviseur.
    • Arrêt lorsque le reste de la division est nul.
    • Le reste trouvé avant le reste nul est le PGCD.

    Maintenant qu'on sait ce qu'on attend du programme, je regarde ton code :
    • Comme dit Bousk, les malloc sont inutiles. (Essaye de relire la partie de ton cours qui dit quand il faut utiliser un malloc).
    • Pourquoi utilises-tu fmod? Tu travailles sur des entiers, tu as un opérateur pour faire le modulo (%).
    • Si "reste" est strictement supérieur à zéro, alors il est forcément différent de 0.
    • Il est interdit de diviser par 0, comme il est interdit de faire modulo 0. Prévoir un test sur b.

    Une fois n'est pas coutume, une solution :
    Code c++ : 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
     
    #include <cstdio>
     
    void Rsa::p_e_e(void)
    {
      int a,b,reste,s,q;
     
      printf("\n\n");
      printf("\t\t\t   ********************\n");
      printf("\t\t\t   *PREMIERS ENTRE EUX*\n");
      printf("\t\t\t   ********************\n");
      printf("\n\n");
     
      //Entrée utilisateur
      printf("Donner le 1er entier : ");
      scanf("%d",&a);
     
      printf("\nDonner le 2eme entier : ");
      scanf("%d",&b);
     
      if(b==0)
      {
        //printf Message d'erreur
        return;
      }
     
      //Calcule du PGCD
      s=a;
      q=b;
      reste=s%q;
     
      while(reste>0)
      {
        s=q;
        q=reste;
        reste=s%q;
      }
     
      //Affichage du résultat
      if(q==1)
      {
        printf("\n\n%d et %d sont premiers entre eux.",a,b);
      }
      else
      {
        printf("\n\n%d et %d ne sont pas premiers entre eux.",a,b);
      }
    }

  5. #5
    Membre actif
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : etudiante
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Par défaut
    bonjour
    j'essaie de modifier la code RSA de cryptage selon mon besoin et le code precedement ,ce ne pas que je le fais ,ce code de rsa telechargé d'apres internet.mais je fais de changement pour que soit adaptable a mon besoin
    mon question est : au lieu que la fonction demande au utilisateur de taper un nombre premiers,je ferais un methode qui prend la valeur d'apres une tableau ou liste defini en interieru de methode (a,b).donc ,puisque j'ai un tableau de nombre premier ,je ne besoin pas puis au teste de pgcd ou autre chose
    ce ça mon but ,j'espere que je calrifier mon question et le probleme

  6. #6
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    Citation Envoyé par chirazch Voir le message
    j'espere que je calrifier mon question et le probleme
    Non, pas trop désoler.
    Tu as télécharger un code à partir d'internet (ça j'avais compris). Ce code que tu as téléchargé demande à l'utilisateur d'entrer un couple de nombre (a,b), et vérifie si les deux nombres sont premiers entre eux.
    Les étapes de RSA sont :

    • Choisir p et q deux nombres premiers (très grands en pratique).
    • Choisir e un nombre premier avec (p-1)(q-1).
    • Trouver d tel que (e*d) équivaut à 1 modulo (p-1)(q-1).

    Les tableaux des nombres que tu donnes sont premiers (première étape de l'algorithme). Le programme que tu as téléchargé d'internet vérifie que deux nombres sont premiers entre eux (deuxième étape de l'algorithme).

    Que veux-tu faire exactement?
    Essaye d'être le plus claire possible, avec des phrases courtes si possible

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

Discussions similaires

  1. [SP-2007] Erreur 404 après ajout d'un nouvel element dans une liste
    Par peyrard dans le forum SharePoint
    Réponses: 6
    Dernier message: 26/10/2011, 18h20
  2. Réponses: 0
    Dernier message: 28/09/2011, 17h32
  3. Réponses: 2
    Dernier message: 04/01/2007, 13h31
  4. Réponses: 3
    Dernier message: 16/08/2006, 15h11
  5. Réponses: 11
    Dernier message: 11/08/2006, 16h52

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