Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1397 connectés 

  FORUM HardWare.fr
  Programmation
  C

  problème programme Tableau

 



Total : 0 vote (0 vote blanc)
Ce sondage est clos, vous ne pouvez plus voter
 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème programme Tableau

n°1653489
vyse75
Posté le 05-12-2007 à 20:10:47  profilanswer
 

Bonsoir, tout le monde, je dois fais un programme qui réalise la saisie de 10 entier positif et dont la fin de la saisie s'arrete au bout du 10ème (effectué), et qui selon une valeur rentrée de recherche, soit affiche la valeur du tableau la plus proche de cette valeur rentrée soit affiche valeur présente en position x.  
 
Donc moi, je bloque sur l'affichage la valeur du tableau la plus proche de cette valeur rentrée. J'ai essayé de faire la différence entre la valeur rentrée et la valeur du tableau sans succés.
 
Voici mon code  
 


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(void) {
 
 
int i, T[10],nb,test=0,d;      
 
for(i=0;i<=9;i++)
{
do{    
       printf("Entrez votre nombre\n" );
       scanf("%d",&T[i]);
 }  
       while(T[i]<0);    
       
 }
 
for(i=0;i<=9;i++)
{
printf("\nT[%d]=%d\n", i,T[i]);
         
}
 
printf("Entrez une valeur entiere a rechercher\n" );
scanf("%d",&nb);
 
 
for(i=0;i<=9;i++)
{
if (T[i]==nb){
              printf("la valeur est presente en position n %d",i);
              test=1;
              }
                 else  
                     {
                       if(abs(nb-T[i])<abs(nb-T[i+1]))
                                                     {
                                                     d=T[i];
                                                     }    
                                                      else
                                                          {d=T[i+1];      
                                                          }  
                       
                      }        
                     
 
 }                      
     
 
if(test==0){
        printf("%d est plus proche %d\n",nb,d);
           }
 
 
system("pause" );
 
return 0;
}


 
 
Voila je vous en serais trés reconnaissant de toute aide que vous allez m'apporter car là je galère grave merci.


Message édité par vyse75 le 05-12-2007 à 21:59:26
mood
Publicité
Posté le 05-12-2007 à 20:10:47  profilanswer
 

n°1653501
Elmoricq
Modérateur
Posté le 05-12-2007 à 21:40:02  profilanswer
 

C'est pas du C++, je déplace dans C.

n°1653503
Elmoricq
Modérateur
Posté le 05-12-2007 à 21:45:07  profilanswer
 

Voila, ensutie, j'ai la flemme de chercher dans ce code parce qu'il est si mal indenté qu'il en est illisible. Bien présenter son code permet de localiser des erreurs d'un seul coup d'oeil et permet aussi simplement de comprendre le programme, donc c'est important.
 
De toute façon, ton programme ne compile pas :

C:\Program Files\CodeBlocks\seb\test.c: In function `int main()':
C:\Program Files\CodeBlocks\seb\test.c:39: error: expected `)' before '{' token
C:\Program Files\CodeBlocks\seb\test.c:48: error: expected primary-expression before '}' token
C:\Program Files\CodeBlocks\seb\test.c:48: error: expected `;' before '}' token

n°1653507
vyse75
Posté le 05-12-2007 à 22:00:17  profilanswer
 

Ok désolé, voila j'ai fais quelques efforts de présentation et régler les problèmes qui génaient.

n°1653519
Elmoricq
Modérateur
Posté le 05-12-2007 à 22:33:11  profilanswer
 

Déjà tu as un gros problème lorsque tu testes nb avec T[i] avec i==9, parce que tu vas comparer à T[i+1] qui est un élément du tableau qui n'existe pas.
Cela induit un comportement aléatoire : parfois ça marche, parfois ça fait semblant de marcher mais ça produit n'importe quoi, parfois ça plante.

 

Il faut donc que tu corriges ça.

 

Ensuite, tu n'as pas besoin de math.h.

 

Mais le plus important, c'est que l'algorithme que tu emploies est faux.
Je vais te mettre sur la piste, ton programme agit de cette façon :
SI l'écart avec l'élément courant est plus petit que l'écart avec l'élément suivant
ALORS
   position de référence = position courante
SINON
   position de référence = position suivante
FINSI

 

Essaie de dérouler cet algorithme, et tu devrais trouver pourquoi il est faux. ;)

 

(et ton indentation est vraiment peu... orthodoxe [:pingouino])


Message édité par Elmoricq le 05-12-2007 à 22:33:23

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  problème programme Tableau

 

Sujets relatifs
Probleme Free et scripts de news PHPCherche qq'un qui voudrais réécrire mon programme JAVA (ou en Windev)
problème de Visual StudiojQuery lent ?
Fieldset-like : Probleme de rendu sous IE6[Résolu] Probleme boucle coloration
probleme background color en CSS sur Firefoxprobleme d' affichage sous firefox
Probleme d'Ecriture en Delphi[Resolu] Probleme liste dynamique
Plus de sujets relatifs à : problème programme Tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR