Toon posts:

Klein probleem (Pascal)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mensen,

het spijt mij dat ik jullie lastig moet vallen met vragen over deze zeer oude taal, maar ik ga het toch doen.

Het probleem is als volgt:
Ik moet voor school dus een simpel programma maken dat cijfers in een bestand schrijft en er ook weer uit kan lezen. Maar nu...

Een regel in het bestand ziet er als volgt uit:

1234 20051981 7.5 A123

nu heb ik om dit bestand af te drukken op het scherm de volgende procedure gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
PROCEDURE laden;
   VAR i : integer;
   BEGIN;
    reset(skis);
    i := 1;
    writeln('      #  Klantnr.    Geb.Datum   Skinummer   Dagen');
    writeln('----------  ----------  ----------  ----------  ----------');
    REPEAT
       read(skis, KlantnummerA[i]);
       read(skis, GeboortedatumA[i]);
       read(skis, AantaldagenA[i]);
       read(skis, SkinummerA[i]);

       write('  ', i);
       write('    ', KlantnummerA[i]);
       write('    ', GeboortedatumA[i]);
       write('   ', SkinummerA[i]);
       writeln('    ', AantaldagenA[i]:8:1);

       i := i+1;
       readln(skis);
    UNTIL eof(skis);
    writeln('----------  ----------  ----------  ----------  ----------');
END;

Onder # wordt telkens i geschreven, dit komt dus overeen met de regel in het bestand. Dit is zodat later die regel makkelijk verwijderd, gewijzigd etc kan worden.

De gegevens in het bestand worden zoals je kunt zien in arrays geladen. Deze arrays zijn als volgt gedefineerd:
code:
1
2
3
4
5
6
7
TYPE Cijfers = ARRAY [1 .. 100] OF integer;
     Dagen = ARRAY [1 .. 100] OF real;
     Skinum = ARRAY [1 .. 100] OF string;

VAR KlantnummerA, GeboortedatumA : Cijfers;
    AantaldagenA : Dagen;
    SkinummerA : Skinum;

Wat er nu op het scherm verschijnt is dit:

http://www.mycgiserver.com/~mazzz/Tweak/Fout.txt

In plaats van dit..

http://www.mycgiserver.com/~mazzz/Tweak/Goed.txt

Het programma heeft dus problemen met het REAL getal. De gebruikte taal is dus standaad Pascal (geen turbo) en het draait op een UNIX systeem.

Weet iemand hier wat ik aan dit probleem kan doen :? ??

Alvast bedankt.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
writeln(' ', AantaldagenA[i]:8:1);

als je daar gewoon write van maakt, en dan write('\n'), werkt het dan misschien?

Verwijderd

Topicstarter
Dat kan ik nu niet testen omdat ik alleen op school unix kan gebruiken. |:(

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
ik denk niet dat het hierbij uitmaakt of je het onder unix/dos/whatever compiled.

Verwijderd

Topicstarter
Wel dus, want als ik 'm thuis compileer, met een compiler voor dos (Irie Pascal) dan doet ie het wel goed...

Maar dat het op unix goed werkt is wel een eis :'(

Verwijderd

Zet het aantal decimalen anders eerst ff op :1:2

Of maak er opnieuw een string van:

Str(AantaldagenA[i]:1:2,St);
Write(st);

Suc6

Verwijderd

Topicstarter
Ik kan het morgen proberen, meer oplossingen zijn welkom...

Verwijderd

volgens mij werkt die oplossing om die decimalen in te korten ook wel onder unix

Verwijderd

Topicstarter
Ja, maar zijn het niet de spaties vóór het getal die de string zo lang maken
Pagina: 1