int AfficheMenu(char Date[],int compteurEvtDate) // affiche le menu principal et retourne le choix de l'utilisateur sous forme de nombre traité comme un caractère
{

      char choix='0';

      printf("%c",201);
      Ligne(205,1,78);
      printf("%c",187);
      LigneVideDoubleBarre(1);
      printf("%c                              AGENDA ELECTRONIQUE                             %c",186,186);
      LigneVideDoubleBarre(1);

      LigneRaccord();

      LigneVideDoubleBarre(1);
      printf("%c                                %c",186,201);
      Ligne(205,1,43);
      printf("%c %c",187,186);
      printf("%c   1. Rechercher un evenement   %c                                           %c %c",186,186,186,186);


      switch (strlen(Date))
      {
          case 19: printf("%c                                %c %s                       %c %c",186,186,Date,186,186);    //  Ce bloc sert à adapter l'affichage du menu principal
          break;                                                                                                          //  en fonction de la longueur de la chaîne Date pour ne
          case 20: printf("%c                                %c %s                      %c %c",186,186,Date,186,186);     //  pas décaler les bordures
          break;
          case 21: printf("%c                                %c %s                     %c %c",186,186,Date,186,186);
          break;
          default :printf("%c                                %c   Date : indisponible                     %c %c",186,186,186,186);
      }



      printf("%c   2. Ajouter un evenement      %c                                           %c %c",186,186,186,186);
      printf("%c                                %c  Nombre d'evenements aujourd'hui : %d      %c %c",186,186,compteurEvtDate,186,186);
      printf("%c   3. Supprimer un evenement    %c                                           %c %c",186,186,186,186);
      printf("%c                                %c  5. Consulter les evenements du jour      %c %c",186,186,186,186);
      printf("%c   4. Modifier un evenement     %c                                           %c %c",186,186,186,186);
      printf("%c                                %c",186,200);
      Ligne(205,1,43);
      printf("%c %c",188,186);
      LigneVideDoubleBarre(1);
      printf("%c",200);
      Ligne(205,1,78);
      printf("%c\n",188);

    do
    {
      printf("\n   Votre choix ? (1,2,3,4,5) : ");
      choix=getch();
      printf("%c",choix);

    }while (choix<'1' || choix>'5'); // contrôle d'acquisition

    return choix;
}
Example #2
0
void Map::ajouterLigne(Ligne ligne)
{
    //Si la nouvelle ligne ne croise aucune autre lignes
    if (valideNouvelleLigne(ligne))
    {
        _map.push_back(ligne);
        _hasChanged = true;
        return;
    }

    for (int i = 0; i < _map.size(); i++)
    {
        if (_map[i].traverse(ligne))
        {
            //On efface l'ancienne ligne a la position i pour la remplacer plus tard
            auto tmp = _map[i];

            std::swap(_map[i], _map[_map.size() - 1]);
            _map.resize(_map.size() - 1);

            //Si les deux lignes sont dans la même direction, on les fusionne
            if (ligne.isVertical() == tmp.isVertical())
            {
                float x1, x2, y1, y2;
                x1 = std::min(ligne.getDebut().x, tmp.getDebut().x);
                y1 = std::min(ligne.getDebut().y, tmp.getDebut().y);
                x2 = std::max(ligne.getFin().x, tmp.getFin().x);
                y2 = std::max(ligne.getFin().y, tmp.getFin().y);

                //Il peut rester des intersections avec d'autre ligness, donc on se rapelle récursivement
                ajouterLigne(Ligne(x1, y1, x2, y2));
                return; //Quitte la fonction
            }
            else
            {
                //On trouve l'intersection entre les lignes
                auto intersect = ligne.intersect(tmp);

                //Les deux lignes créées a partir de tmp n'ont aucune intersection puisque tmp n'en avait aucune en théorie
                if (tmp.getDebut() != intersect)
                    _map.push_back(Ligne(tmp.getDebut(), intersect));
                if (tmp.getFin() != intersect)
                    _map.push_back(Ligne(intersect, tmp.getFin()));

                //Réutilise la fonction afin d'ajouter de façon sécuritaire les deux fragments de ligne
                if (ligne.getDebut() != intersect)
                    ajouterLigne(Ligne(ligne.getDebut(), intersect));
                if (ligne.getFin() != intersect)
                    ajouterLigne(Ligne(intersect, ligne.getFin()));
                return; //Quitte la fonction
            }
        }
    }
    //Cette partie de la fonction ne devrais jamais etre atteinte
    assert(false);
}
Example #3
0
int main(int argc, char *argv[])
{
	unsigned long long e = 64889485484;
	unsigned long long b = e & (e-1);
	int i;
	int n = atoi(argv[1]);
	int **T = CreerTab(n);
	Afficher(n,T);
	int *C = Coords(T, n, 5);
	printf("ok");
	int *Z = Ligne(T, n, C);
	int *D = Colonne(T, n, C);
    return 0;
}
Example #4
0
void Map::lireMap(std::istream & map)
{
    if (!_map.empty())
        _map.clear();

    auto linePos = readNumFromStream<float, false>(map, 0, "(, )\n", '.');

    if (linePos.size() % 4)
        throw std::invalid_argument("Le format de la map est invalide!");

    for (int i = 0; i < linePos.size(); i += 4)
    {
        ajouterLigne(Ligne(linePos[i], linePos[i + 1], linePos[i + 2], linePos[i + 3]));
    }

    _bools = getBoolMap();

    _mapOutline = getOutline();
}
Example #5
0
/*****************************************************
Fonction : gère le menu du programme
Retour :
*****************************************************/
void menu(Noeud* N,int Nb){
    int i;
    int taille=200;
    char* in=NULL;
    in = (char*)malloc(sizeof(char)*taille);
    int n=Nb+1;
    char* out=NULL;
    out = (char*)malloc(sizeof(char)*taille);
    int ant[Nb][2];
    float poids[Nb][3];
    clock_t T1,T2;
    float temps;
    char c;
	 int N2=Nb+1;
	 Arbre* A=NULL;
	 A = (Arbre*)malloc(sizeof(Arbre));

    if(N->Ville_Suivante->v.indice !=1) {  /*technique de sauvage pour ne pas re-générer le graphe*/
										  /*Génération du graphe avec voisins */
        Remplirindice(N);
        T1=clock();
        generer_graphe(N);
        T2=clock();
        temps=(T2-T1)*1e-6;
        printf(" * Graphe genere en : %f s * ",temps);
				printf("\n\n * Le fichier contient bien %d villes * \n\n",Nb);
    }

    printf("\n");
    printf("\n");
    printf("\n");
	 printf("*****************************************************************************\n");
	 printf("*****************************************************************************\n");
    printf("		Bonjour, bienvenue dans notre programme !\n");
	 printf("*****************************************************************************\n");
	 printf("*****************************************************************************\n");

    while (i!=6){
        printf("\n");
        printf("\n");
		  printf("*****************************************************************************\n");
        printf("Veuillez entrer l'entier (et non pas une lettre !) correspondant à votre choix\n");
        printf("\n");
        printf("-----------------------------------------------------------------------------\n");
        printf(" 1- Afficher en détail les villes de votre fichier.csv \n");
		  printf("-----------------------------------------------------------------------------\n");
        printf(" 2- Afficher les n villes les plus peuplées de votre fichier.csv \n");
		  printf("-----------------------------------------------------------------------------\n");
        printf(" 3- Afficher les villes du graphe ainsi que tous leurs voisins\n");
 		  printf("-----------------------------------------------------------------------------\n");
        printf(" 4- Afficher le chemin le plus court entre 2 villes de votre choix\n");
 		  printf("-----------------------------------------------------------------------------\n");
		  printf(" 5- Afficher l'arbre couvrant de N villes\n");
		  printf("-----------------------------------------------------------------------------\n");
        printf(" 6- Sortir du programme\n");
		  printf("-----------------------------------------------------------------------------\n");
        printf("\n***************************************************************************\n");
        scanf("%d",&i);

        switch(i){
            case 1:
                Afficher_Graphe_sans_voisin(N,Nb);
                break;
            case 2:
                while (n>Nb){
                printf("\n **Tapez votre nombre n correspondant au nombre de villes de votre choix**\n\n");
                scanf("%d",&n);}
                Generateur_HTML ("map.html", N, n);
                printf("\n**Le fichier  map-output.html correspondant a ete genere (dans le dossier)**\n");
                n=Nb+1;
                break;
            case 3:
                Afficher_Graphe(N,Nb); /*avec les voisins*/
                break;
            case 4:
					 printf("\n");
                printf("*******************************************************************\n");
                printf("Vous pouvez utiliser la completion pour retrouver les villes de votre fichier\n");
					 printf("	 (en appuyant sur entree) !\n");
                printf("*******************************************************************\n");
                printf("\n");

                scanf("%c",&c);
                printf("\n");
                printf("**Entrez une ville de départ (Attention à la casse !):\n");
                fgets(in,taille,stdin);
                printf("\n");

                while (!Rechercher_Noeud(N,in)){
                    completion(in,N);
                    printf("\n");
                    printf("**Entrez un nom de ville disponible dans la liste... (Attention à la casse !)**\n");
                    printf("ou utilisez la completion pour une nouvelle ville : \n\n");
                    printf("\n");
                    fgets(in,taille,stdin);
                    printf("\n");}
                printf("**Entrez maintenant une ville d'arrivee (Attention à la casse !):\n");
                printf("\n");
                fgets(out,taille,stdin);
                printf("\n");

                while (!Rechercher_Noeud(N,out)){
                    completion(out,N);
                    printf("\n");
                    printf("**Entrez un nom de ville disponible dans la liste...(Attention à la casse !)**\n");
                    printf("	ou utilisez la completion pour une nouvelle ville : \n\n");
                    fgets(out,taille,stdin);
                    printf("\n");
                }

                T1=clock();
                PCC (N,Nb,in,out,ant,poids);
                T2=clock();
                temps=(T2-T1)*1e-6;
                printf(" * Djikstra en : %f * \n",temps);
                Generateur_HTML2 ("map.html",N,Nb, ant,indice(N,in), indice(N,out));
                printf("\n**Le fichier  map-output2.html correspondant a ete genere (dans le dossier)**\n");
                break;
				case 5:
						while (N2>Nb){
                printf("\n **Tapez votre nombre N correspondant au nombre de villes de votre choix**\n\n");
                scanf("%d",&N2);}
					 T1=clock();
					 A=RemplirArbre(A,N,N2);
					 A=Ligne(A,N2);
					 T2=clock();
					 temps=(T2-T1)*1e-6;
                printf(" * Arbre rempli en : %f * \n",temps);
					 printf("\n**Arbre rempli!**\n\n");
                Generateur_HTML3 ("map.html", N, N2,A);
                printf("\n**Le fichier  map-output3.html correspondant a ete genere (dans le dossier)**\n");
                N2=Nb+1;
                break;
            case 6:
						printf("\n** Au revoir! **\n\n");
                break;
            default: menu(N,Nb);
                break;
        }
    }
}
Example #6
0
Grille grilleVide () {
    return Grille(GRILL_HEIGHT,Ligne(GRILL_WIDTH,0));
}
void AfficheListe(char critere[],int *n,int nb_evt,int mode)// Affiche la liste des événements correspondant au critère de recherche
{
    int compteur=0,i=0;
    char LigneComp[150] ;
    char numero[10];
    FILE* fichier = NULL ;



    system("cls");

    if (strcmp(critere,"")==0) // Si le critère rentré est nul
    {
        Ligne(205,1,80);
        printf("\n                        Tous les evenements \n\n");
        Ligne(205,1,80);
    }
    else if (mode==5 && nb_evt==1) // S'il y a un évènement aujourd'hui et qu'on veut les évènements du jour
    {
        Ligne(205,1,80);
        printf("\n                      %d evenement aujourd'hui \n\n",nb_evt);
        Ligne(205,1,80);
    }
    else if (mode==5 && nb_evt==0) // S'il n'y a pas d'évènement aujourd'hui et qu'on veut les évènements du jour
    {
        Ligne(205,1,80);
        printf("\n                      Aucun evenement aujourd'hui \n\n");
        Ligne(205,1,80);
    }
    else if (mode==5 && nb_evt!=1) // S'il y a plusieurs évènements aujourd'hui et qu'on veut les évènements du jour
    {
        Ligne(205,1,80);
        printf("\n                      %d evenements aujourd'hui \n\n",nb_evt);
        Ligne(205,1,80);
    }

    else
    {

        Ligne(205,1,80);
        printf("\n                        Recherche : %s\n\n",critere); // Affiche le critère de recherche au dessus des résultats
        Ligne(205,1,80);

    }

    fichier=fopen("BDD.txt","r");

    if (fichier != NULL) // Dans cette fonction, nous allons lister et numéroter les différents évènements qui correspondent
    {                    // au critère de recherche.

        rewind(fichier); // on revient au début du fichier
        while(fgetc(fichier)!=EOF) // tant que l'on est pas à la fin du fichier
        {
            fseek(fichier,-1,SEEK_CUR); // on se place au début de la ligne
            fgets(LigneComp,150,fichier);
            if (strstr(LigneComp,critere)!=NULL)
            {
                compteur ++;
                printf("\n\n      %d. ",compteur);
                i=0;
                while(LigneComp[i]!='|')
                {
                    printf("%c",LigneComp[i]);
                    i++;

                }
            }
        }
        fclose(fichier);
        if (fgetc(fichier)==EOF && compteur == 0) // S'il n'y a aucun résultat pour la recherche.
        {
            printf("\n\n\n\t\tAucun resultat pour votre recherche\n\n\n");

        }
        else
        {

            printf("\n\n\n Retourner au menu ? (M) / Continuer ? (C)"); // On a le choix de retourner au menu sans avoir choisi
            switch (mode)                                               // un évènement, ou de continuer pour pouvoir consulter un évènement
            {


                case 3: // Si l'on veut supprimer un élément
                    printf("\n\n (Vous ne pourrez plus revenir en arriere avant d'avoir supprime un evenement)");
                break;

                case 4: // Si l'on veut modifier un évènement
                    printf("\n\n (Vous ne pourrez plus revenir en arriere avant d'avoir modifie un evenement)");
                break;

            }

            *n=fgetc(stdin); // Ce pointeur retourne le choix de l'utilisateur
            while (*n!= 'M' && *n !='c' && *n!= 'm' && *n !='C')
            {
                printf("\nIncorrect, veuillez reessayer \n"); // contrôle d'acquisition
                vide_buffer();
                *n=fgetc(stdin);
            }

            if (*n=='c' || *n == 'C')
            {
                vide_buffer();
                switch (mode)
                {
                    case 1:
                        printf("\n\nQuel evenement souhaitez-vous voir en detail ? (entrez le n%c)\n",167);
                    break;

                    case 3:
                        printf("\n\nQuel evenement souhaitez-vous supprimer ? (entrez le n%c)\n",167);
                    break;

                    case 4:
                        printf("\n\nQuel evenement souhaitez-vous modifier ? (entrez le n%c)\n",167);
                    break;
                    case 5:
                        printf("\n\nQuel evenement souhaitez-vous voir en detail ? (entrez le n%c)\n",167);
                    break;
                }

                    do
                    {
                        fgets(numero,9,stdin); // Acquisition du choix de l'utilsateur
                        while (IsNumeric(numero)==0) // Tant que la chaine de caractères entrée n'est pas un nombre
                        {
                            printf("\nIncorrect, veuillez reessayer");
                            fgets(numero,9,stdin);
                        }
                        *n=(int)strtol(numero,NULL,10); // Ce pointeur retourne le choix de l'utilisateur (numéro de l'évènement)

                    }while(*n<1 || *n>compteur);


            }

        }

    }
    else
    {
        printf("Ouverture echouee"); // Si le fichier BDD.txt n'existe pas
    }

}