Comparer deux tableaux

Résolu/Fermé
lunafreiya Messages postés 4 Date d'inscription jeudi 26 novembre 2020 Statut Membre Dernière intervention 26 novembre 2020 - Modifié le 26 nov. 2020 à 20:19
lunafreiya Messages postés 4 Date d'inscription jeudi 26 novembre 2020 Statut Membre Dernière intervention 26 novembre 2020 - 26 nov. 2020 à 23:11
Bonjour,

le but est d'écrire une fonction qui attend en argument un tableau de char, dans lequel il y a un calcul, et vérifié si l'expression est conforme, c'est à dire qu'il n'y ai que des entiers, des parenthèses et certains opérateurs. Pour cela j'ai décidé de créer un autre tableau dans lequel je met les éléments acceptés, et ensuite le comparer au tableau dans lequel se trouve le calcul.
J'ai donc codé la fonction çi dessous, le problème étant que cette dernière retourne "Elément non conforme" peu importe l'expression. Auriez-vous une idée ? Merci d'avance.


char *verification(char *tab)
{
    char verif[18]={'0','1','2','3','4','5','6','7','8','9','+','-','*','/','%','(',')',' '};
    int i,j;
    for(i=0;i<15;i++)
    {
        j=0;
        {
            while (tab[i]!=verif[j]&&j!=18)
            {
                j++;
                if (j=18)
                {
                    return "Expression non conforme";
                }
            }
        }
    }
    return "Expression conforme";
}

3 réponses

yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
26 nov. 2020 à 20:32
bonjour, le test en ligne 12 va toujours retourner vrai.
je suggère de lire la documentation des opérateurs de comparaison.
0
lunafreiya Messages postés 4 Date d'inscription jeudi 26 novembre 2020 Statut Membre Dernière intervention 26 novembre 2020
26 nov. 2020 à 20:44
Mais j'utilise déjà des opérateurs de comparaison dans mon code
0
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476 > lunafreiya Messages postés 4 Date d'inscription jeudi 26 novembre 2020 Statut Membre Dernière intervention 26 novembre 2020
26 nov. 2020 à 21:26
déjà, mais cela ne suffit pas, de toute évidence.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 26 nov. 2020 à 21:31
Salut lunafreiya,

L'opérateur
=
est un opérateur d'affectation, l'opérateur d'égalité est
==
et pas autre chose.

La ligne 12 que yg_be t'a signalée réalise une affectation entre les parenthèses du if :

if (j=18)


j=18 étant une affectation, le contenu de la parenthèse est évalué à 18, or, en C, toute valeur autre que 0 dans un test correspond à "vrai".

c'est pourquoi yg_be te dit "le test en ligne 12 va toujours retourner vrai"


Dal
0
lunafreiya Messages postés 4 Date d'inscription jeudi 26 novembre 2020 Statut Membre Dernière intervention 26 novembre 2020
26 nov. 2020 à 23:06
Ah oui je l'avais déjà modifié, je pensais l'avoir mit. N'empêche que cela ne marche toujours pas
0
lunafreiya Messages postés 4 Date d'inscription jeudi 26 novembre 2020 Statut Membre Dernière intervention 26 novembre 2020
26 nov. 2020 à 23:11
Bon j'ai trouvé l'erreur, c'était l'espace dans le tableau verif... :') Merci quand même
0