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 :

Concatener 2 variables de type "long"


Sujet :

C

  1. #1
    Membre actif Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Points : 243
    Points
    243
    Par défaut Concatener 2 variables de type "long"
    Bonjour a tous,
    dans un premier temps j'aimerai a partir de 2 nombres entiers former une variable de type long à partir des 2.
    Exemple :
    var1 = 1;
    var2 =2;

    j'aimerai faire une var3 qui serait egale a 12,
    je ne sais comment m'y prendre.

    Dans un second temps j'aimerai concatener 2 nombre long en 1 double.
    exemple :
    var1 = 1;
    var2 = 2;
    j'aimerait faire uen var 3 = 1,2.

    Merci a tous (le plus important est le premier temps....)
    Benjamin

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Bref, tu veux que le second long soit partie décimale d'un nombre à virgule flottante dont le premier serait la partie entière, c'est bien ça ?

    Dans ce cas, il y a des règles à mettre au point, déjà:
    Quel nombre flottant doit-on obtenir avec les nombres 1 et 12 ?
    avec les nombres 1 et 8 ?

  3. #3
    Membre actif Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Points : 243
    Points
    243
    Par défaut
    Pour la première partie)

    avec var1=1 et var2=8 => var3=18


    Merci

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    C'est une blague?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var3 = 10 * var1 + var2;

  5. #5
    Membre actif Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Points : 243
    Points
    243
    Par défaut
    oui j'avais penser a faire ca mais bon ca m'arrange moyen si je veux concatener une dizaine de variable comme ça...

    je me disais que yavais peut etre une fonction qui permettai de faire ca...

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    tu peux essayer en passant par une chaîne alphanumérique et en faisant un strtol ensuite...

    Ou bien, tu fais une boucle en multipliant par 10 au passage.

  7. #7
    Membre actif Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Points : 243
    Points
    243
    Par défaut
    strtol?

    Euh je ne la trouve pas dans mon livre => peut etre sur le site

    en fait avec une chaine alphanumérique (c'est un type special? ou juste char?)

    En fait ca minteresserait car en fait je dois pouvoir stocker plusieurs informations de type different et ensuite les stocker dans un type specique.
    Par exemple si je saisis 3 (avec getch) ca doit mettre 3 dans une variable entier. En fait je stocke plusieurs entier dans un pile et ensuite je concatene pour donner le nb final de type entier.

    et si jamais je tape plusieurs chiffre un point et apres d'autres chiffres j''aimerai tous concatener dans une variable double....

    Benjamin

  8. #8
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par jamesleouf
    Par exemple si je saisis 3 (avec getch) ca doit mettre 3 dans une variable entier. En fait je stocke plusieurs entier dans un pile et ensuite je concatene pour donner le nb final de type entier.
    C'est une curieuse méthode de saisie. Ne pourrais-tu pas entrer ton nombre d'un seul coup (fgets() + strtol ou strtod)?
    Si, pour une raison inconnue, tu dois utiliser une variable par chiffre, alors le plus simple sera d'utiliser sprintf() pour construire le nombre final, puis le convertir avec strtol().
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    char buffer[500];
    long var[10];
     
    ...
     
    sprintf(buffer, "%ld%ld%ld", var[0], var[1], var[2]);
    number = strtol(buffer, NULL, 10);

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par jamesleouf
    strtol?

    Euh je ne la trouve pas dans mon livre
    Ton livre est trop vieux. strtol() existe depuis 1989.

  10. #10
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Il te faudrait peut-être un algo de ce type:
    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
    unsigned long uval = 0;
    double dval;
    int flag isint = 1;
    int exp;
    int c = getc(stdin);
     
    while (isdigit(c) || c == '.')
    {
        if (isint)
        {
           if (c == '.')
           {
              isint = 0;
              dval = (double) uval;
              exp = 1;
           }
           else
           {
               uval = 10 * uval + c - '0'; 
           }
        }
        else
        {
            if (c == '.')
            {
                fprintf(stderr, "Erreur de saisie|n");
                break;
            }
            dval += ((double)(c - '0')) /  pow(10, exp);
            exp ++;
        }
     }
    Tu construis ton nombre de cette façon.

Discussions similaires

  1. Variable Chaîne pour variable de type Entier long
    Par ggvert dans le forum VBA Access
    Réponses: 4
    Dernier message: 22/12/2007, 19h32

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