IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Pascal Discussion :

Problème de résultat sur un programme en Pascal


Sujet :

Langage Pascal

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Poseidon62
    Inscrit en
    Mars 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Mars 2004
    Messages : 102
    Par défaut Problème de résultat sur un programme en Pascal
    J'ai entré le programme suivant dans mon éditeur (Geany sous Fedora).
    La compilation s'est bien déroulée.
    J'entre plusieurs valeurs - à la suite de chacune, je fait "Entrée" - et la dernière est "0" pour sortir du programme (cf fichier joint capture-4.png)
    Mais là, il devrait m'afficher la liste des nombres et un message indiquant s'il a trouvé la valeur 15 (valeur que je mets à chaque fois), et il n'affiche rien (cf fichier joint capture-6.png)

    Voici le programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    uses Drivers;
     
    type
    	PCellule = ^Cellule;
    	Cellule = record
    		valeur: integer;
    		suivant: PCellule;
    	end;
     
    procedure ajouter(var liste: PCellule; valeur: integer);
    var
    	p: PCellule;
    begin
    	(*Allocation mémoire*)
    	new(p);
    	p^.valeur := valeur;
    	p^.suivant := liste;
    	liste := p;
    end;
     
    procedure afficher(liste: PCellule);
    var
    	p: PCellule;
    begin
    	p := liste;
    	while p <> nil do
    	begin
    		writeln(p^.valeur);
    		p := p^.suivant;
    	end;
    end;
     
    procedure vider(liste: PCellule);
    var
    	p, r: PCellule;
    begin
    	p := liste;
    	while (p <> nil) do
    	begin
    		r := p^.suivant;
    		dispose(p);
    		p := r;
    	end;
    end;
     
    Function RechercheIter(liste: PCellule; x: Integer): Boolean;
    var existe: Boolean;
    begin
    	existe := False;
    	while (liste <> nil) and (not existe) do
    		begin
    			existe := liste^.valeur = x;
    			liste := liste^.suivant;
    		end;
    	RechercheIter := existe;
    end;
     
    Function RechercheRecursive(liste: PCellule; x: Integer): Boolean;
    begin
    	if liste = nil then
    		RechercheRecursive := False
    	else
    	if liste^.valeur = x then
    		RechercheRecursive := True
    	else
    		RechercheRecursive := RechercheRecursive(liste^.suivant, x);
    end;
     
    var
    	(* liste est une variable de type pointeur sur une cellule *)
    	liste: PCellule;
    	nombre: integer;
     
    begin
    	InitVideo;
    	(*ClearScreen;*)
    	writeln('Entrez les nombres ... ajouter (0 pour quitter) : ');
    	readln(nombre);
    	while nombre <> 0 do
    	begin
    		ajouter(liste, nombre);
    		readln(nombre);
    	end;
    	writeln('Valeurs de la liste : ');
    	afficher(liste);
     
    	(* Version itérative de la procédure de recherche d'un élément *)
    	(* dans une liste *)
    	if RechercheIter(liste, 15) <> True then writeln('Pas trouvé en itératif :-( ')
    	else writeln('Trouvé de façon itérative !!!!');
     
    	(* Version récursive de la procédure de recherche d'un élément *)
    	(* dans une liste *)
    	if RechercheRecursive(liste, 15) <> True then writeln('Pas trouvé en récursif :-( ')
    	else writeln('Trouvé de façon récursive...');
     
    	(* On vide la liste avant de quitter *)
    	vider(liste);
     
    	(* That's all folks !!!! *)
    end.
    Images attachées Images attachées   

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème entrée standard sur un programme
    Par Sharpounet dans le forum Débuter
    Réponses: 4
    Dernier message: 06/07/2009, 11h16
  2. Mon site sur la programmation en Pascal
    Par darrylsite dans le forum Contribuez
    Réponses: 6
    Dernier message: 18/11/2008, 19h17
  3. Problème de pile sur un programme.
    Par Dam63 dans le forum C
    Réponses: 11
    Dernier message: 29/10/2007, 13h46
  4. Réponses: 2
    Dernier message: 12/09/2007, 14h03
  5. Réponses: 14
    Dernier message: 27/10/2006, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo