Programme C : correction
firk
-
firk -
firk -
Bonjour,
Pouvez-vous m'aider pour ces 3 cas: (je n'ai plus d'idées pour corriger mes erreurs...)
1)char *status={"CDI_hors_ess_ou_preavis_lic,CDD_CNE_ou_CDI_essai,Etudiant,TNS,Retraités,Douze_mois_sans_incident_paiement"};
//donne des valeurs allant de 0 à 5 aux différents status
J'ai essayé avec enum status, mais je rencontre des erreurs au moment de la compilation du programme :
expected identifier or ‘(’ before ‘=’ token
error: stray ‘\303’ in program
error: stray ‘\251’ in program
2)J'aimerais distinguer les 6 valeurs pour déterminer l'attribut de l'individu
{ switch(status[i])
case(status[0]):
printf("Vous êtes alors en situation de %s\n",T[0]);
}
Ici 'status' undeclared (first use in this function)
error: (Each undeclared identifier is reported only once
error: for each function it appears in.)
error: expected declaration or statement at end of input
3)Ici j'ai défini plusieurs termes, mais le message d'erreur suivant apparaît :
warning: missing whitespace after the macro name
#define Solvabilité acquise 1
#define Demande de Caution Solidaire 2
#define Impossible 3
Pouvez-vous m'aider pour ces 3 cas: (je n'ai plus d'idées pour corriger mes erreurs...)
1)char *status={"CDI_hors_ess_ou_preavis_lic,CDD_CNE_ou_CDI_essai,Etudiant,TNS,Retraités,Douze_mois_sans_incident_paiement"};
//donne des valeurs allant de 0 à 5 aux différents status
J'ai essayé avec enum status, mais je rencontre des erreurs au moment de la compilation du programme :
expected identifier or ‘(’ before ‘=’ token
error: stray ‘\303’ in program
error: stray ‘\251’ in program
2)J'aimerais distinguer les 6 valeurs pour déterminer l'attribut de l'individu
{ switch(status[i])
case(status[0]):
printf("Vous êtes alors en situation de %s\n",T[0]);
}
Ici 'status' undeclared (first use in this function)
error: (Each undeclared identifier is reported only once
error: for each function it appears in.)
error: expected declaration or statement at end of input
3)Ici j'ai défini plusieurs termes, mais le message d'erreur suivant apparaît :
warning: missing whitespace after the macro name
#define Solvabilité acquise 1
#define Demande de Caution Solidaire 2
#define Impossible 3
A voir également:
- Error: expected declaration or statement at end of input
- Programme demarrage windows - Guide
- Programme word gratuit - Guide
- Message programmé - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme - Guide
5 réponses
Salut
Pour le 1, tu dois faire un tableau deux dimensions.
Pour le 2, tu dois utiliser strcmp pour comparer deux chaines de caractères. Du genre : if(strcmp("Etudiant",status[i])
Je te renvoie sur man strcmp pour son utilisation en détail.
Pour le 3,
Cdt
Pour le 1, tu dois faire un tableau deux dimensions.
char status[][50]={"CDI_hors_ess_ou_preavis_lic","CDD_CNE_ou_CDI_essai","Etudiant","TNS","Retraités"
,"Douze_mois_sans_incident_paiement"};
Pour le 2, tu dois utiliser strcmp pour comparer deux chaines de caractères. Du genre : if(strcmp("Etudiant",status[i])
Je te renvoie sur man strcmp pour son utilisation en détail.
Pour le 3,
#define Solvabililite_acquise 1 #define Demande_de_Caution_Solidaire 2 #define Impossible 3
Cdt
C'est pas tu n'as pas besoin de passer par switch, mais plutôt que ça ne peut pas marcher avec switch.
Je comprends pas vraiment ce que tu veux faire avec ta fonction coloc ?
Le guillemet permet de délimiter une chaine de caractère.
PS : Attention, j'ai fait une erreur avec " dans mon premier post.
Je comprends pas vraiment ce que tu veux faire avec ta fonction coloc ?
Le guillemet permet de délimiter une chaine de caractère.
PS : Attention, j'ai fait une erreur avec " dans mon premier post.
disons que je veux étudier le cas à deux colocataires, soit ayant tous les deux les mêmes statuts, soit avec des statuts différents, et voir en fonction du montant du loyer, s'ils peuvent répondre à mes attentes.
Pour cela, je dois énumérer beaucoup de cas. Je pourrais t'envoyer ce soir le tableau qui récapitule les situations selon les statuts.(il y a en effet beaucoup de combinaisons à établir, je n'ai fait que les cas les plus simples).
Pour cela, je dois énumérer beaucoup de cas. Je pourrais t'envoyer ce soir le tableau qui récapitule les situations selon les statuts.(il y a en effet beaucoup de combinaisons à établir, je n'ai fait que les cas les plus simples).
Oui mais tu attends qu'elle fasse quoi ta fonction coloc ?
Ecris le code en C, ou les étapes en français que je vois mieux tes attentes.
Ecris le code en C, ou les étapes en français que je vois mieux tes attentes.
Je n'ai pas encore tout rectifié, mais je te montre une partie du code ;
colocation(int R[],int L)
{ int i,h,k;
for(i=0;i<2;i++)
scanf("%d",&R[i]);
switch(status){
{ case(status[1]==status[2]=*status[5]):/* Cas 2 En place(les 2 premiers case) */
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");break;
}
case(status[1]=*status[5] && status[2]!=status[1]):/* Cas 1 En place avec n'importe qui */
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");break;
cas un peu plus complexes :
//Etudiant avec quelqu'un ayant un autre statut
case(status[1]=*status[2] && status[2]!=*status[2] || status[2]=*status[2] && status[1]!=*status[2]):
{ (R[2]>3*L || R[1]>3*L)? 1 : 2 || 3;
(R[2]<2*L || R[1]<2*L)? 3 : exit(1);
}
break;
case(status[1]=*status[k] && status[2]!=status[1] && status[2]!=*status[5]):/* Cas 1 C.D.I avec n'importe qui*/
{
while( R[1]<2*L && R[2]<=3*L)
{ (k=0)? 3 : 2;
(k=3)? 3 : 2;
(k=4)? 3 : 2;
break;
}
while( R[1]>3*L && (R[2]<=3*L || R[2]>=2*L || R[2]<2*L) )
{ (k=0)? 1 : 2;
(k=3)? 1 : 2;
(k=4)? 1 : 2;
break;
}
}
}
colocation(int R[],int L)
{ int i,h,k;
for(i=0;i<2;i++)
scanf("%d",&R[i]);
switch(status){
{ case(status[1]==status[2]=*status[5]):/* Cas 2 En place(les 2 premiers case) */
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");break;
}
case(status[1]=*status[5] && status[2]!=status[1]):/* Cas 1 En place avec n'importe qui */
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");break;
cas un peu plus complexes :
//Etudiant avec quelqu'un ayant un autre statut
case(status[1]=*status[2] && status[2]!=*status[2] || status[2]=*status[2] && status[1]!=*status[2]):
{ (R[2]>3*L || R[1]>3*L)? 1 : 2 || 3;
(R[2]<2*L || R[1]<2*L)? 3 : exit(1);
}
break;
case(status[1]=*status[k] && status[2]!=status[1] && status[2]!=*status[5]):/* Cas 1 C.D.I avec n'importe qui*/
{
while( R[1]<2*L && R[2]<=3*L)
{ (k=0)? 3 : 2;
(k=3)? 3 : 2;
(k=4)? 3 : 2;
break;
}
while( R[1]>3*L && (R[2]<=3*L || R[2]>=2*L || R[2]<2*L) )
{ (k=0)? 1 : 2;
(k=3)? 1 : 2;
(k=4)? 1 : 2;
break;
}
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok, je pense avoir compris.
Je pense que ça serait mieux de pas utiliser char [][50] pour le statut mais plutôt :
Je pense que ça serait mieux de pas utiliser char [][50] pour le statut mais plutôt :
#define NB_COLLOC 5
#define CDI_Hors_Essais 1
#define ETUDIANT 2
#define TNS 3
etc
int status[]={CDI_HORS_ESSAIS,ETUDIANT,TNS};
Le remplissage de R serait mieux dans une autre fonction comme une fonction d'admin :
int R[NB_COLLOC];
int i;
for(i=0;i<NB_COLLOC;i++){
printf("Collocataire %d",i);
scanf("%d",R+i);
}
void colloc(int *R, int L){
int i;
for(i=0;NB_COLLOC;i++){
/*Ici tu mets tes conditions pour tes colloc */
}
}
Si j'extrapole la situation à 2 ou 3 colocataires, avec un revenu précis, et un loyer fixe, comment puis-je formaliser ce cas.
Je suis parti sur la fonction coloc(int R[ ], int L), et dans la main(), j'appelle coloc(&R[2],L) et l'erreur suivante s'affiche :
expected declaration or statement at end of input
A quoi correspond ton "?
Si j'extrapole la situation à 2 ou 3 colocataires, avec un revenu précis, et un loyer fixe, comment puis-je formaliser ce cas.
Je suis parti sur la fonction coloc(int R[ ], int L), et dans la main(), j'appelle coloc(&R[2],L) et l'erreur suivante s'affiche :
expected declaration or statement at end of input
A quoi correspond ton "?