#include <stdio.h>
#include <string.h> // contient la déclaration de la fonction strlen()
#include <stdbool.h> //nécessite la compilation avec l'option -std=c99

// longueur maximale de la chaine saisie
#define LMAX 80

/* Déclaration de la fonction affiche_sans_voyelle() :
Fonction qui affiche la chaine de caractères str passée en paramètre en enlevant les voyelles*/
void affiche_sans_voyelle(const char *str);

/* Déclaration de la fonction est_voyelle() :
Fonction qui détermine si le caractère transmis en paramètre est une voyelle.
Elle renvoie true si le caractère est une voyelle, false sinon*/
bool est_voyelle(char c);


int main()
{
	char tab [LMAX + 1];// LMAX caractères + le caractère '\0'
	size_t lo ;
	
	printf("Saisir une chaine (longueur max %d) :\n", LMAX);
	
	
	fgets(tab, LMAX+1, stdin);
	
	
	lo = strlen(tab);
	// pour supprimer le caractère '\n' ajouté par fgets() quand l'utilisateur saisit un nombre de caractères strictement inférieur à LMAX
	// même si dans cet exercice, ça ne sert à rien
	if (tab[lo -1] == '\n')
	{
		tab[lo -1] = '\0';
	}
	printf("\nChaine analysee :\n%s\n", tab);
	printf("\nChaine sans voyelles :\n");
	affiche_sans_voyelle(tab);
	printf("\n");
	
	return 0;
}


bool est_voyelle(char c)
{
	const char voyelles [] = "AEIOUYaeiouy";
	size_t l = strlen(voyelles);
	bool ret = false;
	size_t i = 0;
	// algorithme typique de recherche dans un tableau :
	// on arrête le parcours du tableau dès qu'on a trouvé l'élément recherché.
	while (!ret && i < l)
	{
		ret = c == voyelles[i];
		++i;
	}
	return ret;
}

// le type du paramètre (const char *) interdit à la fonction de modifier les caractères de la chaîne reçue en paramètre 
void affiche_sans_voyelle(const char *str)
{
	size_t l = strlen(str);
	for (size_t i = 0; i < l; ++i)
	{
		if (!est_voyelle(str[i]))
		{
			printf("%c", str[i]);
		}
	}
}