Bonjour, mon code consiste à stocker les valeurs entrées par l'utilisateur si ce sont des heures, qu'elles sont supérieures au temps courant et qu'elles sont sont éloignées d'au moins 3min des valeurs précédentes : voilà la partie "utile" du code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//R est un tableau de 200 cases qu'on ne remplira jamais complètement et qu'on initialise à 0 : le but est de "gérer dynamiquement" le tableau via une variable taille qui comptera le nombre d'élements dans le tableau(+1 si on ajoute un élément, -1 si on en supprime un)
 
//Fonctions
 
void reserver(float *R, float currenttime, float arrivee) {
(if heure est correcte)
      taille++;                      //taille est une variable globale initialisée à 0
      i=0;
      while ((R[i]<arrivee) && (i<taille-1)) {  
//si la valeur saisie par l'utilisateur est supérieure aux valeurs précédemment remplies : on veut un tableau croissant
         i++    //on cherche i tel que l'élément saisi doive être inséré dans cette case pour obtenir un tableau croissant
      }
 
      if (i<taille) { //sinon on a juste a ajouter l'élément a la fin du tab
         Add_Decalertableau(R,i);
         R[i]=arrivee;
      }
      else {
         R[taille-1]=arrivee;           //y a-t-il un probleme algorithmique?
      }
      printf("horaire valide");
   }
 
 
void Add_Decalertableau(float *R, int i) {     //si on veut insérer une valeur dans la case i, il faut décaler toutes les valeurs d'après
   int j;
   for(j=taille-1;j>=i;j--){     /*taille-1 car on vient de "redonner" une case qui sera 0!*/
      R[j+1]=R[j];
   }
 }
_____________________
#include <stdio.h>
#include <stdlib.h>
#include "piste.h"
#include <math.h>
 
int taille=0;
 
int main() {
   float *R=calloc(200, sizeof(float));
   int saisie;
   float currenttime=calcultime();
 
   float arrivee;
   printf ("Saisissez 1 pour ajouter une reservation");
   scanf("%d", &saisie);
    do {
      currenttime=calcultime();
      printf("Current Time : [%f]\n", currenttime);
      printf("Saisissez! ");
      scanf("%d",&saisie);
      if (saisie==1){
         printf("Entrez l'heure d'arrivée\n");
         scanf("%f",&arrivee);
         reserver(R,currenttime,arrivee);
      } 
   ....
   }
    while (saisie!=4)
    free(R);
    return 0;
      }
J'ai volontairement omis certaines parties car ce n'est pas très important : mon problème incompréhensible est : je saisis 1, une première valeur d'arrivee, elle rentre dans le tableau... il me redemande ensuite une valeur de saisie, 1 à nouveau, et il me redemande une valeur d'arrivee à insérer dans le tableau. Et là, le programme répond rien (il boucle indéfiniment?) comme s'il ne rentrait pas dans reserver (si je met un printf au tout début de la fonction, il ne l'éxécute pas), ce n'est pas un probleme d'include ou de prototype : mon code compile sans aucun warning... quelqu'un saurait d'où ça vient?
merci.