[java]algo de ChangRoberts

Fermé
Kenobi - 21 avril 2005 à 23:04
 yousra01 - 9 juin 2011 à 11:22
Bonjour,
Je dois pour un devoir implémenter l'algorithme de ChangRoberts en java.
Je ne sais pas du tout par quoi commencer ni comment organiser le tout , c'est-à-dire si je dois faire plusieurs classes et si oui lesquelles, comment organiser...
Voici l'algorithme :

la variable etati prend les valeurs : passif, candidat, battu ou elu
debut
	si (Pi est initiateur) alors
		etati =candidat 
		envoyer le jeton < idi > sur l'anneau 
		répéter reçevoir < idi >
			si (idi = id) alors
				etati = elu 
			sinon 
				si (idi < id) alors
					si (etati = candidat) alors
						etat: = battu 
						envoyer le jeton < id >sur l'anneau
					Finsi
				Finsi
			FinSi
		tant que (etati! = elu) 
	sinon
		répéter
			recevoir < id >
			envoyer le jeton< id >sur l'anneau 
			si (etati  = passif) alors
				etati := battu
			Finsi
		tant que (vrai) 
	Finsi
Fin


Merci pour votre aide

Kenobi
A voir également:

2 réponses

public class Token {

final int id = 4;
int Valjeton = 4;

public static void main(String[] args)
{

try
{
Token jeton = new Token();
new TokenR(jeton);
new TokenS(jeton);

}catch (Exception e){}

}

}



import java.io.*;
import java.net.*;


//...Classe pour recevoir un message...
//...Cette classe sera utilisée pour envoyer un jeton sur un anneau...
public class TokenR implements Runnable {

static final int portjetonR = 8900;
private Token Jeton;


//***Constructeur du Thread*
TokenR(Token jet)
{
Jeton = jet;
Thread t = new Thread(this);
t.start();
// System.out.println("Reception activée...");
}

public void run()
{
try
{

ServerSocket SocTokenR = new ServerSocket(portjetonR);

Socket SocClient = SocTokenR.accept(); // le client accepte une connexion


// Flux d'entrée du contenu du fichier depuis le serveur
BufferedReader in = new BufferedReader(new InputStreamReader(SocClient.getInputStream()));

int valeur = in.read()-48;
System.out.println(valeur);

if (valeur == Jeton.id)
{
System.out.println("-- ALGORITHME DE CHANG & ROBERTS --");
System.out.println("je suis élu !");
}

if (valeur > Jeton.Valjeton)
{
Jeton.Valjeton = valeur;
}
else
{
Jeton.Valjeton = Jeton.id;
}

}catch (Exception e){new TokenR(Jeton);}

finally
{
new TokenR(Jeton);
}
}

} //... FIN ...


import java.io.*;
import java.net.*;


// *** Cette classe est utilisée pour envoyer le jeton sur l'anneau
public class TokenS implements Runnable {

static final int portjetonS = 8909;

private Token Jeton;

//*** Constructeur de la Thread
TokenS(Token jet)
{
Jeton = jet;
Thread t = new Thread(this);
t.start();
System.out.println("Emission activée...");
}


public void run()
{
try
{

Socket SocTokenS = new Socket ("10.128.130.173", portjetonS);

// Flux de sortie pour envoyer le nombre ValServ au serveur suivant
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(SocTokenS.getOutputStream())));

out.println(Jeton.Valjeton);
//out.println(1);
out.flush();
}catch (Exception e){}

finally
{
new TokenS(Jeton);
}
}
} // ***FIN***

voici mon phone +22502046342
8
bonjour d'aprés ce que je vois vous avez pu implémenté l'algorithme de chang and robert sous java mais est ce que vous n'avez pas esseyer par hazard de l'implémenté avec visidia

merci de me répondre

yousra
0