Algorithme de base : parcourir un tableau d'entiers
dave jnr
Messages postés
36
Date d'inscription
Statut
Membre
Dernière intervention
-
dave jnr Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
dave jnr Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde!
J'ai besoin d'aide pour écrire un petit programme en Visual c# qui doit parcourir un tableau A d'entiers ( ex. 2, 1, 4, 8, 9, 5, 4, 5, 6, 3) en sélectionnant les entiers 3 par 3 en commençant par le premier entier (on aura les groupes d'entiers 214, 148, 489, 895, 954, 545, 456, 563).
Ensuite dans ce tableau B, pour chaque groupe d'entiers, faire la différence du plus grand chiffre avec le plus petit (ex. 4 - 1 pour le premier groupe d'entiers 214).
On se retrouve avec un tableau C d'entiers résultant du calcul effectué sur chaque groupe d'entiers du tableau B.
C'est à ce stade que le programme affiche le plus grand entier du tableau C.
Voilà, je suis encore débutant en algorithme et en C#. Merci par avance pour votre aide!
P.S : Voici ce que j'ai essayé d'écrire au fait:
J'ai besoin d'aide pour écrire un petit programme en Visual c# qui doit parcourir un tableau A d'entiers ( ex. 2, 1, 4, 8, 9, 5, 4, 5, 6, 3) en sélectionnant les entiers 3 par 3 en commençant par le premier entier (on aura les groupes d'entiers 214, 148, 489, 895, 954, 545, 456, 563).
Ensuite dans ce tableau B, pour chaque groupe d'entiers, faire la différence du plus grand chiffre avec le plus petit (ex. 4 - 1 pour le premier groupe d'entiers 214).
On se retrouve avec un tableau C d'entiers résultant du calcul effectué sur chaque groupe d'entiers du tableau B.
C'est à ce stade que le programme affiche le plus grand entier du tableau C.
Voilà, je suis encore débutant en algorithme et en C#. Merci par avance pour votre aide!
P.S : Voici ce que j'ai essayé d'écrire au fait:
static void Main(string[] args) { int[] tab1 = { 2, 1, 4, 8, 9, 5, 4, 5, 6, 3 }; int d = 3; for (int i = 0; i < tab1.Length - (d + 1); i++) { for(int j=i; j < i+d; j++) { //int a = tab1.Max(); //int b = tab1.Min(); //int c = a - b; } } }
A voir également:
- Algorithme de base : parcourir un tableau d'entiers
- Base de registre - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Formules excel de base - Guide
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Gigaset pas de base - Forum telephonie fixe
2 réponses
Bonsoir,
à quoi sert ton d ?
essaie de faire étape par étape, construit le tableau B dans un premier temps.
on initialise le i dans la boucle à 1 pour être au milieu de 2 1 4 et on prend ainsi les élements i-1, i et i+1.
On va jusqu'à la taille du tab1 - 2 car tab1.Length = 10 et nous on va jusqu'au 8ème (=6). qui est aussi égale au nombre de trios.
Je te laisse un peu réfléchir pour l'étape suivante, hésite pas à poser des questions si tu n'as pas compris.
à quoi sert ton d ?
essaie de faire étape par étape, construit le tableau B dans un premier temps.
static void Main(string[] args) { int[] tab1 = { 2, 1, 4, 8, 9, 5, 4, 5, 6, 3 }; if(tab1.Length>3){ //On s'assure qu'on aura au moins 1 trio int nbTrios; nbTrios= tab1.Length-2; int[] tab2 = new int[nbTrios]; int indiceTab2 = 0; for (int i = 1; i < tab1.Length-2; i++) { tab2[indiceTab2]=tab1[i-1]*100+tab1[i]*10+tab1[i+1]; indiceTab2++; } } }
on initialise le i dans la boucle à 1 pour être au milieu de 2 1 4 et on prend ainsi les élements i-1, i et i+1.
On va jusqu'à la taille du tab1 - 2 car tab1.Length = 10 et nous on va jusqu'au 8ème (=6). qui est aussi égale au nombre de trios.
Je te laisse un peu réfléchir pour l'étape suivante, hésite pas à poser des questions si tu n'as pas compris.
Bonjour,
Est-il nécessaire de construire le second tableau ?
Pour moi tu peux directement et simplement récupérer le résultat que tu souhaites avec un truc du genre :
Xavier
Est-il nécessaire de construire le second tableau ?
Pour moi tu peux directement et simplement récupérer le résultat que tu souhaites avec un truc du genre :
static void Main(string[] args) { int[] tab = { 2, 1, 4, 8, 9, 5, 4, 5, 6, 3 }; int d = 3; int resultat = 0; for (int i = 0; i < tab.Length - d + 1; i += 3) { int enCours = 0; for (j = 0; j < d; j++) { enCours += tab[i + j] * (int)Math.Pow(10, d - j - 1); } if (enCours > resultat) resultat = enCours; } Console.WriteLine(resultat); }
Xavier
Bonjour Xavier,
Merci pour ta réponse! Pour info, le résultat final doit être la valeur Max d'un tableau d'entiers!
Je me réexplique :
- d'abord j'ai un tableau A d'entiers : { 2, 1, 4, 8, 9, 5, 4, 5, 6, 3 }
- ensuite je déclare une variable d qui permet de sélectionner les entiers du tableau A d par d en le parcourant jusqu'à d + 1 (donc si par exemple d = 4, on sélectionnera 2148, 1489, 4895, 8954, 9545, 5456, 4563 dans le tableau A)
- puis je "parcours" ces "mini-tableaux" d'entiers pour faire la différence du plus grand chiffre et du plus petit chiffre (par exemple, on fera 2148 => 8 - 1; 1489 => 9 - 1; 4895 => 9 - 4; 8954 => 9 - 4; 9545 => 9 - 4; 5456 => 6 - 4; 4653 => 6 - 3)
- enfin j'affiche le résultat final qui est la valeur Max des entiers obtenus en faisant le calcul précédant (donc la valeur max de {7, 8, 5, 5, 5, 2, 3} est 8)
Merci!
Merci pour ta réponse! Pour info, le résultat final doit être la valeur Max d'un tableau d'entiers!
Je me réexplique :
- d'abord j'ai un tableau A d'entiers : { 2, 1, 4, 8, 9, 5, 4, 5, 6, 3 }
- ensuite je déclare une variable d qui permet de sélectionner les entiers du tableau A d par d en le parcourant jusqu'à d + 1 (donc si par exemple d = 4, on sélectionnera 2148, 1489, 4895, 8954, 9545, 5456, 4563 dans le tableau A)
- puis je "parcours" ces "mini-tableaux" d'entiers pour faire la différence du plus grand chiffre et du plus petit chiffre (par exemple, on fera 2148 => 8 - 1; 1489 => 9 - 1; 4895 => 9 - 4; 8954 => 9 - 4; 9545 => 9 - 4; 5456 => 6 - 4; 4653 => 6 - 3)
- enfin j'affiche le résultat final qui est la valeur Max des entiers obtenus en faisant le calcul précédant (donc la valeur max de {7, 8, 5, 5, 5, 2, 3} est 8)
Merci!
Merci pour ta réponse (désolé je viens tout juste de la voir!)! Pour info le d est juste une variable pour sélectionner les entiers d par d et aussi, le tableau peut avoir des milliers d'entiers! Cependant, je vais tester ta démarche et je te dirai comment çà m'aide!
Merci encore!
Bonne journée!