Question en programmation c

Fermé
ch@im@ - 13 avril 2009 à 22:33
 CKoiDoncEnkor.. - 14 avril 2009 à 22:29
Bonjour,
j'ai des difficultés à résoudre ce programme " écrire un programme c qui permet d'afficher votre emploi de temps selon le jour de semaine (lundi ,mardi.....)
exemple: Donner le jour: lundi
Votre emploi de temps est
S1:anglais
S2:algo
S3:Algo
S4:---
S5:programmation

Merci pour votre aide.

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
14 avril 2009 à 00:12
Hello,
Remarque pour le code :
Ton printf final est mal utilisé. T'as oublié de spécifier le format "%s".
De plus attention à l'utilisation de scanf, surtout pour les chaînes de caractères. Donne au moins la taille maximale dans le format ou utilise fgets.
Lorsque tu fais : scanf(e[i].lejour); en dehors des boucles for, i vaudra 5. Tu es donc en dehors du tableau. Tu as aussi oublié de spécifier "%s".
La taille pour tes libellés est trop petite. Il ne faut pas oublier la place pour le \0 final.
Et enfin la fonction main() renvoie un int.

Remarque algorithmique :
Toujours concernant le scanf(e[i].jour), tu vas récrire dans la structure. Tu ne pourras pas connaître l'emploi du temps de la journée rentrée par l'utilisateur. Il faudrait utiliser un buffer et effectuer une comparaison avec strcmp pour savoir quelle journée affichée.

#include <stdio.h>
#include <string.h>

struct seance
{ 
    char libelle [3];
    char matiere [30];
};

struct jour
{ 
    char lejour[20];
    struct seance s[5];
};

int main(void)
{
    struct jour e[5];
    char jour[20];
    int i,j;
    for(i=0;i<5;i++)
    {
        printf ("donner le jour : ");
        scanf("%19s",e[i].lejour);
        for (j=0;j<5;j++)
        {
            printf("donner la libelle : ");
            scanf("%2s",e[i].s[j].libelle);
            printf("donner la matiere : ");
            scanf("%29s",e[j].s[j].matiere);
        }
    }

    printf("donner le jour") ;
    scanf("%19s",jour);
    printf("votre emploi de temp est : \n");
    for (i=0;i<5;i++)
    {
        if(strcmp(jour,e[i].lejour)==0)
            for (j=0;j<5;j++)
            {
                printf("%s:%s\n",e[i].s[j].libelle,e[j].s[j].matiere);
            }
    }

    return 0;
}

Cdlt
1
NonMaisOh !!
14 avril 2009 à 06:04
C cool fiddy,

Merci pour ch@im@.

Cdlt.

L'enfer est souvent pavé de bonnes intentions... mais à quoi bon crier au fond
0
Merci pour votre aide :)
0
CKoiDoncEnkor.. > ch@im@
14 avril 2009 à 22:29
Slt,

Je suis content que fiddy t'ai apporté des solutions.

fiddy c'est le genre "d'entité" qui arrive à t'apporter des solutions à des problèmes qui n'existent pas - c'est très fort non ??.

Bonne soirée ch@im@.

L'enfer on a beau dire... y a rien à en faire..(hé hé)
0
La résolution n'est pas évidente.
Que nous proposes-tu ?
0
j'ai des erreur dans la dernière partie, comment je fais?


#include<stdio.h>
#include<conio.h>
struct seance
{ char libelle [2];
char matiere [30];
};
struct jour
{ char lejour[20];
struct seance s[5];
};
main()
{
struct jour e[5] ;
int i,j ;
for(i=0;i<5;i++ )
{
printf ("donner le jour");
scanf("%s",e[i].lejour);
{
for (j=0;j<5;j++)
{
printf("donner la libelle ");
scanf("%s",e[i].s[j].libelle);
printf("donner la matiere");
scanf("%s",e[j].s[j].matiere);
}
}
}
printf("donner le jour") ;
scanf(e[i].lejour);
printf("votre emploi de temp est");
for (i=0;i<5;i++)
{
for (j=0;j<5;j++)
{
printf ( e[i].s[j].libelle,":",e[j].s[j].matiere ) ;
}
}

getch() ;
}
0
NonMaisOh !! > ch@im@
13 avril 2009 à 23:35
Bonsoir,

Bouhh.... moi j'y connais rien au Pascal++ V5.1 Objet.

En effet dites donc ça a l'air compliqué ce langage (:>).
0
NonMaisOh !! > ch@im@
13 avril 2009 à 23:40
Re,

Faudrait demander à fiddy - il est où fiddy encore...."le copain de Google" ....

"fiddy ?? .. au taff fiddy !".

^^
crdlt.
0