Bonjour à tous,

voila mon programme (ci dessous) le but de celui ci et afficher les réponses a un questionnaire
on doit rentrer son nom et son code postale dans des fonctions différentes et dans une troisième les afficher :
pour le programme je suis pas un très grand programmateur donc y doit surement être possible de le simplifié.
merci d'avance de votre aide car le problème c'est qu'il affiche de truc bizarre c'est à dire smiley ou '' ou #

la fonction saise_nom nous demande d'entrer un nom
la fonction void format_alphabetique vérifie si ce sont des caractères et pas des chiffres
la fonction saisie_code nous demande d'entrer un code postal
la fonction void format_numerique vérifie si ce sont des chiffres
la fonction void coherence_codepostal vérifie si le code postal existe compris entre 01000 et 97999
la fonction int puissance(int a, int b) me donne la valeur de a^b

la fonction void affiche_caractéristique doit m'afficher le nom saisie dans la fonction précédente si il est correct et le code postal si il est correct

Sans oublier le menu ^^

Code C : 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void format_alphabetique(); //vérifie si ce sont des caractères
void format_numerique(); // vérifie si ce sont de chiffre
void menu();
void coherence_codepostal(); // vérifie si le code postal existe
int puissance(int a, int b);
 
 
//____________________________________________Fonctions pour Saisie_nom__________________________________
 
void saisie_nom(char nom[])
      {
       //char nom[40];
       printf("\nComment t'appelles-tu petit ? ");
       scanf("%s", nom);
       format_alphabetique(nom);
      }
 
void format_alphabetique(char saisie[])
    {
      int g;
      char nom[40];
      g=0;
       while ((saisie[g]!= '\0') && (g<=40) && (((saisie[g]>= 'a') && (saisie[g]<= 'z')) || ((saisie[g]>= 'A') && (saisie[g]<= 'Z'))))  // Vérification de la saisie
             {
              printf("%c",saisie[g]);
              g=g+1;
              }
      if ((g>40)||(saisie[g]!= '\0'))         //Résultat de la vérification de la saisie du nom
          {
          printf("\n\aErreur Veuillez reccomencer!! \n");
          saisie_nom(nom);
          }
          printf("\nVous avez saisie un nom correct!! Merci");
          menu();
    }
 
//_______________________________________________Fonctions pour Saisie_code_______________________________
 
void saisie_codepostal(char codepostal[])
      {
       char codep[6];
       printf("\nQuelle est ton code postal ? ");
       scanf("%s",codep);
       format_numerique(codep);
 
      }
 
void format_numerique(char saisie[])
     {
      int g,cod,z,code;
      char codepostal[6];
      g=0;
      z=4;
      code=0;
       while ((saisie[g] >= '0') && (saisie[g] <= '9') )  // Vérification de la saisie
             {
              cod= puissance(10,z);
              code=(saisie[g]-48)*cod+code;
              z=z-1;
              g=g+1;
              }
      if ((g=5)&&(saisie[g]== '\0'))         //Résultat de la vérification de la saisie du nom
          {
          printf("\nVous avez saisie un code correct!! Merci");
 
          coherence_codepostal(code);
          }
      else
          {
          printf("\n\aErreur Veuillez reccomencer!! \n");
          saisie_codepostal(codepostal);
          }
     }
 
void coherence_codepostal(int cod)
    {
     char codepostal[6];
     if  ((cod >= 1000) && (cod <= 97999))
         {
          printf("\n Code valide!!");
         menu();
         }
     else
         {
         printf("\n Code invalide, ressayer!!");
          saisie_codepostal(codepostal);
         }
    }
 
int puissance(int a, int b)
{
   int i,puis;
   puis=a;
   if (b==0) puis=1;
    else{
   for(i=1; i<b;i=i+1)
      {
       puis=puis*a;
      }}
   return puis;
}
 
//_____________________________________Affiche les caractéristiques________________________________
 
void affiche_caracteristique(char codepostal[], char nom[])
      {
      printf("\n %s", codepostal);
      printf("\n___________\n");
      printf("\n %s", nom);
      }
 
 
//_______________________________________Cette fonction propose le menu du questionnaire._________________
 
void menu()
     {
      int choix;
      char nom[40];
      char codepostal[6];
      do
      {
      printf("\nQuestionnaire : \n (1) Saisie nom \n (2) Saisie du code postal \n (3) Affichage des caracteristiques de la personne \n (4) Fin :");
      scanf("%d",&choix);
      }
      while ((choix!=1)&(choix!=2)&(choix!=3)&(choix!=4));
      switch (choix)
      {
        case 1: saisie_nom(nom);
               break;
        case 2: saisie_codepostal(codepostal);
               break;
        case 3: affiche_caracteristique(codepostal,nom);
               break;
        case 4: return;
               break;
        default : printf("Erreur de choix! Veuillez recommencer s'il vous plait\n\n");
               break;
      }
     }
 
//_____________________________________Programme_____________________________________________________________
 
int main()
{
   menu();
return 0;
}