A voir également:
- Variable condition dans if
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Excel copier une cellule si condition ✓ - Forum Excel
- Excel colorer une cellule sous condition d'une autre cellule ✓ - Forum Excel
- Variable d'environnement temp - Forum Word
7 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Qu'as-tu essayé?
Ceci?
Ceci?
if(((choix==1) && (var1 == 10)) || ((choix==2) && (var1 > 10))){ instructions; }Attention, tu mentionnes var2 et tu ne l'utilises pas.
Bonjour,
C'est le principe de ce genre de conditions, pouvoir comparer des variables a des valeurs que nous souhaitons.
Cependant l'énoncé de la question n'est pas forcement très clair....
si vous mettez
Ca devrait passer
C'est le principe de ce genre de conditions, pouvoir comparer des variables a des valeurs que nous souhaitons.
Cependant l'énoncé de la question n'est pas forcement très clair....
si vous mettez
if(var1==10){
instruction
}
else if (var1>10){
instruction
}
else{
instruction
}
Ca devrait passer
Bonjour
Le principe est bon, ce sont tes comparaisons qui posent un problème.
Tu compares des chaînes de caractères à des nombres. tes variables var1 et var2 sont donc des tableaux de char ou des pointeurs sur char, tu ne peux pas les comparer à des int.
Mais si tes var1 et var2 (et condition aussi, d'ailleurs) sont bien des int, il n'y a pas de raison que ça ne marche pas. Néanmoins, ton programme sera plus compréhensible si tu utilises l'écriture de yg_be.
Le principe est bon, ce sont tes comparaisons qui posent un problème.
Tu compares des chaînes de caractères à des nombres. tes variables var1 et var2 sont donc des tableaux de char ou des pointeurs sur char, tu ne peux pas les comparer à des int.
Mais si tes var1 et var2 (et condition aussi, d'ailleurs) sont bien des int, il n'y a pas de raison que ça ne marche pas. Néanmoins, ton programme sera plus compréhensible si tu utilises l'écriture de yg_be.
Bonjour merci pour vos réponses, un exemple plus concret pour que vous voyez comment ce présente mon programme.
L'exemple est une version light du programme.
L'exemple est une version light du programme.
int main()
{
char *condition[]={"t[i].table[i]==0","t[i].table[i]==1","t[i].table2[i]<100","t[i].table2[i]>=100"};
scanf("%i", &choix);
switch (choix)
{
case 0:
fonction(condition[choix]);
break;
case 1:
fonction(condition[choix]);
break;
case 2:
fonction(condition[choix]);;
break;
case 3:
fonction(condition[choix]);
break;
// ---- ERREUR ---- //
default:
printf("Vous n'avez pas rentre un nombre correct.\n\n");
break;
}
}
int fonction(valeur)
{
if(valeur){
instructions;
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non, aucune chance que ça marche comme ça. Ce n'est pas ce que tu avais dit.
Tu ne fais pas
condition = (t[i].table[i]==0);
mais
condition = "t[i].table[i]==0";
Ce qui n'a aucun rapport.
Dans le premier cas, l'expression t[i].table[i]==0 est évaluée, ce qui suppose d'ailleurs que les variables soient initialisées. Dans le second cas, condition est une simple chaîne de caractères. Au mieux, si les déclarations sont cohérentes, if (valeur) sera toujours vrai puisque valeur sera un pointeur sur une chaîne, donc pas zéro.
Tu ne fais pas
condition = (t[i].table[i]==0);
mais
condition = "t[i].table[i]==0";
Ce qui n'a aucun rapport.
Dans le premier cas, l'expression t[i].table[i]==0 est évaluée, ce qui suppose d'ailleurs que les variables soient initialisées. Dans le second cas, condition est une simple chaîne de caractères. Au mieux, si les déclarations sont cohérentes, if (valeur) sera toujours vrai puisque valeur sera un pointeur sur une chaîne, donc pas zéro.
on pourrait éventuellement faire un tableau de pointeurs vers des fonctions de comparaison, et pour les appeler, il suffirait d'utiliser le pointeur contenu à l'indice du tableau, avec des paramètres génériques utilisables dans les différents cas
en faisant quelque chose comme cela, tu as effectivement un tableau de conditions, que tu peux tester en disposant juste de l'indice de la condition à tester :
Dal
#include <stdio.h> struct t { int truc; int machin; }; int (*condition[4]) (struct t t); int truc0(struct t t) { return t.truc == 0; } int truc1(struct t t) { return t.truc == 1; } int machin_petit(struct t t) { return t.machin < 100; } int machin_grand(struct t t) { return t.machin >= 100; } void fonction(int vrai, int choix) { if (vrai) printf("la condition %d est vraie\n", choix); else printf("la condition %d est fausse\n", choix); } int main(void) { struct t t; t.truc = 0; t.machin = 50; condition[0] = truc0; condition[1] = truc1; condition[2] = machin_petit; condition[3] = machin_grand; int choix = 2; fonction((*condition[choix]) (t), choix); return 0; }
Dal
Bonjour,
Merci de vos réponses. Quelle serait donc la solution ?
j'ai essayé ce code comme le propose yg_be mais ça ne fonctionne pas...
L'avantage d'utiliser la variable condition[choix] était que je pouvais faire une boucle for pour ma déclaration des cases. Mais l'utilisation de cette variable ne fonctionne pas.
Comme le père le dit, mon if est toujours vrai avec l'utilisation de cette variable condition[choix].
Merci de vos réponses. Quelle serait donc la solution ?
j'ai essayé ce code comme le propose yg_be mais ça ne fonctionne pas...
case 0:
fonction(t[i].table[i]==0);
break;
L'avantage d'utiliser la variable condition[choix] était que je pouvais faire une boucle for pour ma déclaration des cases. Mais l'utilisation de cette variable ne fonctionne pas.
Comme le père le dit, mon if est toujours vrai avec l'utilisation de cette variable condition[choix].
Bonjour
Surtout, comment est défini et initialisé ton tableau 't' et en particulier son champ 'table' ?
Tel que tu l'utilises, 't' serait un tableau de structures, chaque structure comprenant elle-même (entre autres ?) un tableau. Là où c'est très bizarre, c'est que tu utilises le même indice sur 't' et sur 'table' : un peu comme si tu avais défini un tableau à deux dimensions pour n'utiliser que la diagonale. Je me permets de douter que ce soit bien ça que tu veux faire.
Surtout, comment est défini et initialisé ton tableau 't' et en particulier son champ 'table' ?
Tel que tu l'utilises, 't' serait un tableau de structures, chaque structure comprenant elle-même (entre autres ?) un tableau. Là où c'est très bizarre, c'est que tu utilises le même indice sur 't' et sur 'table' : un peu comme si tu avais défini un tableau à deux dimensions pour n'utiliser que la diagonale. Je me permets de douter que ce soit bien ça que tu veux faire.