Problème avec des conditions dans if
Résolu/Fermé
glennog
Messages postés
293
Date d'inscription
jeudi 3 janvier 2013
Statut
Membre
Dernière intervention
19 novembre 2013
-
28 janv. 2013 à 12:18
glennog Messages postés 293 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 19 novembre 2013 - 29 janv. 2013 à 11:09
glennog Messages postés 293 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 19 novembre 2013 - 29 janv. 2013 à 11:09
A voir également:
- Problème avec des conditions dans if
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
- Fonction rang excel avec plusieurs conditions ✓ - Forum Excel
- Excel reporter des données sur une autre feuille avec conditions ✓ - Forum Excel
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Transposer des lignes sur une autre feuille sous condition ✓ - Forum Excel
4 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 janv. 2013 à 12:20
28 janv. 2013 à 12:20
Comme ceci tout simplement :
if tableau[i]<>tableau[i+1] then begin end else begin end;
glennog
Messages postés
293
Date d'inscription
jeudi 3 janvier 2013
Statut
Membre
Dernière intervention
19 novembre 2013
4
28 janv. 2013 à 12:34
28 janv. 2013 à 12:34
non , je ne verifie pas si les cases du tableau ont les mêmes valeurs ( selon ton code ) , mais plutot , si la valeur de la case suivante , est égale à la valeur du tableau de la case précédente + 1 ( c'est différent avec le code que tu m'a donné )
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 janv. 2013 à 12:39
28 janv. 2013 à 12:39
Dans ce cas les deux codes que tu as donné sont corrects. À part peut-être que tu devrais regarder avec = plutôt que <> (c'est le contraire)
if tableau[i+1] = tableau[i]+1 then ...
glennog
Messages postés
293
Date d'inscription
jeudi 3 janvier 2013
Statut
Membre
Dernière intervention
19 novembre 2013
4
28 janv. 2013 à 13:05
28 janv. 2013 à 13:05
alors , il y 'a une erreur dans mon code , mais je ne la vois pas , je mets l'énoncé et ce que j'ai saisis , pourrais tu m'aider à trouver l'erreur , je ne sais pas mais apparemment une erreur s'est glissée :
Ecrivez un algorithme qui permette de saisir un nombre quelconque de valeurs, et qui les range au fur et à
mesure dans un tableau. Le programme, une fois la saisie terminée, doit dire si les éléments du tableau sont tous
consécutifs ou non.
Par exemple, si le tableau est :
12 13 14 15 16 17 18
ses éléments sont tous consécutifs. En revanche, si le tableau est :
9 10 11 15 16 17 18
ses éléments ne sont pas tous consécutifs.
maintenant voici mon code :
mais à chaque fois que je mets les elements élements de mon tableu, il ressort toujours que les elements de mon tableau ne sont pas consecutifs , ( en ( d'autres mots , mon booleen resultat ) vaut toujours false , pourriez vous m'indiquer ou se trouve l'erreur et m'aider à optimiser le resultat ???
merci
Ecrivez un algorithme qui permette de saisir un nombre quelconque de valeurs, et qui les range au fur et à
mesure dans un tableau. Le programme, une fois la saisie terminée, doit dire si les éléments du tableau sont tous
consécutifs ou non.
Par exemple, si le tableau est :
12 13 14 15 16 17 18
ses éléments sont tous consécutifs. En revanche, si le tableau est :
9 10 11 15 16 17 18
ses éléments ne sont pas tous consécutifs.
maintenant voici mon code :
program notes ; uses crt; type table= array[1..100] of integer; var tableau : table ; i , n : integer; controle , resultat : boolean; PROCEDURE demandernombre( var tableau3 : table); begin writeln(' Veuillez saisir le nombre de nombres'); readln(n); writeln; (* saisie des nombres dans le tableau *) for i:= 1 to n do begin writeln('Veuillez saisir le nombre ', i); readln(tableau3[i]); end; end; FUNCTION verifiertableau ( tableau1 : table ; n1 : integer ; var controle : boolean) : boolean; begin controle := true; (* maintenant , je verifie les différents élements du tableau *) writeln ( tableau1[i] , ' ' ); if tableau[i] <> tableau[i] +1 then begin controle := false; end; (* j'assigne la valeu à retourner *) verifiertableau := controle; end; begin clrscr; demandernombre(tableau); resultat := verifiertableau(tableau,n,controle); if resultat = true then begin writeln(' les elements du tableau sont consecutifs'); else begin wr iteln(' les elements du tableau ne sont pas consecutifs '); end; readln; end.
mais à chaque fois que je mets les elements élements de mon tableu, il ressort toujours que les elements de mon tableau ne sont pas consecutifs , ( en ( d'autres mots , mon booleen resultat ) vaut toujours false , pourriez vous m'indiquer ou se trouve l'erreur et m'aider à optimiser le resultat ???
merci
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 janv. 2013 à 13:15
28 janv. 2013 à 13:15
Avant même les erreurs de logique il faudrait corriger les erreurs de compilation.
Dans les 10 dernières lignes, il te manque un "end" avant le else, et tu as écris "wr iteln", c'est le genre d'erreurs qui ne pardonnent pas !
Au niveau de la logique tu as écris if tableau[i] <> tableau[i] +1, c'est forcément faux car un entier n'est jamais égal à lui même +1. L'idéal ce serait que tu fasses ce que tu dis !
Mais après tu as une autre erreur, bien plus grave, c'est que ton "tableau" est une variable globale, ça n'a rien à voir avec le paramètre "tableau1" de ta fonction !
Il faut autant que possible enlever les variables globales qui conduisent systématiquement les débutants à faire des erreurs inextricables. Par exemple dans ton cas avec des i et des n qui ne sont jamais initialisés et qui font donc n'importe quoi !
Dans les 10 dernières lignes, il te manque un "end" avant le else, et tu as écris "wr iteln", c'est le genre d'erreurs qui ne pardonnent pas !
Au niveau de la logique tu as écris if tableau[i] <> tableau[i] +1, c'est forcément faux car un entier n'est jamais égal à lui même +1. L'idéal ce serait que tu fasses ce que tu dis !
Mais après tu as une autre erreur, bien plus grave, c'est que ton "tableau" est une variable globale, ça n'a rien à voir avec le paramètre "tableau1" de ta fonction !
Il faut autant que possible enlever les variables globales qui conduisent systématiquement les débutants à faire des erreurs inextricables. Par exemple dans ton cas avec des i et des n qui ne sont jamais initialisés et qui font donc n'importe quoi !
glennog
Messages postés
293
Date d'inscription
jeudi 3 janvier 2013
Statut
Membre
Dernière intervention
19 novembre 2013
4
29 janv. 2013 à 11:09
29 janv. 2013 à 11:09
oups , une erreur s'est glissée quand je recopiais le code ( manuellement ) car ne pouvant pas le copier directement à partir de L'IDE , j'avais plutot mis ,
tu dois avoir raison , sans doute que c'est le end , que j'avais oublié de mettre, quant au ' writeln ' je ne m'étais pas trompé à ce niveau dans l'IDE , c'est juste en recopiant le code manuellement , que je me suis trompé
merci de tes commentaires .
if tableau[i] <> tableau[i+1] +1 then
tu dois avoir raison , sans doute que c'est le end , que j'avais oublié de mettre, quant au ' writeln ' je ne m'étais pas trompé à ce niveau dans l'IDE , c'est juste en recopiant le code manuellement , que je me suis trompé
merci de tes commentaires .