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

besoin d'aide et explications

akumabeelz
akumabeelz
Niveau 10
05 octobre 2013 à 00:50:23

je suis bloquer dans un exo qui doit afficher un nombre donné au hasard
jai une variable val

val = 1
if (nb<0)
{
my_putchar('-')
nb = nb * -1
}

while (nb / val > 9)
{
val = val * 10;
}
while(val > 10) c'est la que je bloque je ne sais pas comment faire pour afficher le reste du nombre la j'ai seulement le premier chiffre

akumabeelz
akumabeelz
Niveau 10
05 octobre 2013 à 01:02:48

par exemple pour afficher 500 donc nb=500
la avec la boucle while jobtient le premier chiffre mais pr le reste? C'est a dire les autres chiffre je fais comment?
jai penser a diviser nb par 10 mais je vois pas trop comment faire ...

akumabeelz
akumabeelz
Niveau 10
05 octobre 2013 à 01:33:56

up

Eij_iZ_WanteD
Eij_iZ_WanteD
Niveau 10
05 octobre 2013 à 11:36:34

Moi je ne connais pas le C mais au niveau algo ça doinnerait quelque chose comme ça :

int val = 1
int i = 0

if (nb < 0)
{
my_putchar('-');
nb = nb * -1;
}

while (nb > 9)
{
nb = nb / 10;
i++;
}
my_putchar(nb)

For (j = i; j > 0; j--)
{
my_putchar('0');
}

Eij_iZ_WanteD
Eij_iZ_WanteD
Niveau 10
05 octobre 2013 à 11:43:45

Oups j'ai pris que pour ton exemple nb = 500.

Je vais voir s'il y a un moyen de faire un truc pas trop long, parce qu'après avoir diviser par 10 un max de fois, tu peux toujours essayer de retrancher 1 un max de fois jusqu'à temps que ton nombre soit inférieur à 1, puis le remultiplier par 10 et recommencer à soustraire.

Eij_iZ_WanteD
Eij_iZ_WanteD
Niveau 10
05 octobre 2013 à 12:01:12

Voilà déjà ce que je te proposais mais je ne sais pas gérer les tableaux dynamiques en C :

int val = 1
int i = 0
int k = 0
//ajouter déclaration d'un tableau dynamique "stock" de taille i+1

if (nb < 0)
{
my_putchar('-');
nb = nb * -1;
}

while (nb > 9)
{
nb = nb / 10;
i++;
}

For (j = 0; j < i; j++)
While (nb >= 1)
{
nb = nb - 1;
k++;
}
stock[j] = k;
nb = nb * 10;
}

For (j = 0; j < i; j++)
{
my_putchar(stock[j]);
}

Eij_iZ_WanteD
Eij_iZ_WanteD
Niveau 10
05 octobre 2013 à 12:07:51

Après pour le tableau, tout dépend de si tu dois le déclarer au début ou si tu peux le faire à la volée dans le traitement, auquel cas suffit de le déclarer après que tu aies calculer i.

Eij_iZ_WanteD
Eij_iZ_WanteD
Niveau 10
05 octobre 2013 à 12:28:17

Au passage, tu peux faire sans tableau mais ça alourdit encore, c'est à dire que tu dois commencer par décomposer par la fin. Exemple nb = 532 :

Tu gardes ton nombre de base en mémoire.
Tu le divises par 10 deux fois (i=2), ça te fait 5,32. Tu retires le 5 (reste 0,32), tu fais fois 10 (donne 3,2), tu refais de même pour le 3 (0,2 --> 2) et le 2 (2 --> 0), tu affiches le 2, tu retranches le 2 à ton nombre en mémoire. Tu remarques que tu as fait ça i+1 fois. Tu recommences cette fois i fois l'opération puis i-1 fois, je pense que tu vois la boucle.

akumabeelz
akumabeelz
Niveau 10
05 octobre 2013 à 18:26:04

merci beaucoup!

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