Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Programmation
  3. Développement de logiciels
  4. C
  5. Exercices
  6. Exercice sur les structures.

Exercice sur les structures.

Scheduled Pinned Locked Moved Exercices
6 Posts 4 Posters 2.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • AlemortA
    AlemortA
    Alemort
    wrote on last edited by
    #1

    <p> Exercice 1</p>
    <p>        Réaliser un algorithme qui permet d'afficher une structure qui contient l'âge, le nom, le prénom, et la ville.</p>
    <p> </p>
    <p><img alt="50hl.png" src="<base_url>/applications/sslimageproxy/interface/image.php?url=http://zupimages.net/up/14/15/50hl.png"/></p>
    <p></p><p>Exercice 2: Il sera un peu plus poussé</p>
    <p>  Nous allons améliorer le précédent programme.</p>
    <p>  Eux lieu de donner des valeurs prédéfinie pour le prénom, nom age, ville, nous allons laisser l'utilisateur  l'ai saisir 😉 </p>
    <p>  Une image devrait vous éclaircir la chose 😉 </p>
    <p>  </p>
    <p> <img alt="5fh2.png" src="<base_url>/applications/sslimageproxy/interface/image.php?url=http://zupimages.net/up/14/15/5fh2.png"/></p>
    <p></p><p>ps: Vous pouvez résoudre cette exercice en passant par un autres chemin, mais le but et de s'exercer au maniement des structures</p>
    <p>Vous pouvez poster vos codes sources et des images, pour que l'on puisse en discuter et peux être apprendre de nouvelles choses  😉 </p>
    <p>Mettez tout ça dans une balise spoil 😉 </p>

    1 Reply Last reply
    1
    • CyrionC
      CyrionC
      Cyrion
      wrote on last edited by
      #2

      <p>Vite fait en classe >.<</p>
      <p></p><blockquote class="ipsStyle_spoiler" data-ipsspoiler="">
      <pre class="ipsCode prettyprint">
      #include <stdio.h>
      #include <conio.h>

      struct Info
      {
      char Prenom[10];
      char Nom[15];
      int Age;
      char Ville[15];
      };

      void DemandeInfo(Info &P)
      {
      printf("-----Saisi des donnees-----\n\n\n");

      printf("Entrer votre prenom:");
      scanf("%s",P.Prenom);
      
      printf("Entrer votre nom:");
      scanf("%s",P.Nom);
      
      printf("Entrer votre age:");
      scanf("%i",&amp;P.Age);
      
      printf("Entrer votre ville actuelle:");
      scanf("%s",P.Ville);
      

      }

      void AfficherInfo(Info &P)
      {
      printf("\n\n\n-----Affichage des donnees-----\n\n\n");
      printf("Prenom: %s\n",P.Prenom);
      printf("Nom: %s\n",P.Nom);
      printf("Age: %i\n",P.Age);
      printf("Ville: %s\n",P.Ville);
      }

      int main()
      {
      Info Personne;

      DemandeInfo(Personne);
      AfficherInfo(Personne);
      
      getch();
      return 0;
      

      }
       </pre>
      <p></p></blockquote><p></p>

      1 Reply Last reply
      1
      • AlexMogA
        AlexMogA
        AlexMog
        Modérateur spécialisé
        wrote on last edited by
        #3

        <blockquote class="ipsQuote" data-cite="Cyrion" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="5200" data-ipsquote-contentid="478" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1397052741" data-ipsquote-username="Cyrion"><div>
        <div>
        <p>Vite fait en classe >.<</p>
        <p></p><blockquote class="ipsStyle_spoiler" data-ipsspoiler="">
        <pre class="ipsCode prettyprint">
        #include <stdio.h>
        #include <conio.h>

        struct Info
        {
        char Prenom[10];
        char Nom[15];
        int Age;
        char Ville[15];
        };

        void DemandeInfo(Info &P)
        {
        printf("-----Saisi des donnees-----\n\n\n");

        printf("Entrer votre prenom:");
        scanf("%s",P.Prenom);
        
        printf("Entrer votre nom:");
        scanf("%s",P.Nom);
        
        printf("Entrer votre age:");
        scanf("%i",&amp;P.Age);
        
        printf("Entrer votre ville actuelle:");
        scanf("%s",P.Ville);
        

        }

        void AfficherInfo(Info &P)
        {
        printf("\n\n\n-----Affichage des donnees-----\n\n\n");
        printf("Prenom: %s\n",P.Prenom);
        printf("Nom: %s\n",P.Nom);
        printf("Age: %i\n",P.Age);
        printf("Ville: %s\n",P.Ville);
        }

        int main()
        {
        Info Personne;

        DemandeInfo(Personne);
        AfficherInfo(Personne);
        
        getch();
        return 0;
        

        }
         </pre>
        <p></p></blockquote><p></p>
        </div>
        </div></blockquote>
        <p>Normalement, ça ne devrais pas compiler 😉 </p><p>
        Voici la correction:</p>
        <p>(par contre, c'est pas du tout sécu ton truc, y'a un risque de segfault énorme! ne faites JAMAIS confiance en ce qu'entre vos utilisateurs 😉 )</p>
        <pre class="ipsCode prettyprint">
        #include <stdio.h>
        #include <conio.h>

        struct Info
        {
        char Prenom[10];
        char Nom[15];
        int Age;
        char Ville[15];
        };
        // Le typpage "Info" n'existe pas. Le véritable typpage est "struct Info", puisque tu n'as absolument pas utilisé de typedef . On peut régler le problème en rajoutant un typedef, comme ici:
        // typedef s_ma_structure type_name;

        // Ici, tu utilise "struct Info &P", donc tu demande une référence de P, les références existent uniquement en C++ . Il faut donc envoyer un pointeur. Et ne surtout pas oublier de changer les "." par des "->" (car pointeurs)
        void DemandeInfo(struct Info *P)
        {
        printf("-----Saisi des donnees-----\n\n\n");

            // ATTENTION!
        printf("Entrer votre prenom:");
        scanf("%s",P-&gt;Prenom);
        
        printf("Entrer votre nom:");
        scanf("%s",P-&gt;Nom);
        
        printf("Entrer votre age:");
        scanf("%i",&amp;P-&gt;Age);
        
        printf("Entrer votre ville actuelle:");
        scanf("%s",P-&gt;Ville);
        

        }

        void AfficherInfo(struct Info *P)
        {
        printf("\n\n\n-----Affichage des donnees-----\n\n\n");
        printf("Prenom: %s\n",P->Prenom);
        printf("Nom: %s\n",P->Nom);
        printf("Age: %i\n",P->Age);
        printf("Ville: %s\n",P->Ville);
        }

        int main()
        {
        struct Info Personne;

            // Ici, tu demande l'adresse de "Personne" et non pas le contenu 
        DemandeInfo(&amp;Personne);
        AfficherInfo(&amp;Personne);
        
        getch();
        return 0;
        

        }
        </pre>
        <p>Ensuite, la norme UNI de C stipule ne pas utiliser les majuscules, SAUF au niveau des macros 😉 . C'est en C++ qu'on définit des majuscules UNIQUEMENT au début des objets (et non pas des attributs) et au niveau des nom des methodes (for exemple: getGetter())</p>

        Multiplayer GameDev @ Unexpected
        

        Mon CV

        1 Reply Last reply
        1
        • AlexMogA
          AlexMogA
          AlexMog
          Modérateur spécialisé
          wrote on last edited by
          #4

          <p>Ma petite version:</p>
          <pre class="ipsCode prettyprint">
          #include <unistd.h>
          #include <stdio.h>

          typedef struct s_user
          {
          char *name;
          char *last_name;
          unsigned int *age;
          char *city;
          } t_user;

          int read_data(t_user *user)
          {
          unsigned int readed;
          char buffer[100];
          char *questions[] = {"Your name?", "Your last name?", "Your age?", "Your city?"};
          int types[] = {0, 0, 1, 0};
          int i;
          void *first_addr;

          first_addr = &amp;user-&gt;name;
          i = 0;
          readed = 0;
          while (i &lt; 4)
          {
          	printf("%s\n", questions[i]);
          	if ((readed = read(0, buffer, 15)) &lt; 0)
          		return (1);
          	buffer[readed] = 0;
          	printf("%c", '\n');
          	if (!types[i])
          	{
          		if (((char*)(*first_addr) = malloc(strlen(buffer) * sizeof(char))) == NULL)
          			return (1);
          		memcpy((char*)(*fist_addr), buffer, strlen(buffer) * sizeof(char));
          		first_addr += sizeof(void*);
          	}
          	else
          	{
          		(unsigned int)(*first_addr) = atoi(buffer);
          		first_addr += sizeof(int);
          	}
          	++i;
          }
          return (0);
          

          }

          // Pointeur constant car non modifié
          void show_data(const t_user *user)
          {
          printf("First Name: %s\nName: %s\nAge: %d\nCity: %s\n",
          user->name, user->last_name, user->age, user->city);
          }

          int main(void)
          {
          t_user userdata;

          if (read_data(userdata))
          {
          	fprintf(stderr, "Error on reading.");
          	return (1);
          }
          // J'envois un pointeur car je ne vais pas copier toute une structure dans la stack... Pouah!
          show_data(&amp;userdata);
          return (0);
          

          }
          </pre>

          Multiplayer GameDev @ Unexpected
          

          Mon CV

          1 Reply Last reply
          1
          • CyrionC
            CyrionC
            Cyrion
            wrote on last edited by
            #5

            <p>Meh, je fais du C++ à l'habitude, je me souvenais pas de toute les petites règles 😛 </p>
            <p> </p>
            <blockquote class="ipsQuote" data-ipsquote=""><div>
            <p></p><span style="color:rgb(40,40,40);font-family:Helvetica, helvetica, arial, sans-serif;">par contre, c'est pas du tout sécu ton truc, y'a un risque de segfault énorme! ne faites JAMAIS confiance en ce qu'entre vos utilisateurs </span></div></blockquote>
            <p> </p>
            <p>Personne a demandé à ce qu'il le soit. 🙂 </p>

            1 Reply Last reply
            0
            • AzadA
              AzadA
              Azad
              wrote on last edited by
              #6

              <p>Pas d'autres participants ?<br/><br/>
              Merci Alemort d'avoir proposé un exercice comme ça, sympa comme idée (et à refaire si possible !). 😉 </p>

              Administrateur du forum.
              Contactez-moi par message privé ou par mail.

              1 Reply Last reply
              0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              • Login

              • Login or register to search.
              Powered by NodeBB Contributors
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • World
              • Users
              • Groups