Comparer deux tableaux [Résolu]

Signaler
Messages postés
4
Date d'inscription
jeudi 26 novembre 2020
Statut
Membre
Dernière intervention
26 novembre 2020
-
Messages postés
4
Date d'inscription
jeudi 26 novembre 2020
Statut
Membre
Dernière intervention
26 novembre 2020
-
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

Messages postés
13887
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 janvier 2021
781
bonjour, le test en ligne 12 va toujours retourner vrai.
je suggère de lire la documentation des opérateurs de comparaison.
Messages postés
4
Date d'inscription
jeudi 26 novembre 2020
Statut
Membre
Dernière intervention
26 novembre 2020

Mais j'utilise déjà des opérateurs de comparaison dans mon code
Messages postés
13887
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 janvier 2021
781 >
Messages postés
4
Date d'inscription
jeudi 26 novembre 2020
Statut
Membre
Dernière intervention
26 novembre 2020

déjà, mais cela ne suffit pas, de toute évidence.
Messages postés
5455
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
9 janvier 2021
921
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
Messages postés
4
Date d'inscription
jeudi 26 novembre 2020
Statut
Membre
Dernière intervention
26 novembre 2020

Ah oui je l'avais déjà modifié, je pensais l'avoir mit. N'empêche que cela ne marche toujours pas
Messages postés
4
Date d'inscription
jeudi 26 novembre 2020
Statut
Membre
Dernière intervention
26 novembre 2020

Bon j'ai trouvé l'erreur, c'était l'espace dans le tableau verif... :') Merci quand même