Non exécution d'une condition en C

firk -  
 firk -
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!
Configuration: Linux Mandriva
Firefox 2.0.0.13

1 réponse

  1. bestkiller92 Messages postés 118 Statut Membre 4
     
    soit un peu Open source sinon on sais pas t'aider. donne ton code et je trouverai l'erreur
    0
    1. firk
       
      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