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

Pascal Discussion :

Exploitation d'une liste chaînée de véhicules


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Exploitation d'une liste chaînée de véhicules
    Bonsoir tout le monde.
    Je suis étudiant en 1e année de DUT Informatique et je sollicite votre aide sur un projet qui nous a été donné.
    Le but final de l'exercice est de gérer un fichier (.dat) dans le quel on retrouve une liste de véhicules à vendre. Le fichier se présente de la manière suivante:
    Marque
    Modèle
    Carburant (E,D ou Z)
    Année
    Prix
    On doit afficher la liste des véhicules, ensuite, afficher le nombre de véhicules pour chaque type de carburant et afficher le véhicule le plus récent.
    J'ai réussi à afficher la liste de véhicules, mais je suis bloqué au niveau de la deuxième partie de l'exercice.
    Voila le programme que j'ai pour le moment :
    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
    PROGRAM Voitures;
    TYPE
    	voiture = record
    		marque : string[30];
    		modele : string[20];
    		carb : char;
    		annee : integer;
    		prix : integer;
    end;
    TYPE
        liste = ^cellule;
        cellule = record
            contenu : voiture;
            suivant : liste;
        end;
     
    function carburant(a,b,c : integer) : integer;
    VAR   
          m : char;
          W : file of voiture;
    	  i : voiture; 
    Begin
    	a:=0;
    	b:=0;		
    	c:=0;
    	assign(W, 'voitures.dat');
    	reset(W);		
      while not EOF(W) do
      begin
    	read(W,i);
    	m := i.carb;	
            if (m='E') then          
                 a := a+1          
            else
                 if (m='D') then               
                      b := b+1   
    		else            
               		 if (m='C') then             
                      	c := c+1               
       end;
     
    end;
     
     
    VAR
    	V : file of voiture;
    	i : voiture;
    	o : char;
        x,y,z,p : integer;
    Begin
    writeln('Que voulez-vous faire ?');
    writeln('1) Quittez le logiciel');
    writeln('2) Afficher les véhicules disponible a la vente');
    writeln('3)Afficher le nombre de vhéicules fonctionant à une énérgie donnée');
    writeln('4)Supprimer le véhicule le plus récent de la liste chainée');
    readln (p);
    If p=1 then
    exit;
    	if p=2 then
    	begin
     
    	assign(V, 'voitures.dat');
    	reset(V);
    	x:=0;
    	y:=0;
    	z:=0;
    	while not EOF(V) do
    	begin
    		read(V,i);
    		writeln(i.marque);
            writeln(i.modele);
            writeln(i.carb);
            writeln(i.annee);
            writeln(i.prix);
     
    	end;
    	end;
    		if p=3 then
     
          writeln(carburant(x,y,z));
    			if p=4 then
    				writeln ('4 Marche bien');
     
    end.
    Pouvez-vous me dire quel est le problème svp ?
    Merci d'avance

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 938
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue,

    Sans vouloir te froisser, je pense que tu démarres mal et que même ton point 1 ne correspond pas au but de l'exercice. Je m'explique : tu disposes d'un fichier d'enregistrements dont tu dois exploiter le contenu de diverses façons. La première étape est donc de charger tous les enregistrements du fichier dans une liste chaînée.

    Une fois la liste créée, tu n'as plus qu'à la parcourir (et même une seule fois) :
    • pour en afficher chaque élément ;
    • pour incrémenter les trois compteurs (E, D et Z) ;
    • pour repérer l'élément dont l'année est la moins élevée.

    Comme d'habitude : d'abord sur papier avant de commencer à coder en Pascal.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre confirmé
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Points : 567
    Points
    567
    Par défaut
    Bonjour.

    La conception générale de ce programme est effectivement à revoir.
    ( d'ailleurs le programme déclare un type de liste chaînée sans l'utiliser ... )

    Mais il y a aussi une erreur grave dans la gestion des paramètres passés à la fonction carburant.
    Il est indispensable que cette erreur soit comprise et corrigée, sinon elle se reproduira dans d'autres programmes.

    Enfin, je trouve que le nom des variables laisse fortement à désirer.
    Dans la communauté des programmeurs, il est d'usage que les variables i,j,k désignent des entiers et les variables x,y,z des réels.
    Cela remonte à la programmation en Fortran, laquelle reprenait l'usage qu'en faisait précédemment les mathématiciens.
    Certes, ce n'est pas une obligation ( d'ailleurs le programme est compilé sans problème ) mais cet usage permet à un programmeur de comprendre plus facilement un programme écrit par quelqu'un d'autre.
    Or, il est fréquent qu'un programmeur ait à étudier un programme écrit par un autre ...
    N'est-ce pas ce qui se fait justement sur ce forum ?
    Il me semble donc qu'un étudiant en informatique, qui sera un jour un programmeur professionnel, devrait s'habituer à respecter cet usage.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci pour vos réponses. Je suis parvenu à traiter le début (enregistrement, affichage et le nombre de véhicule d'un même carburant).
    Mais la je suis bloqué car je dois faire un sous-programme qui affiche l'année du véhicule le plus récent et retourne au programme l'adresse mémoire du véhicule.
    Mon problème est que j'utilise un type string pour l'adresse hors c'est un type de variable trop petit. J'ai fais des recherche et j'ai vu qu'il fallait utiliser une variable de type long float mais je ne sais pas comment convertir de string vers float.
    Merci encore pour vos réponses.

  5. #5
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 938
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Une adresse est de type liste !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TYPE
        liste = ^cellule;
    Je pense que tu dois revoir le principe des pointeurs et des listes chaînées. Tu peux t'aider de ce tutoriel ou de celui-ci.

    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci pour les liens. Je suis finalement parvenu à faire ce que j'avais à faire.
    Merci encore à tous.

  7. #7
    Candidat au Club
    Homme Profil pro
    iut informatique
    Inscrit en
    Décembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : iut informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    J'ai le meme exercice et je suis confronté a la meme problematique:

    Incompatible types: got "Liste" expected "ShortString"


    Peux tu me donner la solution ou au moins des pistes stp.

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

Discussions similaires

  1. Inversion d'une liste chaînée
    Par sossomj dans le forum Pascal
    Réponses: 10
    Dernier message: 25/06/2006, 15h51
  2. select sur une liste chaînée
    Par wtfu dans le forum Langage SQL
    Réponses: 1
    Dernier message: 01/06/2006, 15h30
  3. Implémentation d'une liste chaînée
    Par Yux dans le forum C
    Réponses: 22
    Dernier message: 02/03/2006, 20h31
  4. Réponses: 16
    Dernier message: 19/11/2005, 16h47
  5. Insertion d'un noeud dans une liste chaînée
    Par habib106 dans le forum Assembleur
    Réponses: 8
    Dernier message: 07/04/2004, 22h34

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