Programmation pascal

toutowa18 Messages postés 6 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour, jai un problemme a résoudre ce problemme
Exercice N° 1 :

Soit le fichier Fcompte. Un enregistrement logique de ce fichier se compose des rubriques suivantes :
• Numéro : numéro du compte
• Titulaire : le titulaire de compte
• Solde : le solde de ce compte
1- Ecrire une analyse puis un algorithme d’un sous programme qui permet de créer le fichier Fcompte
2- Ecrire une analyse puis un algorithme d’un sous programme qui permet d’afficher l’état (débiteur ou créditeur) d’un compte donné. Le numéro de compte est fourni par l’utilisateur. Dans le cas où ce dernier introduit un numéro qui n’existe pas prévoir un message d’erreur
3- Donner la traduction pascal de ce programme
Configuration: Windows XP
Firefox 3.0.3

2 réponses

  1. tchsimons Messages postés 207 Statut Membre 14
     
    tu as fais qoi?
    0
    1. toutowa18 Messages postés 6 Statut Membre
       
      jai un essai mai ca ne marche pa
      program ex1_serie1;
      uses wincrt;
      type
      eee=record
      nom:string;
      nu_compte:integer;
      montant:real;
      end ;
      tab= array [1..50] of eee;

      var
      e:eee;
      t:tab;
      n,ind,i:integer;
      montant:real;
      procedure saisie( var n:integer);
      begin
      repeat
      writeln('donner le numero de persone');
      readln(n);
      until (n>0);
      end;
      procedure lire(e:eee);
      var
      nom: string;
      nu_compte: integer;
      montant:real;
      begin
      writeln('donnner le nom'); read (nom);
      writeln('donnner nu_compte '); read (nu_compte);
      writeln('donnner montant'); read (montant);
      end;

      procedure remplir (var t:tab ; n:integer; e:eee);
      var
      i:integer;
      nom: string;
      nu_compte: integer;
      montant:real;
      begin
      for i := 1 to n do
      begin
      with t[i] do
      writeln('donnner le nom'); read (nom);
      writeln('donnner nu_compte '); read (nu_compte);
      writeln('donnner montant'); read (montant);

      end;

      end;
      procedure affiche1 ( t:tab;n:integer);
      var i: integer;nom:string; nu_compte:integer; montant:real;
      begin
      for i:=1 to n do
      begin
      with t[i] do
      writeln('donnner le nom',nom);
      writeln('donnner nu_compte ',nu_compte);
      writeln('donnner montant',montant);
      end;
      end;

      begin
      saisie( n);

      remplir(t,n,e);

      affiche1(t,n);


      end.
      0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Ton principal problème c'est l'utilisation des variables.

    Il ne faut JAMAIS utiliser deux fois le même nom de variable pour deux éléments différents.
    De plus évite un maximum l'utilisation de variable globale, le plus souvent ça apporte confusion et erreurs dans le code.

    Premier exemple :
    Tu fais var n:integer au début du code (donc en globale)
    Puis tu fais var n:integer en paramètre de saisie (donc en locale)
    Je ne sais pas ce que fait l'ordinateur, mais il est impossible de savoir lequel des deux sera modifié puisque la variable porte le même nom

    Deuxième exemple :
    Tu as nu_compte dans un champ de eee, et tu as nu_compte en locale dans affiche1
    Quand tu fais writeln(nu_compte) il est impossible de prédire lequel des deux sera afficher...

    Remarques annexes :
    - uses wincrt ne sert à rien
    - tu dois finir ton programme par un readln sinon tu n'auras pas le temps de voir ta fenêtre s'afficher à l'écran, par exemple voici ce que je mets par défaut à la fin de tous mes programmes :
    writeln; write('Fin du programme. Appuyer sur Entree'); readln;
    end.
    Quand tu auras lu (et compris j'espère) mes commentaires, modifie ton code, et en cas de problème persistant, poste le code modifié mais en utilisant les balise de code (à droite du bouton souligné) pour conserver l'indentation de ton code.
    0