Salut les gars !
J'ai un exercice de programmation à faire mais je suis complètement bloqué, je vois pas du tout quoi faire... En fait c'est un projet qui est composé de deux exercices qui ont un lien entre eux, je suis arrivé à faire le premier mais le deuxième m'est totalement flou.
Le premier exercice consistait à réaliser un programme en C qui vérifie si deux chaines "matchent" entre elles, en sachant que dans l'une des chaines, des étoiles peutvent s'immiscer et prendre n'importe quelle chaine de caractère pour faire en sorte que les deux chaines matchent.
• Exemple :
◦ "main.c" et "*.c" matchent car il est possible de remplacer ’*’ par la chaîne
"main" pour faire en sorte que les deux chaînes soient identiques
La deuxième chaine peut contenir autant d'étoiles que possible. Je suis donc arrivé à faire ce programme : voici mon code.
int match(char *s1, char *s2)
{
int i;
int a;
i = 0;
a = 0;
match2(s1, s2, a, i);
}
int match2(char *s1, char *s2, int a, int i)
{
while (s1[i + a] == s2[i] || s2[i] == '*')
{
if (s1[i + a] == s2[i])
{
i = i + 1;
}
if (s2[i] == '*')
{
while (s2[i + 1] != s1[i + a] && s2[i + 1] != '*')
{
if (s1[i + a] == '\0')
{
return (0);
}
a = a + 1;
}
a = a - 1;
}
i = i + 1;
if (s1[i + a] == '\0' && s2[i] == s1[i + a - 1])
{
return (1);
}
}
return (0);
}
Le problème arrive pour le deuxième programme où l'énoncé est le suivant :
• Le but de la fonction est de compter le nombre de fois que le deux chaînes matchent.
• Lorsqu’on a deux étoiles ou plus, plusieurs combinaisons de chaînes de caractères
peuvent convenir.
• nmatch calculera le nombre total de ces combinaisons.
• Exemple :
◦ "abcbd" et "*b*" matchent 2 fois : ("a","cbd") et ("abc", "d")
◦ "abc" et "a**" matchent 3 fois : (rien,"bc") et ("b", "c") et ("bc", rien)
C'est là que je comprends vraiment rien, j'ai l'impression qu'il y a tellement de trucs à gérer que c'est impossible pour moi qui ait commencé la programmation il y a une semaine et demie. Si quekqu'un pouvait m'aider en me donnant les grandes lignes et en m'expliquant ce que je dois faire, sans me donner de code tout fait, pour que je puisse me lancer car je n'y arrive pas du tout.
Au fait, on a pas le droit aux fonctions for, printf, do while... (Epitech spotted)
Merci d'avance de m'aider ! 