IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres éditeurs Discussion :

problème sur l'indice d'un tableau avec le compilateur du C gcc


Sujet :

Autres éditeurs

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 76
    Points
    76
    Par défaut problème sur l'indice d'un tableau avec le compilateur du C gcc
    bonjour,
    Quand j'ai compilé ce code avec gcc le résultat de la variable indice que j'obtient et bizard ne donne pas un indice de tableau qui est compris dans cette exemple entre 0 et 5 j'ai pas compris c'est koi le problème, je crois pas que le problème est due de pointeur, aidé moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    #include<stdio.h>   // pour les fonctions d'entrée/sortie
    #include<math.h>
     
    #define TAILLE 5
    #define DEBUG 0	
     
    main()
    {
    	int i, indice;
    	int t_6[] = {1, 4, 6, 8, 9};
     
    	indice=tab_get_indice_insert(t_6, 9, 0, 4);
    	printf ("\n l'infide est: %d\t\n",indice);	
    }
    // recherche dichotomique 
    // moins complexe que la premiére car si le tableau et grand en gagne du temps
    int tab_get_indice_insert(int t[], int val, int ind_deb, int ind_fin)
    {
    	int ind_mil= (ind_deb+ind_fin)/2;
    	/*if(val = t[ind_mil])
    		{
    		 //printf("ind_mil=%d \t",ind_mil);
    		 return ind_mil;		
    		}
    	*/
    //	if(val != t[ind_mil]) //val != t[ind_mil] 
    //		{ 
    		  if(val<=t[ind_mil]) {
    			if(ind_fin-ind_mil==0) {printf("\trani fi %d <= %d ind_mil=%d\n",val,t[ind_mil],ind_mil);return (ind_mil);}
    			else {printf("\trani fi %d <= %d ind_mil=%d \n",val,t[ind_mil],ind_mil);tab_get_indice_insert(t,val,ind_deb,ind_mil);}}
    			/*{printf("rani fi val < t[ind_mil]");
    			 if (ind_mil-ind_deb==1) {//printf("ind_mil=%d \t",ind_mil); 
    						  return ind_mil;
    						}
     
     			tab_get_indice_insert(t,val,ind_deb,ind_mil);
    			*/
    		  else	{		//val > t[ind_mil]
    			//printf("je suis la val > t[ind_mil]");
    			if ((ind_fin-ind_mil==1)||(ind_fin-ind_mil==0)) {printf("\tje suis la %d > %d ind_mil=%d \n",val,t[ind_mil],ind_mil+1); 
    							return (ind_mil+1);
    						  }
    			else {printf("\tje suis la %d > %d ind_mil=%d \n",val,t[ind_mil],ind_mil);tab_get_indice_insert(t,val,ind_mil,ind_fin);}
    			}
    //		}
     
    //	if (DEBUG)
    //		printf("tab_get_indice_insert ind_fin = %d\tindice = %d\n", ind_fin, i);	
    }
    Merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Points : 58
    Points
    58
    Par défaut
    Bonsoir
    Je pense que tu devrais utiliser l'indice qui est retourné par tab_get_indice_insert quand tu l'appelles dans ta fonction.
    Cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    int tab_get_indice_insert(int t[], int val, int ind_deb, int ind_fin)
    {
    	int ind_mil= (ind_deb+ind_fin)/2;
    
    		if(val<=t[ind_mil]) {
    			if(ind_fin-ind_mil==0) {
    				printf("\trani fi %d <= %d ind_mil=%d\n",val,t[ind_mil],ind_mil);
    				return (ind_mil);
    			}
    			else {
    				printf("\trani fi %d <= %d ind_mil=%d \n",val,t[ind_mil],ind_mil);
    				return tab_get_indice_insert(t,val,ind_deb,ind_mil);
    			}
    		}
    		else	{		//val > t[ind_mil]
    			//printf("je suis la val > t[ind_mil]");
    			if ((ind_fin-ind_mil==1)||(ind_fin-ind_mil==0)) {
    				printf("\tje suis la %d > %d ind_mil=%d \n",val,t[ind_mil],ind_mil+1); 
    				return (ind_mil+1);
    			}
    			else {
    				printf("\tje suis la %d > %d ind_mil=%d \n",val,t[ind_mil],ind_mil);
    				return tab_get_indice_insert(t,val,ind_mil,ind_fin);
    			}
    		}
    }

Discussions similaires

  1. Problème sur serveur 2008 R2 64 bits avec Office
    Par ienienlm dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/05/2013, 10h48
  2. [Tableaux] Problème sur le parcours d'un tableau
    Par gregal dans le forum Langage
    Réponses: 2
    Dernier message: 02/04/2007, 12h22
  3. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46
  4. problème de d'indice de tableau
    Par Pymm dans le forum ASP
    Réponses: 2
    Dernier message: 27/07/2005, 16h18
  5. tableau avec 1 colonne sur 3 sans cadre
    Par brasco06 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 21/04/2005, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo