Exercice en langage C

Résolu
yadhus Messages postés 34 Statut Membre -  
 amigo -
Bonjour, j'ai un problème avec un exercice, Voilà l'énoncé ainsi que le code source que j'ai essayé:
Je vous préviens que je suis encore débutant:

Exercice 1 :

Ecrire un programme qui permet de saisir un entier puis d’afficher le jour de la semaine correspondant en utilisant un tableau de pointeur.

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

typedef char *string;

int main () {
printf ("Donner un entier\n");
int j;
scanf ("%d",&j);
string *jour[7];

strcpy (*jour[1],"Lundi");
strcpy (*jour[2],"Mardi");
strcpy (*jour[3],"Mercredi");
strcpy (*jour[4],"Jeudi");
strcpy (*jour[5],"Vendredi");
strcpy (*jour[6],"Samedi");
strcpy (*jour[7],"Dimanche");

puts (*jour[j]);

return 0;
}
Configuration: Mac OS X
Safari 523.15

8 réponses

  1. pitifarfadet
     
    Bonjour j'ai un problème avec un exercice tout b^te, mais j'arrive pas à otenir ce que je veux. voici l'énnoncer:

    Ecrire un programme qui lit 10 nombres entrés par l'utilisateur, puis qui indique lesquels d'entre eux sont dupliqués.

    et voici ce que j'ai fais(je suis novice en C, alors ne me réponder des truc hyper compliquer merci!!):

    #include <stdio.h>
    #include <stdlib.h>

    int main (void)
    {
    int tab[10];
    int i,a,num;

    for (i = 1; i < 11; i++) tab[i-1] = i;

    for(i=0; i<10; i++){
    printf("entrer un nombre:");
    scanf("%d", &tab[i]);
    }

    for(i=1; i<10;i++){
    for(a=0; a<10; a++) {
    if(tab[a]==tab[a+1]){
    num=tab[a+1];
    tab[a+1]=tab[a];
    num=tab[a];
    }
    }
    }

    for(num=0; num<10; num++) printf("%d ", tab[num]);

    return 0;
    }

    et celui la aussi:

    #include <stdio.h>
    #include <stdlib.h>

    int main (void)
    {
    int tab[10];
    int i,num;

    for (i = 1; i < 11; i++) {
    printf("entrer un nombre:");
    scanf("%d", &tab[i-1]);
    }
    do{
    if(tab[i]==tab[i+1]) num=tab[i];
    }while(i<10);

    printf("%d", num);
    return 0;
    }

    si quelqu'un pourrais me dire ce qui cloche?? merci d'avance!
    4
  2. L'info
     
    Salut

    Essaye ça, je pense que ça marchera.

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

    typedef char *string;

    int main () {
    printf ("Donner un entier\n");
    int j;
    scanf ("%d",&j);
    string *jour = malloc ( 7 * sizeof(string) );

    strcpy (jour[0],"Lundi");
    strcpy (jour[1],"Mardi");
    strcpy (jour[2],"Mercredi");
    strcpy (jour[3],"Jeudi");
    strcpy (jour[4],"Vendredi");
    strcpy (jour[5],"Samedi");
    strcpy (jour[6],"Dimanche");

    puts (jour[j]);

    return 0;
    }
    1
  3. yadhus Messages postés 34 Statut Membre 3
     
    Merci beaucoup les gars
    1
  4. amigo
     
    Salut,

    La déclaration des variables doit etre juste apres main()

    Je ne suis pas expert en C++, mais j'ai compilé ce programme et il marche.

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

    typedef char *string;

    int main () {
    int j;
    string jour[7][10];
    strcpy (jour[0][0],"Lundi");
    strcpy (jour[1][0],"Mardi");
    strcpy (jour[2][0],"Mercredi");
    strcpy (jour[3][0],"Jeudi");
    strcpy (jour[4][0],"Vendredi");
    strcpy (jour[5][0],"Samedi");
    strcpy (jour[6][0],"Dimanche");

    printf ("Donner un entier entre 1 et 7\n");
    scanf ("%d",&j);

    if ((j<1) || (j>7))
    printf("le nombre doit etre compris entre 1 et 7\n");
    else
    printf ("le jour de la semaine est : %s\n",jour[j-1][0]);

    getch();
    return 0;
    }

    salut.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. star.88 Messages postés 3 Statut Membre
     
    je ss etudiante et j'ai un prb avec cette exo et voici mon msn star.88@live.fr
    TP SI
    soit un fichier "ETUDIANT"d'ou l'enregisterment (article) à le format suivant:
    Etudiant Nom Prenom Date de naiss Institut Sexe
    N(6) A(20) A(20) jj/mm/aa A(20) M/F

    1. Declarer un enregistrement du fichier ETUDIANT en C ?
    2. Ecrire un programme en C permettant la creation du fichier ETUDIANT ?

    le menu doit etre afficher comme suit:
    ------------------------------------------------------------------------------------------------------------------------------------------------------------
    Université Mentouri Constantine

    Faculté des sciences de l'ingenieurs
    Deprtement d'informatique
    Module: SI Realiser par :
    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    *Faite votre choix:

    1- Creation 4- Afficher Etudiants
    2- Afficher 5- Afficher Etudiantes
    3- Eclater 6- Afficher le plus jeune etudiant
    7- Afficher la plus jeune etudiante
    --------------------------------------------------------------------------------------------------------------------------------------------------------------
    *Utiliser l'instruction ( Switch case)*
    0
  7. amigo
     
    Bonjour,

    Le premier exercice n'était pas loin de la solution, la première boucle for ne sert à rien, les deux autres boucles for imbriquées n'étaient pas bien indexées.

    Ma correction (je n'ai pas testé).
    #include <stdio.h>
    #include <stdlib.h>
    
    int main (void)
    {
    int tab[10];
    int i,a,num;
    
    for(i=0; i<10; i++){
    printf("entrer un nombre:");
    scanf("%d", &tab[i]);
    }
    
    //verification
    printf("Vous avez saisi:\n");
    for(num=0; num<10; num++) printf("tab[%d] = %d\n", num,tab[num]);
    
    for(i=0; i<9;i++){
    for(a=1; a<10; a++) {
    if(tab[i]==tab[a]){
    printf("element %d = element %d = %d\n",i,a,tab[i]);
    }
    }
    }
    return 0;
    }
    


    Le deuxième exercice n'est pas bon au niveau de la boucle do while
    do{
    if(tab[i]==tab[i+1]) num=tab[i];
    }while(i<10);

    Premièrement la variable i n'est pas initialisée, elle aura certainement la valeur de sortie de la première boucle for, c a d i=11, donc les éléments comparés sont tab[11] et tab[12] alors que tab est dimensionné pour 10 entiers...
    De ce fait la boucle do ne s'execute qu'une fois puisque la condition de sortie est satisfaite.

    Deuxièmement, si i etait inférieur à 10, la boucle do while serait infinie parce que i n'est jamais incrémenté.

    Troisièmement la logique de comparaison n'est pas bonne, parce que tu ne compares que deux éléments consécutifs et non un élement à tous les autres.

    A+.
    0
  8. amigo
     
    Ah, au fait, rajoute un un getch() à la fin du prog pour laisser l'affichage de l'écran

    printf("element %d = element %d = %d\n",i,a,tab[i]);
    }
    }
    }
    getch();
    return 0;
    }
    0
  9. amigo
     
    Et en relisant, je trouve enoire une erreur, alors je remet le programme complet:

    <code>
    #include <stdio.h>
    #include <stdlib.h>

    int main (void)
    {
    int tab[10];
    int i,a,num;

    for(i=0; i<10; i++){
    printf("entrer un nombre:");
    scanf("%d", &tab[i]);
    }

    //verification
    printf("Vous avez saisi:\n");
    for(num=0; num<10; num++) printf("tab[%d] = %d\n", num,tab[num]);

    for(i=0; i<9;i++){
    for(a=i+1; a<10; a++) {
    if(tab[i]==tab[a]){
    printf("element %d = element %d = %d\n",i,a,tab[i]);
    }
    }
    }
    getch();
    return 0;
    }
    <code>
    0