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 :

projet en langage C


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut projet en langage C
    bonjour, J'ai un projet à faire et j'aurai besoin de vos aides, je bloque complètement dessus...
    s'il vous plait aidez-moi, c'est une question de vie ou de mort...
    je remercie à l'avance à tous ceux qui voudront bien m'aider, de la patience et du temps qu'ils auraient pris pour m'expliquer.
    j'ai mis le sujet en entier pour qu'il n'y ait pas d'informations manquantes qui pourrait nuire à la compréhension du sujet.

    PROJET en LANGAGE C

    THEME :
    Traitement intéractif permettant de suivre le déroulement complet d'une épreuve internationale de ski.

    Les organisateurs demandent une réalisation composée des 3 phases successives suivantes :

    PHASE 1: prise en compte des inscriptions des skieurs avec affectation des numéros de dossard.
    PHASE 2 : Suivi de la descente et affichage du classement provisoire de chaque skieur.
    PHASE 3 : Les résultats finaux : classement final, liste des disqualifiés, liste des participants, et un récapitulatif des résultats des équipes nationales.

    &----------------------------------------&

    Les différentes nations pouvant être représentées à cette compétition sont les suivantes :

    nationalités code
    FRANCE FR
    ITALIE IT
    LUXEMBOURG LU
    POLOGNE PL
    SUISSE CH

    PHASE 1 : les inscriptions.

    Chaque futur participant doit s'inscrire et communiquer les données suivantes le concernant :
    -nom (15 caractères maximum)
    -code(2caractères)

    Le programme attribuera un numéro de dossard, selon l'ordre d'arrivée des participants en partant de 1 pour le premier et en ordre croissant pour les suivants.

    Remarques :

    vous devez refuser et signaler par un message l'inscription d'une personne :
    - s'il s'agit d'un nom deja enregistré (double inscription)
    - d'un code nationalité ne faisant pas partie de ceux annoncés ci-dessus
    La fin des inscriptions sera signalée par une * à la place du nom.

    Avant de passer à la phase 2, on affichera :
    - la liste des inscrit dans l'ordre des numéros de dossard avec pour chacun d'eux : le numéro de dossard, le nom et la nationalité en clair
    puis
    - on proposera l'affichage des inscrits d'une meme équipe à partir de la saisie du code nationalité.
    Prévoir alors les 3 possibilités suivantes :
    - il y a des inscrits
    afficher : le code nationalité son libellé et le nombre d'inscrits puis pour chaque inscrit son n° de dossard et son nom.
    - il n'y a pas d'inscrit
    afficher : le code nationalité et son libellé suivi du message AUCUN INSCRIT.
    - le code nationalité ne fait pas partie de ceux annoncés
    afficher : CODE NATIONALITE le code nationalité saisi INCORRECT.

    La fin de cette série d'affichages et donc de la phase 1 sera effective après la saisie d'une * à la place d'un code nationalité.

    Remarque générale :
    dans le contexte de ce projet, il n' y a pas deux skieurs de même nom à cette compétition.


    PHASE 2 : Suivi de la compétition.


    A l'arrivée d'un skieur :
    SAISIR
    - le numéro de dossard (un entier)
    -le temps réalisé (un réel : seconde et centièmes)
    Remarque : si après la saisie du numéro de dossard celui-ci correspond à un skieur deja arrivé ou non inscrit, le signaler par un message explicite et ne pas demander la saisie du temps.
    - un temps nul indique que le skieur a été disqualifié.

    Si la saisie a été complète afficher le résultat de ce skieur sur une ligne avec les informations suivantes :
    -le numéro de dossard
    -le nom
    -la nationalité
    -le temps ou la mention DISQUALIFIE
    Puis, de toute façon, sur le meme écran, le classement provisoire établit selon les temps croissants et à temps égal par nom.
    Un titre : CLASSEMENT PROVISOIRE
    et une ligne par concurrent non disqualifié avec les informations suivantes :
    - le rang
    - le numero de dossard
    - le nom
    - la nationalité
    - le temps.
    A temps égal, le rang est le même .
    La saisie d'un numéro de dossard égal à 0 indique que l'épreuve est terminée et entraine la passage à la PHASE 3.


    PHASE 3 : les résultats finaux

    les organisateur veulent pouvoir afficher à la demande :
    a) le classement final établi selon les temps croissants et à temps égal par nom.
    Un titre : CLASSEMENT FINAL
    une ligne par conccurent non disqualifié avec les informations suivantes :
    -rang
    -le numéro de dossard
    -le nom
    -la nationalité
    -le temps
    b) la liste des disqualifiés par numéro de dossard ou le message :
    AUCUN DISQUALIFIE
    pour chaque disqualifié, les informations suivantes sont à afficher :
    -le numéro de dossard
    -le nom
    -la nationalité

    100.
    la liste des skieurs forfaits (inscrit mais non participant à l'épreuve) par numéro de dossard ou le message : AUCUN FORFAIT
    Pour chaque non participant, les informations suivantes sont à afficher :
    -le numéro de dossard
    -le nom
    -la nationalité

    500.
    un tableau récapitulatif des équipes nationales présenté par nationalités.
    Pour chaque nation, les informations suivantes sont à afficher :
    -la nationalité
    -le code nationalité
    -le nombre d'inscrits
    -le nombre de participants
    -le nombre de classés
    -le temps moyen ou 0 (si aucun skieur n'est classé)
    chaque affichage devra être présentée en un tableau sur un seul écran.

    REMARQUE :

    -se conformer strictement à la situation énoncéé par le sujet
    -le nombre maximum de skieurs sera de 20 (valeur à ne pas controler lors de la phase 1)
    -chaque affichage sera réalisé sur un plein écran après effacement, et accompagné d'un titre indicatif

    DOSSIER

    Description attractive et promotionnelle du projet pour un utilisateur non informaticien (une page).

    Organisation de vos données en structures et tableaux.

    Algorithme schématique de l'ensemble faisant apparaitre les appels des fonctions sur une seule page.

    Listing du programme source convenablement commenté avec notament pour chaque fonction : son rôle, son prototype, la valeur retournée, l'utilité de chacun des paramètres et éventuellement le contexte de validité de cette fonction.

    Vos conclusions sur le projet.

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 082
    Par défaut
    Oula ....


    Mouai.


    Pour te donner des piste : calme toi.

    Si tu panique, tu va rien faire.

    Faut partir du debut :

    PHASE 1 : les inscriptions.


    Chaque futur participant doit s'inscrire et communiquer les données suivantes le concernant :

    -nom (15 caractères maximum)

    -code(2caractères)

    Le programme attribuera un numéro de dossard, selon l'ordre d'arrivée des participants en partant de 1 pour le premier et en ordre croissant pour les suivants.
    Bon, il faut utiliser ici une structure.

    Dans cette structure, on doit retenir
    Le numero de dossard
    Le nom
    Le code Pays


    Il y a quelque contrainte, a toi de les interpreter.

    Mais de maniere globale, il va falloir que tu reflechisse et que tu code un minimum si tu veux que l'on t'aide.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut projet en langage C
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main()
    {
        typedef char CH15[16];
        typedef char CH2[3];
        typedef char CH10[11];
        int tableau[5];
        int tableau[20];
        i++;
        j++;
     
    struct NAT;
    {
        CH10 nat;
    	CH2 code;
    };
     
    struct SKIEURS;
    {
    	CH15 nom;
    	CH10 nat;
    	CH2 code;
    }
     
    void main ()
    {
        printf("les nationalités permises\n");
        T nat[5]{{"FRANCE", FR},{"ITALIE", IT},{"LUXEMBOURG",LU),{"POLOGNE", PL},{"SUISSE",CH}};
    	CH15 lib;
    	CH2 code;
    };
     
    {
        SKIEURS Tsk[20];
        int nb = 0,i;
        CH15 nomlu;
        CH2 code;
        CH20 nationalite;
        gets(nomlu);
     
        while(nomlu[0] != '*')
        {
     
            if(code == FR,IT,LU,PL,CH)
            {
                //inscription
                gets(nomlu);
                for(i=0;i<nb&&strcmp(nomlu, Tsk[i].nom)!=0;i++) ;
                i-- Tsk[i+1]=Tsk[i];
                i++;
                strcpy(Tsk[i].nom, nomlu);
     
                nb++;
            }
        else
        { //affichage
            for(i=0, l='*', i<nb;i++)
            {
                if(l!=Tsk[i].nom[0])
                    {//CH+angement de lettre
                        l=Tsk[i].nom[0];
                        printf("%c\n",l);
                    }
                printf("%-20s%-15S%S2\n"), Tsk[i].nom, Tsk[i].nationalite, Tsk[i].code);
            }
            code =gets
            printf("FINI\n");
        }
     
            return 0;
    }

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut projet en cours
    merci SofEvans pour le coup de pouce.
    c bon si j'écris ca?


    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
    struct nat;
    {
        int i; //dossard
        CH10 nat;
        CH2 code;
    };     
     
    typedef CHAR[15]16;
    typedef CHAR[2]3;
     
    void main()
     
    printf(" Nom du participant : \n");
    scanf("%d", &nom);
    i = 1; i++;

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut
    je tiens à préciser que ce n'est pas encore fini mais si vous voyez une faute, s'il vous plait, faites-le moi savoir. merci

    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
    #include <stdlib.h>
    #include <stdio.h>
     
     
    typedef struct Skieur Skieur;
    struct Skieur
    {
        char Nom[16];
        char Code[3];
        int numeroDossard;
    };
     
    int main(void)
    {
     
        Skieur Participant[20];
        int nombreSkieur = 0;
        int i;i++;
        /* On commence la Phase I */
     
        int continuerEnregistrement = 1;
        while (continuerEnregistrement && nombreSkieur<20)
        {
            char Temporaire[16];
            fgets(Temporaire, sizeof(Temporaire), stdin);
     
     
     
            char *lf = strchr(Temporaire, '\n'); /* On cherche le caractere '\n'. */
            if (lf != NULL) /* S'il est present, ... */
                *lf = '\0'; /* ... on le supprime    */
            else
                fflush(stdin); /* Mauvaise vidange du tampon d'entre - a remplacer */
          }
     
           for (i=0; i<nombreSkieur; i++)
            do
     
        }
    return EXIT_SUCCESS;
    }

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Par défaut Syntaxe/logique
    Bonjour,
    Est-ce que tu as compilé le code que tu as donné dans ton message du 22.11 de 23.18?Tu n'as pas du le compiler,car il a des erreurs de syntaxe:
    -La fonction main() est déclarée deux fois
    -La variable tableau est déclarée deux fois
    -deux variables i et j non déclarées sont incrémentées
    et aussi sans doute des erreurs de logique par rapport à ce que tu veux faire :
    Je pense que tu voulais faire la déclaration suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct NAT 
    {
    CH10 nom;
    CH2 code;
    };
    et la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct SKIEURS 
    {
    CH15 nom;
    CH10 nat;
    CH2 code;
    };
    Il ne faut pas de ; derrière NAT et derrière SKIEURS,car la déclaration des struct doit être faite en une seule instruction.
    Un conseil :si tu es débutante en C,compile chaque fois que tu écris 20 lignes de code.Tu verras souvent les erreurs de syntaxe,tu apprendras plus vite à écrire une syntaxe correcte.
    Je vais regarder la suite de ce code pour voir s'il a d'autres erreurs.
    Autre erreur de syntaxe :
    T désigne apparemment un type dans l'instruction
    mais il n'a pas été défini (je ne pense pas qu'il le soit dans un header standard).

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Par défaut
    Conseils supplémentaires:
    -découper le programme en sous-fonctions.Par exemple,s'il y a une phase d'inscription et une phase de classement,on créera les fonctions
    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
     
    void inscription()
    {
    //corps de la fonction
    };
    /*ou int inscription() pour une fonction typée*/
     
    void classement()
    {
    //corps de la fonction
    };
    /* ou int (ou int*,char,float  etc..) classement pour une fonction typée*/
     
    /* on appellera les fonctions dans le main*/
    void main()
    {
    inscription();
    classement();
    }
    Pour les entrées-sorties,faire par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /*pour saisir un skieur */
    char Temporaire[20];
    printf("Saisir nom du skieur\n");
    gets(Temporaire);
    /*en mise au point,il est utile de vérifier que l'entrée s'est bien faite 
    en faisant après*/
    printf("Le nom saisi est :%s\n",Temporaire);

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Evite d'utiliser gets, prend plutot fgets pour les raisons suivantes : Pourquoi gets est-elle dépréciée en faveur de fgets ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Un projet : quel langage ?
    Par leiwulang dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 16/09/2010, 12h18
  2. Projet multi langages
    Par wanagro dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 10/07/2009, 11h05
  3. Mini projet en langage c
    Par hamzagorn dans le forum Débuter
    Réponses: 4
    Dernier message: 02/06/2009, 10h48
  4. un projet en langage dot
    Par sunriseprogramer dans le forum C
    Réponses: 3
    Dernier message: 24/11/2008, 00h37
  5. [doxygen] projet multi-langages
    Par JMLLB dans le forum Outils
    Réponses: 1
    Dernier message: 09/04/2008, 14h54

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