Algorithme de base : parcourir un tableau d'entiers
Fermé
dave jnr
Messages postés
36
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
5 février 2014
-
4 févr. 2014 à 15:56
dave jnr Messages postés 36 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 5 février 2014 - 5 févr. 2014 à 15:38
dave jnr Messages postés 36 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 5 février 2014 - 5 févr. 2014 à 15:38
A voir également:
- Algorithme de base : parcourir un tableau d'entiers
- Base de registre - Guide
- Formules excel de base - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- La base de données de sécurité du serveur n'a pas de compte d'ordinateur pour la relation ✓ - Forum Réseau
2 réponses
honey22
Messages postés
119
Date d'inscription
mardi 21 août 2012
Statut
Membre
Dernière intervention
3 juillet 2014
32
5 févr. 2014 à 01:56
5 févr. 2014 à 01:56
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.
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié par Reivax962 le 5/02/2014 à 13:49
Modifié par Reivax962 le 5/02/2014 à 13:49
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
dave jnr
Messages postés
36
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
5 février 2014
5 févr. 2014 à 15:38
5 févr. 2014 à 15:38
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!
5 févr. 2014 à 10:38
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!
5 févr. 2014 à 15:10
tab2[indiceTab2]=tab1[i-1]*100+tab1[i]*10+tab1[i+1];