Renvoyer char [Résolu]

helloworld95 - 11 févr. 2017 à 16:47 - Dernière réponse :  helloworld95
- 11 févr. 2017 à 18:19
Bonjour,

J'aimerai renvoyer le caractère que j'ai supprimer de ma table. Mais la méthode ne fonctionne pas

Voici mon code

Merci d'avance pour votre aide.

	public char supprime(int rang){
		char carac = 0;
		for (int i = 0 ; i < taille; i++){
			if (rang == table[i]){
				carac = table[i];
				for (int j = i+1; j > taille; j++){
					table[j-1] = table[j];
				}
			}
		}
		taille--;
		return carac;
	}



Afficher la suite 

4 réponses

Répondre au sujet
KX 15096 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention - 11 févr. 2017 à 17:40
0
Utile
1
Bonjour,

if (rang == table[i])
va comparer ton rang avec la valeur dans le tableau, c'est à dire le char que tu veux retourner, ne voudrais tu pas plutôt faire
if (rang == i)
pour supprimer le caractère situé au rang donné ?
Dans ce cas ta boucle for sur les i, ainsi que ton if, ne servent à rien puisque tu peux directement aller au bon rang vu que tu le connais.

Et attention, dans ta boucle sur les j, tu fais j > taille ce qui est faux dès le départ puisque j = i+1.

public char supprime(int rang) {
    char carac = table[rang];
    taille--;
    for (int i = rang; i < taille; i++) {
        table[i] = table[i+1];
    }
    return carac;
}
Merci c'est beaucoup plus clair comme ça !
Commenter la réponse de KX
NHenry 14005 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention - 11 févr. 2017 à 17:46
0
Utile
1
J'ai un souci de compréhension de ton code :
De ce que je pense que tu veux faire :
- Tu appelles ta fonction pour retirer l'item d'index "rang" dans ta table "table" et tu compacte la table pour éviter le trou.
De ce que je constate :
- Tu appelles ta fonction pour retirer l'item "rang" de ta table et tu compactes ensuite.

Si Rang est l'index de l'item à retirer, ta fonction est fausse.
Si Rang est l'item à retirer alors ru n'as qu'à retourner "rang" ou au pire, faire un "break" avant de sortir de ton "if".
Effectivement rang est l'index du caractère à renvoyer.
Commenter la réponse de NHenry