begin process at 2012 02 08 10:48:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > ALGORITHME DU VOYAGEUR ( NON OPTIMISÉ )

ALGORITHME DU VOYAGEUR ( NON OPTIMISÉ )


 Information sur la source

Note :
5 / 10 - par 4 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Débutant Date de création :05/12/2001 Vu / téléchargé :6 195 / 219

Auteur : wallen73

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description


Source

  • #include<iostream.h>
  • #include<string.h>
  • #include<math.h>
  • const int nbmaxville=100;
  • struct ville
  • {
  • char nom[16];
  • double x,y;
  • };
  • struct liste
  • {
  • int nbville;
  • ville town[nbmaxville];
  • };
  • double distance(ville v1,ville v2)
  • {
  • double x1,y1;
  • x1=v1.x-v2.x;
  • y1=v1.y-v2.y;
  • return (sqrt(x1*x1+y1*y1));
  • }
  • void saisirville(ville &city)
  • {
  • cout<<"Entrez le nom de la fille : ";cin>>city.nom;
  • cout<<"Entrez l'abscisse de la fille : ";cin>>city.x;
  • cout<<"Entrez l'ordonnee de la fille : ";cin>>city.y;
  • }
  • void saisirliste(liste &listeville)
  • {
  • int i,j;
  • ville city;
  • bool cestbon;
  • do
  • {cout<<"combien de fille foulez fous entrer?";cin>>listeville.nbville;}
  • while ((listeville.nbville<0)||(listeville.nbville>100));
  • for (i=0;i<listeville.nbville;i++)
  • {
  • do
  • {
  • saisirville(city);
  • for (j=0;j<i;j++)
  • {
  • if ((strcmp(listeville.town[j].nom,city.nom)==0)||((listeville.town[j].x==city.x)&&(listeville.town[j].y==city.y)))
  • {
  • cout<<"Nom ou emplacement deja vendu."<<endl;
  • cestbon=false;
  • }
  • else cestbon=true;
  • }
  • }while (cestbon==false);
  • listeville.town[i]=city;
  • }
  • }
  • void supprimeville(liste &listeville,ville &city)
  • {
  • int i,j;
  • for (i=0;i<listeville.nbville;i++)
  • {
  • if ((strcmp(listeville.town[i].nom,city.nom))==0)
  • {
  • listeville.nbville--;
  • for (j=i;j<listeville.nbville;j++)
  • {
  • listeville.town[j]=listeville.town[j+1];
  • }
  • }
  • }
  • }
  • void stadtplusproche(liste &listeciudad,int &pproche,double &dist)
  • {
  • int i;
  • pproche=0;
  • dist=distance(listeciudad.town[0],listeciudad.town[listeciudad.nbville-1]);
  • for (i=1;i<listeciudad.nbville-1;i++)
  • {
  • if (distance(listeciudad.town[i],listeciudad.town[listeciudad.nbville-1])<dist)
  • {
  • dist=distance(listeciudad.town[i],listeciudad.town[listeciudad.nbville-1]);
  • pproche=i;
  • }
  • }
  • }
  • void main()
  • {
  • int i,placeville;
  • bool existe;
  • double disttot=0,dist;
  • ville stadt;
  • liste listestadt;
  • existe=false;
  • cout<<"Bonjour, fous allez bien?"<<endl;
  • saisirliste(listestadt);
  • do
  • {
  • cout<<"Feuillez saisir fotre fille de depart? ";cin>>stadt.nom;
  • for (i=0;i<listestadt.nbville;i++)
  • {
  • if ((strcmp(stadt.nom,listestadt.town[i].nom))==0)
  • {
  • stadt=listestadt.town[i];
  • placeville=i;
  • existe=true;
  • }
  • }
  • if (existe==false) cout<<"Fous nous mentez! Cette Stadt n'existe pas! Donnez nous une fille qui existe! Nous afons les moyens de fous faire barler!"<<endl;
  • } while (existe==false);
  • cout<<"Premiere stadt : "<<stadt.nom<<endl;
  • while (listestadt.nbville>1)
  • {
  • listestadt.town[placeville]=listestadt.town[listestadt.nbville-1];
  • listestadt.town[listestadt.nbville-1]=stadt;
  • stadtplusproche(listestadt,placeville,dist);
  • disttot+=dist;
  • supprimeville(listestadt,stadt);
  • stadt=listestadt.town[placeville];
  • cout<<"Stadt suivante : "<<stadt.nom<<endl;
  • cout<<"Distance entre les deux derniere ville : "<<dist<<endl;
  • }
  • cout<<endl;
  • cout<<"Distance totale : "<<disttot<<endl<<endl;
  • }
#include<iostream.h>
#include<string.h>
#include<math.h>

const int nbmaxville=100;


struct ville
{
	char nom[16];
	double x,y;
};


struct liste
{
	int nbville;
	ville town[nbmaxville];
};


