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;
} |
Partager