Calcul de la distance entre deux villes

Soyez le premier à donner votre avis sur cette source.

Snippet vu 245 813 fois - Téléchargée 27 fois

Contenu du snippet

Tout est dit dans le titre...

Source / Exemple :


public class distances_villes
{public static void main(String args[])
 {int i, choix, nbv=0, fin=0, dist[][]=new int[10][10]; String nom, ville[]=new String[10]; boolean ok;

	do {

		System.out.println("Menu:");
		System.out.println("1|Enregistrer une ville.");
		System.out.println("2|Donner une distance entre deux villes.");
		System.out.println("3|Donner les villes situees a moins de x kilometres d'une ville donnee.");
		System.out.println("X|Quitter.");
		choix=Lire.i();

		switch(choix) {

		case 1:	if(nbv==10)
				System.out.println("Vous ne pouvez plus enregistrez de ville.");

			else {
				System.out.println("Nom de la ville:");
				nom=Lire.S();

				ok=Recherche(ville,nom,nbv);
				if(ok==false)
					System.out.println("Ville deja saisie.");
				else {
					ville[nbv]=nom;

					for(i=0;i<nbv;i++) {
						System.out.println("Donnez la distance avec "+ville[i]+":");
						dist[nbv][i]=Lire.i();
						dist[i][nbv]=dist[nbv][i];
					                   }

					nbv++;
				     }
			     }
			break;

		case 2:	if(nbv==0)
				System.out.println("Il n'y a pas de ville enregistree.");
			else if(nbv==1)
				System.out.println("Il n'y a qu'une ville d'enregistree.");
			else {
				System.out.println("Voici les villes:");
				for(i=0;i<nbv;i++)
					System.out.println(i+": "+ville[i]);
			
				Distance(dist,ville);
			     }
				break;

		case 3:	if(nbv==0)
				System.out.println("Il n'y a pas de ville enregistree.");
			else if(nbv==1)
				System.out.println("Il n'y a qu'une ville d'enregistree.");
			else {
				System.out.println("Voici les villes:");
				for(i=0;i<nbv;i++)
					System.out.println(i+": "+ville[i]);
			
				Distance_min(dist,ville,nbv);
			     }
			break;

		default:	fin=1;
				break;

		             }

	   }
	while(fin==0);

 }

public static void Distance(int Tab1[][], String Tab2[]) {
	int v1, v2, i;
	System.out.println("Donnez le numero de la premiere ville:");
	v1=Lire.i();
	System.out.println("Donnez le numero de la seconde ville:");
	do {
		v2=Lire.i();
		if(v2==v1)
		System.out.println("Vous ne pouvez pas comparer deux fois la meme ville ; recommencez:");	
	   }
	while(v2==v1);
	System.out.println("La distance entre "+Tab2[v1]+" et "+Tab2[v2]+" est : "+Tab1[v1][v2]);
                                                           }

public static void Distance_min(int Tab1[][], String Tab2[], int nb) {
	int v, d, i, cpt=0;
	System.out.println("Donnez le numero de la ville:");
	v=Lire.i();
	System.out.println("Donnez la distance minimale:");
	d=Lire.i();
	System.out.println("Les villes situees a moins de "+d+" km de "+Tab2[v]+" sont:");
	for(i=0;i<v;i++)
		if(Tab1[i][v]<d) {
			System.out.println(Tab2[i]+" --> "+Tab1[i][v]+" km");
			cpt++;
		                 }
	for(i=v+1;i<nb;i++)
		if(Tab1[i][v]<=d) {
			System.out.println(Tab2[i]+" --> "+Tab1[i][v]+" km");
			cpt++;
		                 }
		if(cpt==0)
			System.out.println("Il n'y a pas de ville situee a moins de "+d+" km de "+Tab2[v]+".");
                                                                     }

public static boolean Recherche(String Ville[], String nom, int nbv) {
	int cpt=0, i; boolean ok;
	for(i=0;i<nbv;i++)
		if(nom==Ville[i])
			cpt++;
	if(cpt==0)
		return ok=true;
	else
		return ok=false;
                                                                     }

}

Conclusion :


Ce code est complétement libre, vous pouvez le modifier comme bon vous semble.

Si vous arrivez à des trucs bien, envoyez les moi, je les ajouterais ici afin que tout le monde puisse en profiter...

(bon ben le zip marche po alors je mets le code direct voilà...)

A voir également

Ajouter un commentaire

Commentaires

cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250 -
Ce n'est vraiment pas terrible, tu n'utilises aucun objet alors que ca t'aurais énormément simplifié la vie de créer une classe ville et de définir des fonction qui vont avec.

Tout faire dans une procédure main c'est vraiment à l'opposé de l'esprit de java, en plus, les choix effectués sont douteux, pas plus de 10 villes, et cela uniquement parce que le tableau n'est pas redimensionnable. Ce n'est pas le langage qui doit fixer les contraintes de programmation !

Aucun commentaire, aucun nom explicite de variable, aucun respect des normes de codage en vigueur !!

Je pense malgré tout que ce code pourrait être assez intéressant, l'idée est bonne mais malheureusement mal exploitée.
atha2
Messages postés
3
Date d'inscription
jeudi 16 novembre 2006
Statut
Membre
Dernière intervention
26 juillet 2007
-
Dsl f0x mais Lire est une classe et i() est une methode static de la classe Lire qui retourne un int. Voici plus ou moins comment elle doit être codé.
public class Lire{
public static int i() {
boolean erreur;
int lu = 0;
do {
try {
erreur = false;
lu = new Integer(getString()).intValue();
}
catch (NumberFormatException e) {
System.out.println("Veuillez entrer un entier!");
erreur = true;
}
} while (erreur);
return lu;
}

public static int s(){
BufferedReader fe = new BufferedReader(new InputStreamReader(System.in));
boolean erreur;
String lu = null;
do {
try {
erreur = false;
lu = fe.readLine();
}
catch (IOException e) {
System.out.println("Recommencez.");
erreur = true;
}
} while (erreur);
return lu;
}
}
cs_f0x
Messages postés
3
Date d'inscription
jeudi 13 novembre 2003
Statut
Membre
Dernière intervention
20 janvier 2009
-
en effet car Lire n'est pas une variable ^^
mais une méthode
vincedav31
Messages postés
9
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
18 novembre 2008
-
A croire que les gens qui postent leurs commentaires n'ont pas essayé de faire marcher ton programme. En effet tu n'as pas déclaré ta variable Lire
Beno 78
Messages postés
1
Date d'inscription
lundi 14 mai 2007
Statut
Membre
Dernière intervention
14 mai 2007
-
je voudrais savoir quel programme vous utilisez pour lancer ces exécutions. DEV CPP? ou autre ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.