Thread formatierte Ausgabe auf Konsole? (24 answers)
Opened by Math55 at 2004-05-12 15:28

Crian
 2004-05-12 17:21
#82297 #82297
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Ich würde die Längen auch wie in Renees unterem Ausschnitt per Programm ermitteln und nicht fest kodieren, es sei denn es ist aus anderen Gründen klar, dass es sich etwa immer um eine 15 stellige ID handelt.

Zu den Nummern davor: Da gilt das gleiche, man kann aber, falls die Zahlen einfach von 1 bis n laufen in der Datei, die benötigte Länge aus der Zeilenzahl berechnen (mit log). In Perl ist das aber nicht nötig, da kann man natürlich auch auf Zahlen einfach length anwenden *g
Also Zahlenbreite = length(Zeilenzahl) oder halt größte suchen, wenn es nicht von 1 bis n läuft.


Dazu meine Funktion:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl
use strict;
use warnings;
use POSIX;

sub intlength ($);

print "$_: ", intlength($_) , "\n" for (-1_001..-998,-101..101,998..1_001,123_456_789);

sub intlength ($) {
my $zahl = shift;
my $minus = $zahl<0?1:0;

return 1 if $zahl == 0;
return 2 if $zahl == -1;

$zahl = -$zahl if $minus;

return POSIX::ceil(log($zahl+1)/log(10)) + $minus;
}


gibt aus:

Code: (dl )
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
-1001: 5
-1000: 5
-999: 4
-998: 4
-101: 4
-100: 4
-99: 3
-98: 3
-97: 3
...
-12: 3
-11: 3
-10: 3
-9: 2
-8: 2
-7: 2
-6: 2
-5: 2
-4: 2
-3: 2
-2: 2
-1: 2
0: 1
1: 1
2: 1
3: 1
4: 1
5: 1
6: 1
7: 1
8: 1
9: 1
10: 2
11: 2
12: 2
...
97: 2
98: 2
99: 2
100: 3
101: 3
998: 3
999: 3
1000: 4
1001: 4
123456789: 9


Aber wie gesagt, length tuts auch in Perl, die hab ich mal für C entwickelt.\n\n

<!--EDIT|Crian|1084369180-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread formatierte Ausgabe auf Konsole?