OVH Cloud OVH Cloud

ranger dans l'odre croissant sans array

25 réponses
Avatar
natdy
Bonjour,
J'écrit un programme qui génère 10 nombre et qui doit les ranger dans l'ordre croissant puis les afficher mais celui ne fonctionne pas. voici mon code:

int nombre, i;

int [] mylist = new int [10];
int tirage;

tirage = 1;

while (tirage <=10)
{
nombre = (int)(Math.random()*10000)+1;
for (i=0; i<10; i++)
{
mylist[10] = nombre + i;
}
tirage = tirage + 1;
}
System.out.println("Voici les nombres dans l'ordre croissant :" + mylist[10] + "");

Merci de votre aide

5 réponses

1 2 3
Avatar
Samuel DEVULDER
Le 01/03/2013 14:42, Toxico Nimbus a écrit :

Renseigne toi d'abord sur les techniques de tri,



Si tu veux mon avis, je pense que vu le niveau de l'exercice ce n'est
pas un tri comme on l'entends qui est recherché mais plutôt la
construction d'un algo pour voir si on maitrise la notion d'indexe dans
les tableaux.

Ce que le formateur veut sans doute voir réaliser est l'algo suivant: on
tire un nb au hasard qu'on range dans le 1er indice du tableau. Puis
pour les indices suivants, on tire un nombre au hasard, on le compare
avec la valeur stockée à l'indice précédent. Si plus petit ou égal, on
le place dans l'indice courant et on incrémente l'indice, sinon on
retire un nombre au hasard qu'on re-compare etc..

Bref au final, on aura des valeurs aléatoire *croissantes* sans avoir à
faire de tris. Ce qui est précisément ce qui a été dit dans le 1er message:

J'écrit un programme qui génère 10 nombre et qui doit les *ranger




dans l'ordre croissant*

Bref on fait fausse route avec Array, tri par insertion etc. Je pense
vraiment que c'est un exercice de débutant pour voir si on est clair au
niveau des boucles, des tableaux et de leurs indexes.

Les tris ce sera dans plusieurs leçons. Même si répondre à l’exercice
avec un Array.sort() peut épater le prof, ca n'est très probablement pas
ce qui est recherché IMHA.

sam.
Avatar
natdy
Le jeudi 28 Février 2013 à 23:12 par natdy :
Bonjour,
J'écrit un programme qui génère 10 nombre et qui doit les
ranger dans l'ordre croissant puis les afficher mais celui ne fonctionne pas.
voici mon code:

int nombre, i;

int [] mylist = new int [10];
int tirage;

tirage = 1;

while (tirage <)
{
nombre = (int)(Math.random()*10000)+1;
for (i=0; i<10; i++)
{
mylist[10] = nombre + i;
}
tirage = tirage + 1;
}
System.out.println("Voici les nombres dans l'ordre croissant :" +
mylist[10] + "");

Merci de votre aide


pour faire cela, je doit comparer le nombre sortie avec ma ceux de ma liste pour le placer mais je sais pas comment faire
Avatar
Toxico Nimbus
Le 01/03/2013 21:52, Samuel DEVULDER a écrit :
Le 01/03/2013 14:23, natdy a écrit :

J'ai mi sa et sa me sort qu'un nombre



aie pas de SMS s'il vous plait

for ( tirage=0; tirage < 10; tirage--)



Que voulez vous faire avec cette boucle?

Elle est quasi infinie. Pourquoi? Bon exercice:
* tirage démarre à 0,
* ne fait que décroitre (tirage--)
* tirage est donc toujours "<10".

Bref, non, elle ne peut pas tourner qu'une seule fois.



Et pourtant si, au premier indice négatif, pan, RunTimeException...
Avatar
Yliur
Le Fri, 01 Mar 2013 16:43:13 -0600
natdy a écrit :

Le jeudi 28 Février 2013 à 23:12 par natdy :
> Bonjour,
> J'écrit un programme qui génère 10 nombre et qui doit les
> ranger dans l'ordre croissant puis les afficher mais celui ne
> fonctionne pas. voici mon code:
>
> int nombre, i;
>
> int [] mylist = new int [10];
> int tirage;
>
> tirage = 1;
>
> while (tirage <)
> {
> nombre = (int)(Math.random()*10000)+1;
> for (i=0; i<10; i++)
> {
> mylist[10] = nombre + i;
> }
> tirage = tirage + 1;
> }
> System.out.println("Voici les nombres dans l'ordre
> croissant :" + mylist[10] + "");
>
> Merci de votre aide
pour faire cela, je doit comparer le nombre sortie avec ma ceux de ma
liste pour le placer mais je sais pas comment faire



C'est plus facile si tu réponds aux remarques directement plutôt que
dans un nouveau message, ça permet de développer plusieurs points et de
bien suivre les échanges sur le sujet.

Je pense vraiment que tu devrais faire une décomposition par étapes,
sans rien coder. C'est le meilleur moyen d'apprendre et de comprendre
comment écrire des algorithmes.

Pour répondre à ta question (mais je ne sais pas si ça va t'avancer, si
tu n'as pas fait le reste) :
- Le nombre sorti se trouve dans la variable nombre.
- Pour obtenir la valeur de la case de numéro n dans le tableau, tu
écris mylist[n].
=> Pour savoir si le nombre tiré est supérieur à la valeur de la
première case du tableau, tu peux écrire :
if (nombre > mylist[0])
{
...
}
Avatar
Marc Petit-Huguenin
On 02/28/2013 02:12 PM, natdy wrote:
Bonjour,
J'écrit un programme qui génère 10 nombre et qui doit les ranger dans l'ordre
croissant puis les afficher mais celui ne fonctionne pas. voici mon code:

int nombre, i;

int [] mylist = new int [10];
int tirage;

tirage = 1;

while (tirage <)
{
nombre = (int)(Math.random()*10000)+1;
for (i=0; i<10; i++)
{
mylist[10] = nombre + i;
}
tirage = tirage + 1;
}
System.out.println("Voici les nombres dans l'ordre croissant :" + mylist[10] +
"");

Merci de votre aide



System.out.println("Voici les nombres dans l'ordre croissant :");
for (int i = 0, j = 0; i < 10; i++) {
System.out.println(j += Math.random() * 1000);
}
}
1 2 3