Non exécution d'une condition en C

Fermé
firk - 10 juil. 2008 à 17:00
 firk - 11 juil. 2008 à 10:46
Bonjour,

J'ai répertorié différentes combinaisons pour 2 personnes suivant leur attribut, leur statut, leur situation financière.
Mon problème réside dans le fait que lorsque je teste le programme, si le loyer vaut 1000, et que les 2 personnes ont chacune un revenu strictement inférieur à 2*1000, alors il devrait s'afficher : Impossibilité de soumettre votre dossier.

Au lieu de ce message, il s'affiche :
Vous remplissez les conditions d'acceptation auprès de notre assurance.
Demande de caution solidaire.
Erreur de segmentation.

Comment je peux résoudre ce problème?

P.S : J'ai livré mon code(voir problème tester en C) ce matin, mais je n'ai toujours pas de réponse!

1 réponse

bestkiller92 Messages postés 118 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 1 août 2008 4
10 juil. 2008 à 19:00
soit un peu Open source sinon on sais pas t'aider. donne ton code et je trouverai l'erreur
0
Salut à toi,

Excuse-moi de ne t'avoir pas répondu plus tôt, mais je n'ai pas utilisé d'ordinateur depuis 18h30.
J'ai déjà livré mon code, mais je te le redonne :



#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","CDD_CNE_ou_CDI_essai","Etudiant","TNS","Retraité","enplace_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); PB d'allocation pour status[i], i=0,...,5?


colocation(int R[],int L,char *statut1,char *statut2)
{ int i,h,k;


/* Cas 2 En place */

    if(strcmp(statut1,status[5]) && 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]))
     printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");

          else { if(strcmp(statut2,status[5]) && !strcmp(statut1,status[5]))
           printf("Vous remplissez les conditions d'acceptation auprès de notre assurance\n");
               }
         }

/* Cas 2 Etudiants*/

  if(strcmp(statut1,status[2]) && strcmp(statut2,status[2]))
     printf("Demande de Caution Solidaire\n");

/* 1 Etudiant avec quelqu'un ayant un autre statut */

   else if((strcmp(statut1,status[2]) && !strcmp(statut2,status[2])) || ((strcmp(statut2,status[2]) && !strcmp(statut1,status[2]))))

     {  { ((R[1]>3*L && R[0]>2*L) || (R[0]>3*L && R[1]>2*L))? 1  : exit(1) ;
          (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;
     }





while((h=*status[0]) || (h=*status[3]) || (h=*status[4]))


/* Cas 2 C.D.I(h=0), 2 T.N.S(h=3), 2 Retraités(h=4) */

  if(strcmp(statut1,status[h]) && strcmp(statut2,status[h]))

   { 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");
           }
         }
     }
  


  while((k=*status[0]) || (k=*status[3]) || (k=*status[4]))
    



/* Cas 1 C.D.I(k=0), 1 T.N.S(k=3), 1 Retraité(k=4) avec n'importe qui */

    if((strcmp(statut1,status[k]) && !strcmp(statut2,status[k]) && !strcmp(statut2,status[1]) && !strcmp(statut2,status[5])) || (strcmp(statut2,status[k]) && !strcmp(statut1,status[k]) && !strcmp(statut1,status[1]) && !strcmp(statut1,status[5])))

       { if(R[0]<2*L && R[1]<2*L)
           printf("Impossibilité de soumettre votre dossier\n");

         { while((R[0]<2*L && R[1]>=2*L) || (R[0]<2*L && R[1]>=2*L))
	   { (k=0)? 2 : 3;
	     (k=3)? 2 : 3;
	     (k=4)? 2 : 3;
	   }
	 }
        { 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 C.D.D */

     if(strcmp(statut1,status[1]) && strcmp(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 dominé */

else { if((strcmp(statut1,status[1]) && !strcmp(statut2,status[1]) && !strcmp(statut2,status[5])) || (strcmp(statut2,status[1]) && !strcmp(statut1,status[1]) && !strcmp(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) ||((R[1]<2*L || R[1]>=2*L || R[1]>3*L) && R[0]>=2*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,h,k;int L; int *R;
  char *status[6];char *statut1;char *statut2;

statut1=(char*)malloc(6*(sizeof(char)));
statut2=(char*)malloc(6*(sizeof(char)));

L=(int) malloc(10000*(sizeof(int)));
R[0]=(int) malloc(10000*(sizeof(int)));
R[1]=(int) malloc(10000*(sizeof(int)));

   printf("Indiquer la situation du premier colocataire : %s",statut1);
   scanf("%s",statut1);

   printf("Indiquer la situation du deuxième colocataire : %s",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);
}
0