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 :

sous type en c++


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par défaut sous type en c++
    Je suis débutant en c++ (mais j'ai quand même des notions).

    J'ai fait aussi un peux de programmation ADA.

    Je me demandais comment on crée des sous type en c++ (et si c'est possible).

    Car mon but pour ceux qui connaisse ADA (enfin c'est très littéral donc bcq vont comprendre)c'est de faire ça en c++:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     x: Integer := 10;
     
    subtype a is integer range 1..10;
     
    if (x is in a ) then {..........}else {........}

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Je ne connais pas ADA, donc je ne sais pas quelle est l'étendue des sous type et quelle serait alors l'approche la plus pertinente en C++.

    En C++, tu dispose des types natifs : les différents caractères, les différents entiers signés ou non signés, booléens, des types réels, des pointeurs, des références.
    Tu peux créer différents nouveaux types :
    - des énumérations avec enum : liste de valeurs spécifiquement typées
    - des unions avec union : regroupement un peu particulier de différents types
    - des nouveaux types avec des comportements (des classes) : tu disposes pour cela du mot clé struct ou class.
    - Avec les génériques ( template), tu peux définir une famille de nouveaux types.

    Enfin, avec typedef tu peux faire des synonymes qui seront strictement équivalent au type de départ (pas de possibilité de leur donner des propriétés plus restrictives).

    Il est peut intéressant de commencer par potasser un peu des livres et cours de C++. Et pourquoi ne pas commencer par Comment débuter en C++ ? par Alp Mestan

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par défaut
    Enfaite je suis entrain de faire un simple prog (qui fonctionne) me permettant de rentrer que des valeurs de A-Z ou a-z avec des condition if et des "<" " >". Mais je me demandais si on peux pas faire cela plus proprement:
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //                                              Entête                                                       //
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
                                            /*Declaration utile*/
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //  Nom du programme      : gerer les types
    //  Fichier               : main
    //  Version               : 1.0
    //  Description           : Template de programmation
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    //Librairies
     
    #include <iostream>         //entrée et sortie sur console
    #include <iomanip>          //manipulateur de donnée
    #include <cstring>	        //manipulateur de chaine de caractère
    #include <cstdio>           //pour NULL
    #include <string.h>
    #include <stdlib.h>         // pour systeme
     
    using namespace std;
     
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //  Declarations
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void affiche (void);
    bool ctrl (char *,bool,int,int);
     
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //  Définition
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
     
     
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //  fonction
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
     
     
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //  fonction affiche
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void affiche (void)
     
    {
        char chEntree [25]={0} ;
        int  inEntree = 0;
        int longeur = 0;
        bool invalid = false;
     
        //creation d'un pointeur
        char * ptentree = chEntree ;
     
     
     
        do
        {
     
            //entrée caractere
            cout << "****************************************************"<<endl<<endl;
            cout << "Veuillez rentrer un caractere valide entre a-z maj ou min : ";
            cin  >> chEntree;
            cout << endl << endl;
     
            //on prend la longueur de la chaine de caractère
            longeur = strlen (chEntree);
     
            //appel de la fonction ctrl
            invalid = ctrl(ptentree,invalid,longeur,inEntree);
     
     
     
        }while (invalid == true);
     
     
        cout << "********************************************************"<< endl << endl;
        cout << "La chaine de caractère: " << ptentree << "  est valide"  <<endl << endl ;
        cout << "********************************************************"<< endl << endl;
     
     
     
    }
     
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //  fonction ctrl
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    bool ctrl (char * ptentree,bool invalid,int longeur, int inEntree)
     
    {
            //variable local
            char chTemp [30] = {0};
     
            strcpy (chTemp, ptentree);
     
            //boucle d'annalyse caractère a caractère
            for (int i = 0; i<= longeur - 1 ; i++ )
            {
     
     
                //comparaison pour garder la valeur ascii
                inEntree = chTemp [i];
     
                // si c'est pas entre a-z erreur
                if (inEntree <97 or inEntree > 122 )
                {
                    //si c'est pas entre A-Z maj
                    if (inEntree < 65 or inEntree > 90)
     
                    {
                        cout << "Caractère invalide" <<"le caractere num "<< i+1 << endl << endl;
     
                        invalid = true;
     
                        return invalid;
                    }
                }
     
                else
                {
                    invalid = false;
                }
     
            }
     
            return invalid;
     
    }
     
     
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //  Programme principale
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    int main()
    {
        //variable local
        char recommencer ;
     
        do
        {
     
            //affiche
            affiche();
     
            //Pour relancer le prog
            cout << "****************************************************************" << endl << endl;
            cout << " Voulez vous relancer le programme [r] pour oui autre non: ";
            cin  >> recommencer;
            system("cls");
     
        }while (recommencer == 'r');
        return 0;
    }

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Dominus_Domi Voir le message
    Enfaite je suis entrain de faire un simple prog (qui fonctionne) me permettant de rentrer que des valeurs de A-Z ou a-z avec des condition if et des "<" " >". Mais je me demandais si on peux pas faire cela plus proprement
    Pas de façon immédiate. Tu as plusieurs options (comme souvent en C++). Pour [A-Z][a-z], le plus simple c'est encore de se baser sur std::is_alpha du fichier d'en-tête <cctype>
    Après, il y a les expressions régulières par exemple.

    F.A.Q : Comment vérifier les valeurs saisies avec cin ?

    Autres choses, intéresses-toi au std::string pour gérer les chaines de caractères plutôt que les tableaux statiques ou dynamiques de char.

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Pour les expressions régulières, il y a boost (lien de 3DArchi), mais tu les as peut-etre aussi directement avec ton compilateur si il est assez recent (header <regex>) et poco (page 33) en propose aussi.

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par défaut
    ça a pas l'air évident les expressions régulière...

    Vous auriez pas un tuto un peux plus simple (je trouve pas grand chose à ma portée)...

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Dominus_Domi Voir le message
    Vous auriez pas un tuto un peux plus simple (je trouve pas grand chose à ma portée)...
    Utilisation de Boost.Regex un bon tuto qui a en plus pas mal de référence vers d'autres tutos d'autres langages au début. A lire sans modération

Discussions similaires

  1. sous-type(héritage) sous access
    Par yohann007 dans le forum Access
    Réponses: 25
    Dernier message: 28/02/2007, 10h30
  2. filtrer un champ par un "sous type"
    Par alex_r77 dans le forum Oracle
    Réponses: 1
    Dernier message: 27/04/2006, 10h16
  3. [oracle9i] comment filtrer par un "sous type"
    Par alex_r77 dans le forum Oracle
    Réponses: 4
    Dernier message: 26/04/2006, 17h13
  4. [MySQL] Affichage en liste de type et de leurs sous-types
    Par Mitaka dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/11/2005, 14h33
  5. DB objet sous types heritage
    Par smex dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/06/2004, 21h58

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