CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[c++] problème tableau

Okami83
Okami83
Niveau 6
05 décembre 2007 à 20:42:36

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

  1. include <stdio.h>
  2. include <stdlib.h>
  3. 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.

prince_of_jv
prince_of_jv
Niveau 10
05 décembre 2007 à 21:36:09

Je croix qu´un tri du tableau facilitera la tache. :ok:

dnob700
dnob700
Niveau 10
05 décembre 2007 à 21:58:57

il y a une bonne idée, mais que représente ton d ?

Là, à chaque tour de ta boucle tu modifie d soit pour T[i] soit pour T[i+1], donc à la fin, d==T[9] ou T[10], outre le problème d´index, le plus proche n´est pas forcément dans ces deux nombre.

Ce que tu cherche plutôt à faire, c´est quelque chose dans le genre :
if(abs(nb-T[i])<abs(nb-d))
{
d=T[i];
}
sinon, rien.

Et en initialisant correctement d (par exemple à T[0]). Et à la fin, d contiendra bien la valeur du T[i] le plus proche de nb.

Okami83
Okami83
Niveau 6
05 décembre 2007 à 22:05:14

Merci de ton aide et des tes explications dnob700, passe une bonne soirée.

Okami83
Okami83
Niveau 6
05 décembre 2007 à 22:07:48

pourrais tu m´expliquer ton raisonnement car la je capte le fond mais pas la forme :) merci

Okami83
Okami83
Niveau 6
05 décembre 2007 à 22:22:35

C´est bon je viens de comprendre.
merci à tous

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment