Forum Clubic

Debutant en java demande une solution a un petit exo

salut tt le monde ,
est ce que vous pouver me donner la solution a cet petit exercice en programmation (java)?

Ecrire une methode qui prend comme parametres un tableau d’entier T et un entier V ,
et qui retourne les deux indices des cases dont la somme est egale à V;
exemple : int T[6]={5,6,20,8,3,7}
V=10
la methode retourne dans ce cas les deux indices : 4 et 5 .

merci .

voila mon travail est ce qui’il est correct ?
[cpp]
public int methode ( int [n] T , int V)
{boolean stop=false , stop2=false;
int i,j, x1,x2;

while ((i<n-1) && (stop==false))
{ while (j<n-1) && stop2==false)
{ if (T[i] + T[j+1] != v)
j++;
else
x1=T[i];
x2=T[j+1];
stop2=true;
}

if (stop2=true)
stop=true;
else
i++;}

return (x1, x2)
}[/cpp]

merci.

si tu veux retourner les indices, c’est plutot:

[cpp]
x1=i;
x2=j+1;
[/cpp]

sinon, tu dois initialiser i et j et dans ta boucle j, ton hidtoire de j+1 ne marche qu’au 1er passage, à partir du 2ème passage, tu additionneras 2 fois le meme chiffre.

pour ta valeur de retour, renvoie un tableau.

on peut obtenir un truc du genre:

[cpp]
public int[] methode ( int []T , int V)
{
boolean stop2=false;
int i=0,j=0;
int tab_retour[2];
int longueur = T.length;

while(i<longueur)
{
while(j<longueur)
{
if(i !=j)
{
if (T[i] + T[j] != V)
j++;
else
{
tab_retour[0]=i;
tab_retour[1]=j;
stop2=true;
}
}
if(stop2==true)
break; //on sort de la boucle
}
if(stop2==true)
break;
j=0;
i++;
}
if(stop2==true)
return tab_retour;
else
return null; // a verifier…
}
[/cpp]

ps: pas testé

Moi je préfère ça :

[cpp]static public int[] methode( int[] T, int V ) {
for ( int i = 0; i < T.length; i++ )
for ( int j = 0; j < T.length; j++ )
if ( i != j && ( T[i] + T[j] ) == V ) {
int[] r = {i,j};
return r;
}
return null;
}[/cpp]

Ca fait (normalement) pareil, c’est moins lourd, et ça quitte quand ça le faut, et surtout ça évite d’utiliser des break/etc. (en gros: des trucs simples pour un truc simple… non? t’es pas un shadocks que je sache :o )