Comparer deux tableaux

Résolu
lunafreiya Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
lunafreiya Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Membre Dernière intervention  
 
Mais j'utilise déjà des opérateurs de comparaison dans mon code
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > lunafreiya Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
déjà, mais cela ne suffit pas, de toute évidence.
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Bon j'ai trouvé l'erreur, c'était l'espace dans le tableau verif... :') Merci quand même
0