double distance(ville v1,ville v2)
{
	double x1,y1;
	x1=v1.x-v2.x;
	y1=v1.y-v2.y;
	return (sqrt(x1*x1+y1*y1));
}


void saisirville(ville &city)
{
	cout<<"Entrez le nom de la fille : ";cin>>city.nom;
	cout<<"Entrez l'abscisse de la fille : ";cin>>city.x;
	cout<<"Entrez l'ordonnee de la fille : ";cin>>city.y;
}


void saisirliste(liste &listeville)
{
	int i,j;
	ville city;
	bool cestbon;
	do
	{cout<<"combien de fille foulez fous entrer?";cin>>listeville.nbville;}
	while ((listeville.nbville<0)||(listeville.nbville>100));
	for (i=0;i<listeville.nbville;i++)
	{
		do
		{
			saisirville(city);
			for (j=0;j<i;j++)
			{
				if ((strcmp(listeville.town[j].nom,city.nom)==0)||((listeville.town[j].x==city.x)&&(listeville.town[j].y==city.y)))
				{
					cout<<"Nom ou emplacement deja vendu."<<endl;
					cestbon=false;
				}
				else cestbon=true;
			}
		}while (cestbon==false);
		listeville.town[i]=city;
	}
}


void supprimeville(liste &listeville,ville &city)
{
	int i,j;
	for (i=0;i<listeville.nbville;i++)
	{
		if ((strcmp(listeville.town[i].nom,city.nom))==0)
		{
			listeville.nbville--;
			for (j=i;j<listeville.nbville;j++)
			{
				listeville.town[j]=listeville.town[j+1];
			}
		}
	}
}

void stadtplusproche(liste &listeciudad,int &pproche,double &dist)
{
	int i;
	pproche=0;
	dist=distance(listeciudad.town[0],listeciudad.town[listeciudad.nbville-1]);
	for (i=1;i<listeciudad.nbville-1;i++)
	{
		if (distance(listeciudad.town[i],listeciudad.town[listeciudad.nbville-1])<dist)
		{
			dist=distance(listeciudad.town[i],listeciudad.town[listeciudad.nbville-1]);
			pproche=i;
		}
	}
}


void main()
{
	int i,placeville;
	bool existe;
	double disttot=0,dist;
	ville stadt;
	liste listestadt;
	existe=false;
	cout<<"Bonjour, fous allez bien?"<<endl;
	saisirliste(listestadt);
	do
	{
		cout<<"Feuillez saisir fotre fille de depart? ";cin>>stadt.nom;
		for (i=0;i<listestadt.nbville;i++)
		{
			if ((strcmp(stadt.nom,listestadt.town[i].nom))==0) 
			{
				stadt=listestadt.town[i];
				placeville=i;
				existe=true;
			}
		}
	if (existe==false) cout<<"Fous nous mentez! Cette Stadt n'existe pas! Donnez nous une fille qui existe! Nous afons les moyens de fous faire barler!"<<endl;
	} while (existe==false);
	cout<<"Premiere stadt : "<<stadt.nom<<endl;
	while (listestadt.nbville>1)
	{
		listestadt.town[placeville]=listestadt.town[listestadt.nbville-1];
		listestadt.town[listestadt.nbville-1]=stadt;
		stadtplusproche(listestadt,placeville,dist);
		disttot+=dist;
		supprimeville(listestadt,stadt);
		stadt=listestadt.town[placeville];
		cout<<"Stadt suivante : "<<stadt.nom<<endl;
		cout<<"Distance entre les deux derniere ville : "<<dist<<endl;
	}
	cout<<endl;
	cout<<"Distance totale : "<<disttot<<endl<<endl;
} 



 Sources du même auteur

Source avec Zip EXEMPLE DE STOCKAGE DE DONNÉES DANS UN FICHIER (VC++)
Source avec Zip GESTION DE NOTES
Source avec Zip LETTRE LA PLUS PRÉSENTE DANS UN MOT
Source avec Zip EST-CE UN PALYNDROME
Source avec Zip METTRE UNE CHAÎNE EN MAJUSCULES

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de Tylos le 24/01/2002 22:48:19

bien marrant comme source :)

Commentaire de BaFM le 24/07/2002 17:10:56

faut pas essayer de faire l'allemand qui farle français

Commentaire de thelogos le 11/10/2002 15:59:17

Je n'ai pas lu la suite du code concernant la recherche du plus court chemin, car je pense que l'auteur ne l'a pas compilé ni exécuté.. Apparemment il ne sait pas saisir une liste de villes dont les noms et coordonnées, sont tous différents, donc j'ai de gros doutes pour la suite.. Revoir les boucles  et surtout le problème des boucles infinies..

Commentaire de caraldesail le 23/12/2002 21:47:30

Pour info, c'a l'air de fonctionner sur DevC

Commentaire de caraldesail le 23/12/2002 21:49:55

ENFIN, IL FONCTIONNE... C VITE DIT!
En fait, il se compile comme il faut, mais pour la boucle, ou la la !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,059 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales