Problem avec un programme
Résolu
BloodKnight
Messages postés
17
Statut
Membre
-
BloodKnight Messages postés 17 Statut Membre -
BloodKnight Messages postés 17 Statut Membre -
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;
}
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;
}
A voir également:
- Problem avec un programme
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Desinstaller un programme - Guide
- Forcer la fermeture d'un programme - Guide
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;
}
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;
}
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;
}
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;
}
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.
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.