Je cherche une fonction equivalente à foreach() ?

pyr0123 Messages postés 48 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 13 juillet 2010 - 10 mars 2006 à 16:22
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 - 10 mars 2006 à 21:05
Bonjour,
En PHP il existe une fonction foreach($tableau) tres pratique.
exemple :

$arr = array(1, 2, 3, 4);
foreach ($arr as &$value)
{
$value = $value * 2;
}
// $arr vaut maintenant array(2, 4, 6, 8)

Je ne suis pas là pour parler PHP.
Cette fonction permet de manier les donées d'un tableau.

Mon probleme en C est que je n'arrive pas à trouver d'equivalent.

Je voudrais pouvoir manier un élément de mon tableau, puis une "composée" de deux elements..

voila en gros un exemple:

int A[] = {a,b,c,d,e}
for(i=0;i<5;i++)
{ res = super_fonction( A[i] );
return res;
}

Au debut, j'ai besoin d'accéder a une donnée ('a') pour faire une operation dessus (cela est possible avec un tableau : ok.)

res = super_fonction( A[0] );
return res;
// ici on traite le 'a'

Là où ça se complique c'est que ensuite j'ai aussi besoin d'acceder a une composition des données, cest a dire que j'ai besoin d'effectuer une operation
sur 'a' et 'b' en meme temps de tel sorte : 'ab'. il faut extraire donc 2 données et faire une opération dessus.

res = super_fonction( A[01] );
return res;
// c'est faux, mais c'est que j'aimerai, ici on traite le 'ab' comme un mot a part entiere.

Avec 2, puis 3,4....n données.

Je ne pense qu'avec un tableau ca soit possible, alors je vous demande si vous connaitriez pas un type de structure capable de faire cela ?

En PHP c'est simpe mais en C.....

Merci de votre aide :)

1 réponse

cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
10 mars 2006 à 21:05
Slt, je ne sais pas si j'ai très bien pigé ce que tu souhaites réaliser, mais apparement le seul truc que tu souhaites faire c'est traiter plusieurs éléments de ton tableau d'un coup dans le bloc de ta boucle for, vraiment ça ne pose aucun problème !!!
res = super_fonction( A[01] ) ->> ?????
utilises simplement deux arguments pour ta fonction
super_fonction(A[0], A[1]);
Ou alors si tu veux utiliser un nombre variable d'éléments de ton tableau, passe en paramètre de ta fonction un pointeur sur le premier et le nombre d'éléments à traiter en second arg.
void super_fonction(int * ptr, int nb) { ...........}
Voilà voilà, si tu veux foreach a été implémenté dans la lib QT, au début ça peux peut-être le faire si tu veux t'aclimater au C/C++ mais ce serait pas un très bon conseil de te dire de l'utiliser. Va voir ce liens pour plus d'informations: http://doc.trolltech.com/4.1/containers.html#the-foreach-keyword
Tu peux chercher sur leur site pour trouver plus d'info sur la macro foreach de QT, mais bon, tu fais du C/C++ alors utilises la syntaxe du C/C++ "classique", je te conseil donc de ne pas l'utiliser.

Voilà, bonne chance.

Bouba
0
Rejoignez-nous