Problème : tester en C

firk -  
 firk -
Bonjour,

Voilà, je voudrais savoir si je peux afficher mes printf selon des conditions que j'ai énumérées de façon détaillée.
Je ne parviens pas à tester mon programme!

/usr/lib/gcc/i586-mandriva-linux-gnu/4.1.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
/home/jeux/tmp/ccCSuFIG.o: In function `colocation':
abc.c:(.text+0xdc6): undefined reference to `main'
collect2: ld returned 1 exit status

A quoi peut correspondre ce message?

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut
A priori, tu n'as pas mis de fonction main() dans ton programme. Donc, le compilateur n'est pas content à l'édition des liens, puisqu'il n'y a pas de point d'entrée. ;)
Solution ? Mettre un main ^^

Cdt
0
firk
 
Et pourtant, il y a bien un main() dans mon programme, c'est ça le comble de l'histoire!!
Je fais quoi alors?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bah, poste ton code qu'on puisse juger, ainsi que ta ligne de compilation.
0
firk
 
Voila 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","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,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]))
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,statut2) && 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(k=0), 2 T.N.S(k=3), 2 Retraités(k=4) */

{ if(strcmp(statut1,statut2) && 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,statut2) && 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 de soumission */

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;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
Sri Lumpa Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   69
 
De toute façon, que tu mettes un printf ou pas, ça ne changera rien car tu ne pourras pas exécuter ton code (et donc les printf que tu placerais).

Donne nous ta commande de compilation à tout hasard...
0
firk
 
j'ai envoyé la commande à fiddy (gcc az.c -o az)
Vous pouvez prendre votre temps mais ne tardez pas trop car je dois finaliser avant le début de la semaine prochaine!!
Si je peux avoir une réponse cohérente dans la journée, je vous serai très reconnaissant.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Quand tu postes du code, utilise la balise "conservation de la mise en forme du texte" (à côté de souligné) car là ton code est illisible. En plus, il y a plein de petites bêtises du genre { if au lieu de if {.
Je t'ai aussi demandé ta commande de compilation.

Cdt
0
firk
 
J'ai enregistré mon programme dans mes Documents.
la commande c'est bien gcc az.c -o az?

Je vous redonne le 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","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,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]))
  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,statut2) && 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(k=0), 2 T.N.S(k=3), 2 Retraités(k=4) */

 { if(strcmp(statut1,statut2) && 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,statut2) && 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 de soumission */

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;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
firk
 
Comme je l'ai dis à Sri Lumpa, si tu peux m'envoyer une réponse au plus vite, ce serait top parce que moi, je ne vois plus ce que je dois faire de plus.
0