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 :

aide pour resoudre des exo en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut aide pour resoudre des exo en C
    bonjour,
    si vous pouvez me donnes des idées pour resoudre cette serie d'exercie ce sera gentille de votre part voila les exo:

    Exo 1:
    Le but de cet exercice est d'écrire une fonction (uniquement) qui inverse le contenu d'une liste chaînée, et cela sans effectuer d'allocation dynamique de mémoire.


    Exo 2:

    Déclarer un tableau nb_jour qui doit être initialisé de façon à ce que nb_jour [i] soit égal au nombre de jours du ieme mois de l'année pour i allant de 1 à 12 (nb_jour[0] sera inutilisé).

    Ecrire une procédure d'initialisation de nb_jour qui utilisera l'algorithme suivant:
    -si i vaut le nombre de jours est 28;
    -sinon si i pair et i<= 7 ou i impair et i>7 le nombre de jours est 30;
    -sinon le nombre de jours est 31.
    ecrire une procédure d'impression des 12 valeurs utiles de nb_jour.
    La procédure main se contentera d'appeler les procédures d'initialisation et d'impression de nb_jour.


    Exo 3:
    Soit P un pointeur qui 'pointe' sur un tableau A :
    int A[] = {12, 23, 34, 45, 56, 78, 89, 90};
    int *P;
    P=A;
    Quelle valeurs ou adresses fournissent ces expressions:
    a) *P+2
    b) *(P+2)
    c) &P+1
    d) &A[4]-3
    e) A+3
    f) &A[7]-P
    g) P+(*P-10)
    h) *(P+*(P+8)-A[7])

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    On ne fait pas tes devoirs ici.

    Mais on peut t'aider. Poste tes réponses provisoires, on te corrigera et t'aidera à comprendre tes fautes.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut aide pour resoudre des exo en C
    Bonsoir,
    corriger pour moi ça

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
      int main ()
     
      { 
     char  ch1[]="ABCDljklj";
     char  ch2[]="1234"; 
     printf("%d \n",lg_chaine1(ch1) ) ;
     printf("%d \n",lg_chaine1(&ch2));
     
    return 0;
      }
     
    int lg_chaine1(char A[]) {
     
    return strlen (A);
     
    }
     
    int lg_chaine2(char *A) {
     
    return strlen (A);
     
    }

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    L'exercice ne parle pas de chaîne de caractères, mais de liste chaînée...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut aide pour resoudre des exo en C
    Bonsoir,
    corriger pour moi ça
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
      int main ()
     
      { 
     char  ch1[]="ABCDljklj";
     char  ch2[]="1234"; 
     printf("%d \n",lg_chaine1(ch1) ) ;
     printf("%d \n",lg_chaine1(&ch2));
     
    return 0;
      }
     
    int lg_chaine1(char A[]) {
     
    return strlen (A);
     
    }
     
    int lg_chaine2(char *A) {
     
    return strlen (A);
     
    }

  6. #6
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Par défaut
    Bonsoir,
    corriger pour moi ça s'il vous plait

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main ()

    {
    char ch1[]="ABCDljklj";
    char ch2[]="1234";
    printf("%d \n",lg_chaine1(ch1) ) ;
    printf("%d \n",lg_chaine1(&ch2));

    return 0;
    }

    int lg_chaine1(char A[]) {

    return strlen (A);

    }

    int lg_chaine2(char *A) {

    return strlen (A);

    }
    merci
    Comme l'a indiqué Médinoc, il ne faut pas confondre listes chainées et chaines de caractères.

    Dans votre code vous inversez simplement les chaines de caractères lors de l'affichage alors qu'il est demandé de prendre une liste chainée et de l'inverser comme par exemple.

    1 -> 2 -> 3 -> 4 -> 5 doit donner 5 -> 4 -> 3 -> 2 -> 1 chaque chiffre représentant en faire une structure composer de deux attributs, la valeur de l'entier (ou du caractère, ou autre) et un pointeur vers l'élément suivant de la chaine.

    Voici un lien sur les listes chainées : http://chgi.developpez.com/pile/

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut aide pour resoudre des exo en C
    bonsoir,
    voila l'exo que je voudrais que vous me corriger:
    1-Declarer et initialiser deux tableaux de carecteres (ch1et ch2 )
    2-Ecrire une fonction (lg_chaine1) qui admette en parametre un tableau de
    carecteres se terminant par un null, et qui rende le nombre de carecteres du tableau (null exclu)

    3-Ecrire une fonction (lg_chaine2) qui implémente le même interface que lg_chaine1, mais en donnant à son parametre le type pointeur char.
    4- La procedure main impriera le nombre d'éléments de ch1 et ch2 par un appel à lg_haine1 et lg_chaine2.
    Excusez moi par ce que je metrise pas bien le français & je vous remercie en avance

    Prog:

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
      int main ()
     
      { 
     char  ch1[]="ABCDljklj";
     char  ch2[]="1234"; 
     printf("%d \n",lg_chaine1(ch1) ) ;
     printf("%d \n",lg_chaine1(&ch2));
     
    return 0;
      }
     
    int lg_chaine1(char A[]) {
     
    return strlen (A);
     
    }
     
    int lg_chaine2(char *A) {
     
    return strlen (A);
     
    }

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ould64 Voir le message
    bonsoir,
    voila l'exo que je voudrais que vous me corriger:
    1-Declarer et initialiser deux tableaux de carecteres (ch1et ch2 )
    2-Ecrire une fonction (lg_chaine1) qui admette en parametre un tableau de
    carecteres se terminant par un null, et qui rende le nombre de carecteres du tableau (null exclu)

    3-Ecrire une fonction (lg_chaine2) qui implémente le même interface que lg_chaine1, mais en donnant à son parametre le type pointeur char.
    4- La procedure main impriera le nombre d'éléments de ch1 et ch2 par un appel à lg_haine1 et lg_chaine2.
    Excusez moi par ce que je metrise pas bien le français & je vous remercie en avance

    Prog:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main ()

    {
    char ch1[]="ABCDljklj";
    char ch2[]="1234";
    printf("%d \n",lg_chaine1(ch1) ) ;
    printf("%d \n",lg_chaine1(&ch2));

    return 0;
    }

    int lg_chaine1(char A[]) {

    return strlen (A);

    }

    int lg_chaine2(char *A) {

    return strlen (A);

    }
    Faut pas utiliser strlen() car cet exercice a justement pour but de recréer cette fonction. Cela permet à l'étudiant de comprendre comment sont gérées les chaînes en C.
    Donc les fonctions lg_chaine doivent faire elle-même le compte (et non déléguer ça à strlen). Donc elles doivent
    - initialiser un compteur
    - instancier une boucle "tant que" pour traiter chaque caractère de la chaîne (tant que "fin de chaîne" non atteinte) et incrémenter le compteur
    - renvoyer le nb de caractères comptés

    Citation Envoyé par ould64 Voir le message
    printf("%d \n",lg_chaine1(ch1) ) ;
    printf("%d \n",lg_chaine1(&ch2));
    ch2[0] est un caractère. Donc &ch2[0] est l'adresse de ce caractère donc c'est un "char étoile". Or &ch2[0] <=> ch2 donc ch2 est un char étoile. Donc &ch2 est l'adresse de ce "char étoile" donc c'est un "char étoile étoile". Or la fonction "lg_chaine2" attend un "char étoile". Si tu lui passes "&ch2" tu lui passes un "char étoile étoile" ce qui n'est pas bon. N'oublie pas qu'un "char []" peut être vu comme un "char *" Donc si, à ta fonction "lg_chaine1" qui attend un "char []" tu lui passes "ch1" ben à ta fonction "lg_chaine2" qui attend un "char *" faut lui passer "ch2".
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut aide pour resoudre des exo en C
    Citation Envoyé par Sve@r Voir le message
    Faut pas utiliser strlen() car cet exercice a justement pour but de recréer cette fonction. Cela permet à l'étudiant de comprendre comment sont gérées les chaînes en C.
    Donc les fonctions lg_chaine doivent faire elle-même le compte (et non déléguer ça à strlen). Donc elles doivent
    - initialiser un compteur
    - instancier une boucle "tant que" pour traiter chaque caractère de la chaîne (tant que "fin de chaîne" non atteinte) et incrémenter le compteur
    - renvoyer le nb de caractères comptés
    je vous remercie, a votre avi je dois enlever strlen()!

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut aide pour resoudre des exo en C
    SVP donnez l'aidez et les etapes que je dois suivre pour faire cette exo:

    1- Ecrire un prog qui lit un verbe réguulier en "er" au clavier et qui en affiche la conjugaison au présent de l'indicatif de ce verbe.
    Contrôlez s'il s'agit bien d'un verbe en "er" avant de conjuger.
    merci.

  11. #11
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ould64 Voir le message
    je vous remercie, a votre avi je dois enlever strlen()!
    C'est obligatoire. Cet exo a pour but de montrer comment est faite une chaîne (comment manipuler ses caractères, comment passer de l'un à l'autre, etc). Si tu ne fais qu'appeler strlen() le but ne sera pas atteint et l'exo sera raté...

    Citation Envoyé par ould64 Voir le message
    SVP donnez l'aidez et les etapes que je dois suivre pour faire cette exo:

    1- Ecrire un prog qui lit un verbe réguulier en "er" au clavier et qui en affiche la conjugaison au présent de l'indicatif de ce verbe.
    Contrôlez s'il s'agit bien d'un verbe en "er" avant de conjuger.
    merci.
    1) le contrôle
    Il s'agit de vérifier que les deux dernières lettres du verbe sont "er"

    2) la conjugaison
    Un verbe régulier en "er" (comme "monter") se conjugue en
    • je monte
    • tu montes
    • il monte
    • nous montons
    • vous montez
    • ils montent

    Donc il te faut isoler d'un coté le début du verbe (ce qui est avant "er") puis afficher cet élément avec, à chaque fois, une terminaison différente.
    Moi je mettrais les 6 terminaisons dans un tableau et je ferais une boucle...

    PS: ça plus l'exo sur "lire les données à partir d'un tableau et les stocker dans une liste chaînée" tu t'ennuies pas !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Aide pour resoudre un exo
    Par islah dans le forum Langage
    Réponses: 1
    Dernier message: 13/05/2008, 16h34
  2. Réponses: 3
    Dernier message: 05/12/2005, 02h30
  3. Besoin d'aide pour utilisation des trie
    Par bluecurve dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2005, 08h04
  4. [Persistance]Aide pour sauver des données en XML
    Par le Daoud dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/06/2005, 13h39
  5. [CR8.5] Aide pour lier des etats
    Par Silvinho42 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 28/04/2005, 10h11

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