Problem avec un programme

Résolu/Fermé
BloodKnight Messages postés 17 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 27 mars 2008 - 23 févr. 2008 à 18:10
BloodKnight Messages postés 17 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 27 mars 2008 - 27 févr. 2008 à 23:40
Bonjour,
j ai fait un programme avec les fontions auquel vous donné un chiffre et il affiche le moin correspendant,
mais le prof nous a demander de le modifier a fin que le moi soit comme une valeur de retour de cette fontion
je l ai fait mais lors de l'affichage il s'affiche le moin correspandant à ( par exemple 1) est <null>
à votre avis c'est quoi le problème et que dois je faire bon voici le programme:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
char moins(int n)
{
char s1[12]="janver",s2[12]="fevrier",s3[12]="mars",s4[12]="avril",s5[12]="may";
char s6[12]="juin",s7[12]="juillet",s8[12]="aout",s9[12]="octorber",s10[12]="september",s11[12]="november",s12[12]="december";
switch(n)
{
case 1: {return s1[6];break;}
case 2: {return s2[7];break;}
case 3: {return s3[4];break;}
case 4: {return s4[5];break;}
case 5: {return s5[3];break;}
case 6: {return s6[4];break;}
case 7: {return s7[7];break;}
case 8: {return s8[5];break;}
case 9: {return s9[8];break;}
case 10: {return s10[9];;break;}
case 11: {return s11[7];break;}
case 12:{return s12[8];break;}
}
}
int main()
{
char s[12];
int n;
do {
printf("donner le nombre du moin que vous voulez savoir\t\n");
scanf("%d",&n);
}while((n<=0)||(n>12));
printf(" le moin %d et %s\t",n,moins(n));
getch();
return 1;
}

4 réponses

Bonjour,

le corrigé:

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

char *mois(int n)
{
char s1[12]="janvier",s2[12]="fevrier",s3[12]="mars",s4[12]="avril",s5[12]="mai";
char s6[12]="juin",s7[12]="juillet",s8[12]="aout",s9[12]="octobre",s10[12]="septembre",s11[12]="novembre",s12[12]="decembre";
switch(n)
{
case 1: {strcpy (mois,s1);break;}
case 2: {strcpy (mois,s2);break;}
case 3: {strcpy (mois,s3);break;}
case 4: {strcpy (mois,s4);break;}
case 5: {strcpy (mois,s5);break;}
case 6: {strcpy (mois,s6);break;}
case 7: {strcpy (mois,s7);break;}
case 8: {strcpy (mois,s8);break;}
case 9: {strcpy (mois,s9);break;}
case 10:{strcpy (mois,s10);break;}
case 11:{strcpy (mois,s11);break;}
case 12:{strcpy (mois,s12);break;}
}
return(mois);
}

int main()
{
char s[12];
int n;
do {
printf("donner le numero du mois que vous voulez savoir: ");
scanf("%d",&n);
}while((n<=0)||(n>12));
printf("le mois %d est %s\n",n,mois(n));
getch();
return 1;
}
0
BloodKnight Messages postés 17 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 27 mars 2008
23 févr. 2008 à 21:28
bonjour,
merci beaucoup pour ton aide mon ami, mais ça pas marcher je l ai modifié comme tu as fais et ni le mien le tien n a marché ( le mien ne donne pas de valeur de retour et le tien donne un probleme) le voila :
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
char *moins(int n)
{
int i,m;
char *s;
char s1[7]="janver",s2[12]="fevrier",s3[12]="mars",s4[12]="avril",s5[12]="may";
char s6[12]="juin",s7[12]="juillet",s8[12]="aout",s9[12]="octorber",s10[12]="september",s11[12]="november",s12[12]="december";
;
switch(n)
{
case 1: {m=strlen(s1); s=(char*)malloc(m+1);strcpy(s1,s);break;}
case 2:{m=strlen(s2); s=(char*)malloc(m+1);strcpy(s2,s);break;}
case 3: {m=strlen(s3); s=(char*)malloc(m+1);strcpy(s3,s);break;}
case 4: {m=strlen(s4); s=(char*)malloc(m+1);strcpy(s4,s);break;}
case 5: {m=strlen(s5); s=(char*)malloc(m+1);strcpy(s5,s);break;}
case 6: {m=strlen(s6); s=(char*)malloc(m+1);strcpy(s6,s);break;}
case 7: {m=strlen(s7); s=(char*)malloc(m+1);strcpy(s7,s);break;}
case 8: {m=strlen(s8); s=(char*)malloc(m+1);strcpy(s8,s);break;}
case 9: {m=strlen(s9); s=(char*)malloc(m+1);strcpy(s9,s);break;}
case 10: {m=strlen(s10); s=(char*)malloc(m+1);strcpy(s10,s);break;}
case 11: {m=strlen(s11); s=(char*)malloc(m+1);strcpy(s11,s);break;}
case 12: {m=strlen(s12); s=(char*)malloc(m+1);strcpy(s12,s);break;}

}
return s;
}
int main()
{
char ;
int n,m=12,i;
do {
printf("donner le nombre du moin que vous voulez savoir\t\n");
scanf("%d",&n);
}while((n<=0)||(n>12));
printf("le moin est %s",moin(n));
getch();
return 1;
}
0
Bonjour,

J'ai testé le programme que je t'ai envoyé avec Turbo C et il fonctionne.

Prend le tel que l'ai écrit en entier avec copié-collé car j'en ai profité pour corriger quelques fautes d'orthographe.
Excuses-moi. Par exemple la fonction char moin(int n) je l'ai écrite car *mois(int n) .

D'ailleurs dans ton deuxième programme tu as écrit char *moins(int n), et ensuite printf("le moin est %s",moin(n));
ça ne peut pas marcher si la fonction s'appelle moins et plus loin tu fait référence à moin.

Alors fait un copié collé de mon programme et fait un essai. Si ça ne marche toujours pas alors dit moi quelle erreur te renvoie ton compilateur.
0
BloodKnight Messages postés 17 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 27 mars 2008
27 févr. 2008 à 23:40
bonsoir,
merci mon ami j ai trouvé une solution
bon
switch(n)
{
case1 : { return "janvier";break;}
.... etc
0