Déclaration en C : problème
Résolu
firk
-
firk -
firk -
Bonjour,
Je ne vois pas les problèmes de déclaration que m'indique la console. Pouvez-vous m'éclairer, svp?
Je serai là d'ici une heure et demie(pause déj...)
char* status[6]={"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
colocation(int R[],int L,char *statut1,char *statut2) // je passe outre la fonction
{
}
main()
{ int i;int L, int (R[1]),int (R[2]);
char*status[6];
scanf("%s",&(*statut1));
printf("Indiquer la situation du premier colocataire : %s\n",*statut1);
scanf("%s",&(*statut2));
printf("Indiquer la situation du deuxième colocataire : %s\n",*statut2);
scanf("%d",&L);
printf("Indiquer le loyer du foyer : %d\n",L);
scanf("%d",&R[1]);
printf("Indiquer le revenu du colocataire1 : %d\n",R[1]);
scanf("%d",&R[2]);
printf("Indiquer le revenu du colocataire2 : %d\n",R[2]);
colocation(R,L,*statut1,*statut2);
}
Je ne vois pas les problèmes de déclaration que m'indique la console. Pouvez-vous m'éclairer, svp?
Je serai là d'ici une heure et demie(pause déj...)
char* status[6]={"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
colocation(int R[],int L,char *statut1,char *statut2) // je passe outre la fonction
{
}
main()
{ int i;int L, int (R[1]),int (R[2]);
char*status[6];
scanf("%s",&(*statut1));
printf("Indiquer la situation du premier colocataire : %s\n",*statut1);
scanf("%s",&(*statut2));
printf("Indiquer la situation du deuxième colocataire : %s\n",*statut2);
scanf("%d",&L);
printf("Indiquer le loyer du foyer : %d\n",L);
scanf("%d",&R[1]);
printf("Indiquer le revenu du colocataire1 : %d\n",R[1]);
scanf("%d",&R[2]);
printf("Indiquer le revenu du colocataire2 : %d\n",R[2]);
colocation(R,L,*statut1,*statut2);
}
A voir également:
- Déclaration en C : problème
- Déclaration - Guide
- En plus des revenus, il ne faut surtout pas oublier de faire cette déclaration en ligne aux impôts - Guide
- L'erreur qui peut coûter cher : il ne faut pas déclarer ces revenus aux impôts - Guide
- Vous devez absolument lire ce document des impôts avant de remplir votre déclaration de revenus - Guide
- Une très mauvaise surprise vous attend si vous avez fait une erreur dans votre déclaration de revenus cette année - Guide
10 réponses
char* status[6]={"CDI_hors_ess_ou_preavis_lic,CDD_CNE_ou_CDI_essai,Etudiant,TNS,Retraités,Douze_mois_sans_incident_paiement"};
moi je mettrai des guillemets :
char* status[6]={"CDI_hors_ess_ou_preavis_lic","CDD_CNE_ou_CDI_essai","Etudiant","TNS,Retraités","Douze_mois_sans_incident_paiement"};
moi je mettrai des guillemets :
char* status[6]={"CDI_hors_ess_ou_preavis_lic","CDD_CNE_ou_CDI_essai","Etudiant","TNS,Retraités","Douze_mois_sans_incident_paiement"};
t as pas l impression de dupliquer tes posts ?
http://www.commentcamarche.net/forum/affich 7226728 urgent programme en c
http://www.commentcamarche.net/forum/affich 7226728 urgent programme en c
essai ca:
char status[]={"CDI_hors_ess_ou_preavis_lic","CDD_CNE_ou_CDI_essai","Etudiant","TNS","Retraités","Douze_mois_sans_incident_paiement"};
char status[]={"CDI_hors_ess_ou_preavis_lic","CDD_CNE_ou_CDI_essai","Etudiant","TNS","Retraités","Douze_mois_sans_incident_paiement"};
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
scanf("%s",&(*statut1));
->scanf("%s",&(*statut[1]));
il faut mettre les crochets pour acceder a un tableau
int (R[1]),int (R[2]) //tu defini 2 fois le tableau R!
->int r[3] //entre les crochets, tu met la taille du tableau. tu ne declare pas cellule par cellule
j ai mis 3 pke tu utilises r[2].
no oublies pas qu un tableau de taille n commence a 0 et fini a n-1
->scanf("%s",&(*statut[1]));
il faut mettre les crochets pour acceder a un tableau
int (R[1]),int (R[2]) //tu defini 2 fois le tableau R!
->int r[3] //entre les crochets, tu met la taille du tableau. tu ne declare pas cellule par cellule
j ai mis 3 pke tu utilises r[2].
no oublies pas qu un tableau de taille n commence a 0 et fini a n-1
et ben au lieu de me chamber et de me dire que je n ai pas bon, donnes nous les correction que tu as apporté, ca servira peute tre a quelqun
j ai apporté des corrections rapides, mais quand on voit certains trucs que tu ecris:
l adresse du contenu d un pointeur.. c est a dire un pointeur. ca c est dans ta fonction ici:scanf("%s",&(*statut[1]));
c est vrai qu il aurai mieu valu faire scanf("%s",statut[1]); //avec statut etant un tableau de poointeurs, car tu met des chaines dedan.
en plus dans ton code, il y a du statut et du status
ensuite, je ne suis pas sur que tu puisse ecrire dans statut, vu que tu l a alloué en"brut" dans ton code.
tu veux que je regqrde encore plus pour te montrer a quel point ton programme est moche ?
j ai apporté des corrections rapides, mais quand on voit certains trucs que tu ecris:
l adresse du contenu d un pointeur.. c est a dire un pointeur. ca c est dans ta fonction ici:scanf("%s",&(*statut[1]));
c est vrai qu il aurai mieu valu faire scanf("%s",statut[1]); //avec statut etant un tableau de poointeurs, car tu met des chaines dedan.
en plus dans ton code, il y a du statut et du status
ensuite, je ne suis pas sur que tu puisse ecrire dans statut, vu que tu l a alloué en"brut" dans ton code.
tu veux que je regqrde encore plus pour te montrer a quel point ton programme est moche ?
Excuse-moi, mais c'est si vivifiant de pouvoir réussir soi-même; tes derniers commentaires m'ont permis de résoudre le problème de segmentation. en effet, j'avais mis scanf("%s,&(statut1));
Alors qu'en fait, il fallait faire scanf("%s",statut1);
Pour le problème du revenu, j'ai juste déclaré ceci : int *R;
Reste qu'avec ces seuls changements, l'erreur de segmentation reste. C'est sans doute un problème d'allocation dynamique : j'ai introduis ces 2 lignes supplémentaires :
statut1=(char*)malloc(6*(sizeof(char)));
statut2=(char*)malloc(6*(sizeof(char)));
Et le tour est joué!!!
Alors qu'en fait, il fallait faire scanf("%s",statut1);
Pour le problème du revenu, j'ai juste déclaré ceci : int *R;
Reste qu'avec ces seuls changements, l'erreur de segmentation reste. C'est sans doute un problème d'allocation dynamique : j'ai introduis ces 2 lignes supplémentaires :
statut1=(char*)malloc(6*(sizeof(char)));
statut2=(char*)malloc(6*(sizeof(char)));
Et le tour est joué!!!
attention ! il faut faire une allocation memoire pour le R. Scanf ne la fera pas a ta place , il lui faut un buffer.
un buffer est une zone memoire pour le transit des donnés.... ou elles sont stockées de manière temporaire avant traitement.
de manière plus concrète, c est un enorme tableau. sa taille depend de ce que tu traite.. si c est pour des entrés clavier, je met char buffer[80]; si c est pour des donnés reseau, je passe facilement a 1024...
de manière plus concrète, c est un enorme tableau. sa taille depend de ce que tu traite.. si c est pour des entrés clavier, je met char buffer[80]; si c est pour des donnés reseau, je passe facilement a 1024...
colles moi ton code actuel, je te soupsonne d afficher un pointer ... et non ce qu il pointe
voilà mon code :
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define Solvabilite_acquise 1
#define Demande_de_Caution_Solidaire 2
#define Impossible 3
char* status[6]={"CDI_hors_ess_ou_preavis_lic","CDD_CNE_ou_CDI_essai","Etudiant","TNS","Retraités","En place depuis plus de Douze_mois_sans_incident_paiement"};
//donne des valeurs allant de 0 à 5 aux différents status scanf("%s",&status[0]);scanf("%s",&status[1]);scanf("%s",&status[2]);scanf("%s",&status[3]);scanf("%s",&status[4]);scanf("%s",&status[5]);scanf("%s",&statut1);scanf("%s",&statut2);
colocation(int R[],int L,char *statut1,char *statut2)
{ int i,h,k;
/* Cas 2 En place */
if(strcmp(statut1,statut2) && strcmp(statut2,status[5]))
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");
/* Cas 1 En place avec n'importe qui */
else if((strcmp(statut1,status[5]) && !strcmp(statut2,status[5])) ||(strcmp(statut2,status[5]) && !strcmp(statut1,status[5])))
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");
while((k=*status[0]) || (k=*status[3]) || (k=*status[4]))
/* Cas 2 C.D.I(k=0), 2 T.N.S(k=3), 2 Retraités(k=4) */
{ if(strcmp(statut1,statut2) && strcmp(statut2,status[k]))
{ if(R[0]>3*L || R[1]>3*L)
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");
else
{ if(R[0]<2*L && R[1]<2*L)
printf("Impossibilité de soumettre votre dossier\n");
else { if((R[0]<2*L && R[1]>=2*L && R[1]<3*L) || (R[1]<2*L && R[0]>=2*L && R[0]<3*L))
printf("Demande de caution solidaire\n");
}
}
}
/* Cas 1 C.D.I(k=0), 1 T.N.S(k=3), 1 Retraité(k=4) avec n'importe qui */
else if((strcmp(statut1,status[k]) && !strcmp(statut2,status[k]) && statut2!=status[1] && statut2!=status[5]) || (strcmp(statut2,status[k]) && !strcmp(statut1,status[k])) && statut1!=status[1] && statut1!=status[5])
{
while( (R[0]<2*L && R[1]<=3*L)||(R[0]<2*L && R[1]<=3*L) )
{ (k=0)? 3 : 2;
(k=3)? 3 : 2;
(k=4)? 3 : 2;
}
while( (R[0]>3*L && (R[1]<=3*L || R[1]>=2*L || R[1]<2*L))||(R[1]>3*L && (R[0]<=3*L || R[0]>=2*L || R[0]<2*L)) )
{ (k=0)? 1 : 2;
(k=3)? 1 : 2;
(k=4)? 1 : 2;
}
}
}
/* Cas 2 Etudiants*/
if(strcmp(statut1,statut2) && strcmp(statut2,status[2]))
printf("Demande de caution solidaire\n");
/*Etudiant avec quelqu'un ayant un autre statut*/
else if((strcmp(statut1,status[2]) && !strcmp(statut2,status[2]) && statut2!=status[1] && statut2!=status[5]) ||((strcmp(statut2,status[2]) && !strcmp(statut1,status[2]) && statut1!=status[1] && statut1!=status[5])))
{ (R[1]>3*L || R[0]>3*L)? 1 : 2 || 3;
(R[1]<2*L || R[0]<2*L)? 3 : exit(1);
if((strcmp(statut1,status[2]) && strcmp(statut2,status[1])) || (strcmp(statut2,status[2]) && strcmp(statut1,status[1])))
(R[1]>2*L || R[0]>2*L)? 2 : 3;
}
/* Cas 2 C.D.D */
if(strcmp(statut1,statut2) && (statut2,status[1]))
{ if(R[0]<2*L && R[1]<2*L)
printf("Impossibilité de soumettre votre dossier\n");
else
{ if((R[0]<2*L && R[1]>2*L) || (R[1]<2*L && R[0]>2*L))
printf("Demande de caution solidaire\n");
}
}
/* Cas 1 C.D.D avec n'importe qui sauf En place : cas de soumission*/
else if((strcmp(statut1,status[1]) && !strcmp(statut2,status[1]) && statut2!=status[5]) || (strcmp(statut2,status[1]) && !strcmp(statut1,status[1]) && statut1!=status[5]))
{ (R[1]<2*L || R[0]<2*L)? 3 : exit(2);
while((R[0]<2*L || R[0]>=2*L || R[0]>3*L) && R[1]<3*L)
{ printf("Demande de caution solidaire\n");
}
if(strcmp(statut1,status[1]) && strcmp(statut2,status[2]))
{ while((R[0]<2*L && R[1]>=2*L))
{ printf("Impossibilité de soumettre votre dossier\n");
}
while(R[0]>=2*L || R[1]>=2*L)
printf("Demande de caution solidaire\n");
}
}
}
main()
{ int i;int L; int *R;
char *status[6];char *statut1;char *statut2;
statut1=(char*)malloc(6*(sizeof(char)));
statut2=(char*)malloc(6*(sizeof(char)));
printf("Indiquer la situation du premier colocataire : %s\n",statut1);
scanf("%s",statut1);
printf("Indiquer la situation du deuxième colocataire : %s\n",statut2);
scanf("%s",statut2);
printf("Indiquer le loyer du foyer : %d\n",L);
scanf("%d",&L);
printf("Indiquer le revenu du colocataire1 : %d\n",R[0]);
scanf("%d",&R[0]);
printf("Indiquer le revenu du colocataire2 : %d\n",R[1]);
scanf("%d",&R[1]);
colocation(R,L,statut1,statut2);
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define Solvabilite_acquise 1
#define Demande_de_Caution_Solidaire 2
#define Impossible 3
char* status[6]={"CDI_hors_ess_ou_preavis_lic","CDD_CNE_ou_CDI_essai","Etudiant","TNS","Retraités","En place depuis plus de Douze_mois_sans_incident_paiement"};
//donne des valeurs allant de 0 à 5 aux différents status scanf("%s",&status[0]);scanf("%s",&status[1]);scanf("%s",&status[2]);scanf("%s",&status[3]);scanf("%s",&status[4]);scanf("%s",&status[5]);scanf("%s",&statut1);scanf("%s",&statut2);
colocation(int R[],int L,char *statut1,char *statut2)
{ int i,h,k;
/* Cas 2 En place */
if(strcmp(statut1,statut2) && strcmp(statut2,status[5]))
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");
/* Cas 1 En place avec n'importe qui */
else if((strcmp(statut1,status[5]) && !strcmp(statut2,status[5])) ||(strcmp(statut2,status[5]) && !strcmp(statut1,status[5])))
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");
while((k=*status[0]) || (k=*status[3]) || (k=*status[4]))
/* Cas 2 C.D.I(k=0), 2 T.N.S(k=3), 2 Retraités(k=4) */
{ if(strcmp(statut1,statut2) && strcmp(statut2,status[k]))
{ if(R[0]>3*L || R[1]>3*L)
printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");
else
{ if(R[0]<2*L && R[1]<2*L)
printf("Impossibilité de soumettre votre dossier\n");
else { if((R[0]<2*L && R[1]>=2*L && R[1]<3*L) || (R[1]<2*L && R[0]>=2*L && R[0]<3*L))
printf("Demande de caution solidaire\n");
}
}
}
/* Cas 1 C.D.I(k=0), 1 T.N.S(k=3), 1 Retraité(k=4) avec n'importe qui */
else if((strcmp(statut1,status[k]) && !strcmp(statut2,status[k]) && statut2!=status[1] && statut2!=status[5]) || (strcmp(statut2,status[k]) && !strcmp(statut1,status[k])) && statut1!=status[1] && statut1!=status[5])
{
while( (R[0]<2*L && R[1]<=3*L)||(R[0]<2*L && R[1]<=3*L) )
{ (k=0)? 3 : 2;
(k=3)? 3 : 2;
(k=4)? 3 : 2;
}
while( (R[0]>3*L && (R[1]<=3*L || R[1]>=2*L || R[1]<2*L))||(R[1]>3*L && (R[0]<=3*L || R[0]>=2*L || R[0]<2*L)) )
{ (k=0)? 1 : 2;
(k=3)? 1 : 2;
(k=4)? 1 : 2;
}
}
}
/* Cas 2 Etudiants*/
if(strcmp(statut1,statut2) && strcmp(statut2,status[2]))
printf("Demande de caution solidaire\n");
/*Etudiant avec quelqu'un ayant un autre statut*/
else if((strcmp(statut1,status[2]) && !strcmp(statut2,status[2]) && statut2!=status[1] && statut2!=status[5]) ||((strcmp(statut2,status[2]) && !strcmp(statut1,status[2]) && statut1!=status[1] && statut1!=status[5])))
{ (R[1]>3*L || R[0]>3*L)? 1 : 2 || 3;
(R[1]<2*L || R[0]<2*L)? 3 : exit(1);
if((strcmp(statut1,status[2]) && strcmp(statut2,status[1])) || (strcmp(statut2,status[2]) && strcmp(statut1,status[1])))
(R[1]>2*L || R[0]>2*L)? 2 : 3;
}
/* Cas 2 C.D.D */
if(strcmp(statut1,statut2) && (statut2,status[1]))
{ if(R[0]<2*L && R[1]<2*L)
printf("Impossibilité de soumettre votre dossier\n");
else
{ if((R[0]<2*L && R[1]>2*L) || (R[1]<2*L && R[0]>2*L))
printf("Demande de caution solidaire\n");
}
}
/* Cas 1 C.D.D avec n'importe qui sauf En place : cas de soumission*/
else if((strcmp(statut1,status[1]) && !strcmp(statut2,status[1]) && statut2!=status[5]) || (strcmp(statut2,status[1]) && !strcmp(statut1,status[1]) && statut1!=status[5]))
{ (R[1]<2*L || R[0]<2*L)? 3 : exit(2);
while((R[0]<2*L || R[0]>=2*L || R[0]>3*L) && R[1]<3*L)
{ printf("Demande de caution solidaire\n");
}
if(strcmp(statut1,status[1]) && strcmp(statut2,status[2]))
{ while((R[0]<2*L && R[1]>=2*L))
{ printf("Impossibilité de soumettre votre dossier\n");
}
while(R[0]>=2*L || R[1]>=2*L)
printf("Demande de caution solidaire\n");
}
}
}
main()
{ int i;int L; int *R;
char *status[6];char *statut1;char *statut2;
statut1=(char*)malloc(6*(sizeof(char)));
statut2=(char*)malloc(6*(sizeof(char)));
printf("Indiquer la situation du premier colocataire : %s\n",statut1);
scanf("%s",statut1);
printf("Indiquer la situation du deuxième colocataire : %s\n",statut2);
scanf("%s",statut2);
printf("Indiquer le loyer du foyer : %d\n",L);
scanf("%d",&L);
printf("Indiquer le revenu du colocataire1 : %d\n",R[0]);
scanf("%d",&R[0]);
printf("Indiquer le revenu du colocataire2 : %d\n",R[1]);
scanf("%d",&R[1]);
colocation(R,L,statut1,statut2);
}
bon, j ai pas le temps de regarder tout ca pour l isntant, tu a l air d etre debutant, il y a beaucoup a verifier.
je remarque des incoherences:
char* status[6]={"CDI_hors_ess_ou_preavis_lic","CDD_CNE_ou_CDI_essai","Etudiant","TNS","Retraités","En place depuis plus de Douze_mois_sans_incident_paiement"};
//donne des valeurs allant de 0 à 5 aux différents status
scanf("%s",&status[0]);
scanf("%s",&status[1]);
scanf("%s",&status[2]);
scanf("%s",&status[3]);
scanf("%s",&status[4]);
scanf("%s",&status[5]);
scanf("%s",&statut1);
scanf("%s",&statut2);
tu commence par declarer ton tableau de chaines, status, et a la ligne d apres tu ecrase les valeurs que tu viens de mettre dedan. ce n est pas logique. c est l un ou c est lautre.
ensuite, scanf("%s",&statut2); je ne vois pas la declaration, peut etre n ai je pas assez cherché
(k=3)? 3 : 2; // j ai croisé une fois cette ecriture. Je ne pense pas que tu ai le niveau pour te permetre d ecrire comme ca.... c est un if / else, c est ca ? alors ecris le completement
precise moi le nom et l endroit de ta valeur qui merde... essaye de mettre une * devant la variable... je ne te garanti rienm je dis ca sans avoir localisé ou Ct dans le code
je remarque des incoherences:
char* status[6]={"CDI_hors_ess_ou_preavis_lic","CDD_CNE_ou_CDI_essai","Etudiant","TNS","Retraités","En place depuis plus de Douze_mois_sans_incident_paiement"};
//donne des valeurs allant de 0 à 5 aux différents status
scanf("%s",&status[0]);
scanf("%s",&status[1]);
scanf("%s",&status[2]);
scanf("%s",&status[3]);
scanf("%s",&status[4]);
scanf("%s",&status[5]);
scanf("%s",&statut1);
scanf("%s",&statut2);
tu commence par declarer ton tableau de chaines, status, et a la ligne d apres tu ecrase les valeurs que tu viens de mettre dedan. ce n est pas logique. c est l un ou c est lautre.
ensuite, scanf("%s",&statut2); je ne vois pas la declaration, peut etre n ai je pas assez cherché
(k=3)? 3 : 2; // j ai croisé une fois cette ecriture. Je ne pense pas que tu ai le niveau pour te permetre d ecrire comme ca.... c est un if / else, c est ca ? alors ecris le completement
precise moi le nom et l endroit de ta valeur qui merde... essaye de mettre une * devant la variable... je ne te garanti rienm je dis ca sans avoir localisé ou Ct dans le code
les scanf sont inclus dans le commentaire, donc le souci n'est pas là!
scanf("%s",&status[0]);
scanf("%s",&status[1]);
scanf("%s",&status[2]);
scanf("%s",&status[3]);
scanf("%s",&status[4]);
scanf("%s",&status[5]);
scanf("%s",&statut1);
scanf("%s",&statut2);
la condition(k=3)? me permet de résumer la situation pour 3 statuts particuliers : cdi, tns, retraité.
Je fais comment alors?
scanf("%s",&status[0]);
scanf("%s",&status[1]);
scanf("%s",&status[2]);
scanf("%s",&status[3]);
scanf("%s",&status[4]);
scanf("%s",&status[5]);
scanf("%s",&statut1);
scanf("%s",&statut2);
la condition(k=3)? me permet de résumer la situation pour 3 statuts particuliers : cdi, tns, retraité.
Je fais comment alors?
expected identifier or ‘(’ before ‘int’
error: ‘statut1’ undeclared (first use in this function)
error: (Each undeclared identifier is reported only once
error: for each function it appears in.)
error: ‘R’ undeclared (first use in this function)