Newsgroup: it.comp.lang.pascal
Titolo: come posso stampare?

ciao a tutti, per un programma dovrei stampare una tabella,
incolonnando bene i dati, così composta:
campi----->>       nome      indirizzo          età
                            Tizio     via tal dei tali
22
                            Caio     via Roma          32
Solo che sorge un problema: se un indirizzo o un nome è più
lungo di un altro viene un casino:
                          nome          indirizzo       età
                          Francesco  via
supercalifragilisticaespiralitoso 33
                          Bea            via b            44
come posso risolvere questo inconveniente?

Il Manchester United mi incantava con il suo gioco quando
Blackangaroo
(
roccop...@libero.it
) mi interruppe asserendo:

cioè più che stampare dovrei visualizzarla su video...
--
L'importante della vita sono le scelte...
...c'è sempre un futuro alternativo
membro: 
www.alground.com
FORZA MANCHESTER UNITED!!!


Questa è la prima idea che mi viene in mente....
VAR
nome: string[15];
indirizzo: string [20];
contatore: integer;
spaziorimanente: integer;
BEGIN
readln(nome);
spaziorimanente := 15 - length(nome);
FOR contatore:= 1 TO spaziorimanente DO
     nome := nome + ' ';
readln(indirizzo);
spaziorimanente:= 20 - length(indirizzo);
FOR contatore:= 1 TO spaziorimanente DO
     indirizzo := indirizzo + ' ';
END.
così tutti i nomi e gli indirizzi avranno lunghezza uguale....
Ciao :-)
DAVIDE

Il Manchester United mi incantava con il suo gioco quando Davide
(
dm...@libero.it
) mi interruppe asserendo:

ok grazie, una volta avevo sentito parlare di una cosa del genere:
writeln(v[i]:5)     che cosa vuol dire ":5"??? mi può aiutare in questo
caso?

 caso?
":5" vuol dire che il contenuto di v[i] sarą allineato a destra se la sua
lunghezza č minore di 5....
Esempio1
gotoxy(1,1);
writeln('prova':5);
{in questo caso ":5" č ininfluente}
Esempio2
gotoxy(1,1);
writeln('PROVA':8);
{il risultato di questa writeln sarą "   PROVA"}
Purtroppo l'allineamento viene fatto solo a destra...Sinceramente non so se
il Pascal preveda, senza l'aiuto di qualche procedura creata da noi,
l'allineamento a sinistra.....
Ma la tua tabella deve essere stampata a video o su carta???

 noi, l'allineamento a sinistra.....
mmmh l'allineamento a sinistra non e' un non-allineamento, o meglio
la normale visualizzazione ? :-)
-- 
Dreadnaut
(Life would be easier if I had the source code)


Si ok...Però per quanto riguarda il ns problema, la normale visualizzazione
non ci aiuta ;-)

Il Manchester United mi incantava con il suo gioco quando Davide
(
dm...@libero.it
) mi interruppe asserendo:

cmq io dovrei stampare su video...


E se devi stampare su video, perchè non usi GOTOXY(x,y) per spostarti sullo
schermo?????Così potrai allinearti come vorrai......

 ha scritto nel messaggio
news:Nxsya.17672$Ny5.5...@twister2.libero.it...

o utilizzando gotoxy, impostando come spazio minimo quello della string piu'
lunga, e uindi creare una colonna di quella grandezza; oppure se devi
stampare su file, basta indicare a priori, al momento della dichiarazione
delle variabili una lunghezza massima, tipo s:string[20];
--
Ciao
Gianfranco Marchese
e-mail dgruma@NOPUBBLICITA'
tin.it
 (Da togliere NOPUBBLICITA' se vuoi
rispondermi in privato)
sito internet personale: 
http://www.turbo-pascal.cjb.net
  Tutto sul Turbo
Pascal  1.5

 sullo schermo?????Cosě potrai allinearti come vorrai......
ma cosě ce ne vogliono moltissimi!!!, il problema non č la posizione, quanto
l'allineamento per via delle diverse lunghezze delle stringhe...


Dici????Vedi se così posso aiutarti...
ESEMPIO
var Nome   : array[1..100] to string[10];
      indirizzo: array[1..100] to string[30];
      eta        : array[1..100] to string[2];
      cont      : integer;
BEGIN
{inserimento dati}
....
....
....
{stampa della tabella}
      gotoxy (1,1); write('Nome                   Indirizzo
Età');
      for cont:= 1 to 100 do begin
         {se nome = NULL allora abbiamo raggiunto la fine dell'archivio
PIENO}
         if nome[cont] = '' then
            cont:= 100
         else begin
            gotoxy(1,cont+2);
            write(nome[cont]);
            gotoxy(13,cont+2);
            write(indirizzo[cont]);
            gotoxy(46,cont+2);
            write(eta[cont]);
         end;
END;
END.
Fammi sapere :o)

Il Manchester United mi incantava con il suo gioco quando Davide
(
dm...@libero.it
) mi interruppe asserendo:

ora lo provo poi ti faccio sapere.