Newsgroup: it.comp.lang.pascal
Titolo: [Newbie]Visualizzare il "+"

Mi rendo conto che quella che sto per porvi è una domanda sciocca per tanti 
di voi "espertissimi" e ci rimetto anche una pessima figura visto che è la 
prima volta che posto qui ma nonostante ciò io la mia domanda ve la pongo 
perchè proprio non ne vengo fuori :(
Ho cominciato a studiare il Pascal da poco per un esame di programmazione e 
in un esercizio che è sul libro mi viene richiesto che inseriti due numeri 
dall'utente se ne visualizzi la somma e la differenza in questo modo più o 
meno:
        num1      num1
       +num2     -num2
       -----     -----
       somma      diff
cioè proprio messi in colonna...ora, se io specifico le dimensioni del campo 
di testo mettendo il più e il meno accanto alle variabili senza apici il 
tutto mi funziona alla grande ma mentre il meno riesco a visualizzarlo il 
più accanto al num2 non appare e se lo metto tra gli apici mi diventa un 
casino con i campi di testo in quanto i due numeri inseriti potrebbero avere 
infinite cifre...c'è un modo per riuscire a vedere il più accanto ad un 
numero senza usare gli apici (come per il meno)?
PS:Il capitolo a cui fa riferimento l'esercizio è solo il secondo del mio 
manualone e le uniche che avrebbe dovuto insegnarmi sono le variabili, le 
costanti, la funzione di write e quella di read e come di imposta la 
grandezza di un campo di testo...per risolvere l'esercizio non posso usare 
altro.
TIA
-- 
------->>..::Vale::..<<-------
"Le imprese straordinarie
 possono sembrare impossibili
 a coloro che ne misurano le 
fatiche secondo il giudizio 
comune, pensando che ciò che
 è accaduto non possa
 più accadere." 
------------------------------

+ = #43
- = #45
Basta che usi il codice ASCII in questo modo:
write(#43'num1'  '#45'num2');
Io sono solo un neosedicenne anche lui alle sue prime armi, ma mi pare che
si faccia così... esperti, che ne dite?


beh non e' sbagliato (solo una virgola :-) )... pero' e' complicarsi la
vita...
se vuoi scrivere "+num1 -num2" basta scrivere writeln ('+num1 -num2');
Solo che Fatina non ha proprio chiesto quello :-)
ehehehe
--
Dreadnaut (dn)
drea...@liberoDALLASPAM.it
(Life would be easier if I had the source code)

mmmmh no.
Cioe' non esiste nessun modo per 'convincere' il pascal a mostrare il segno
positivo a fianco di un numero, come per il segno neg.
Inoltre quando tu metti il meno davanti alla variabile semplicemente
stampi il valore di "-variabile" e quindi appare il meno.
Se ci metti un 'per' infatti ti da' errore di compilazione...
In compenso puoi mettercelo tu :-) dato che i numeri che appaiono NON
possono avere infinite cifre (sbulaccosamente al massimo una decina mi
sembra)
sai piu' o meno quant'e' la massima larghezza delle colonne... in piu'
scrivendo
write(num:5:2);
apparira' a video il numero 'allineato' a destra con per un massimo di 5
cifre...
Il secondo numero ( ':2' ) e' opzionale, e specifica il numero di cifre
decimali
prova a far qualche esperimento e vedrai che dovresti ottenere l'allinemento
giusto...  per il piu' e meno puoi fare un if e vedere se il numero e' < > o
=
a zero e scegliere il segno giusto da scrivere prima del numero.


 ehehehe
esatto...io ho bisogno di mettere il più accanto alla variabile senza apici 
o se ne va a farsi friggere la formattazione o__O



Ipotesi: i numeri sono interi, dotati di segno, memorizzati in variabili
longint.
A mio parere, se ho capito il problema, l'impostazione "testuale" potrebbe
funzionare.
Con un longint al massimo si hanno 10 cifre decimali, quindi qualcosa del
genere potrebbe funzionare:
Writeln('  ', num1:10, '    ', num1:10);
Writeln(' +', num2:10, '   -', num2:10);
Writeln('  ----------    ----------');
Writeln('  ',num1+num2:10, '    ', num1-num2:10);
Ovviamente occhio agli overflow sulla somma.
Disclaimer: non uso correntemente il pascal da MOOOOLTO tempo, non vorrei
aver scritto delle bufalate.
Se il problema era non mostrare il segno '-' 2 volte nel caso di num2
negativo si deve andare di if e di abs(), qualcosa del tipo:
if num2<0 then
  Writeln(' -', abs(num2):10, '   +', abs(num2):10);
else
  Writeln(' +', num2:10, '   -', num2:10);
Ciao.

 a zero e scegliere il segno giusto da scrivere prima del numero.
non posso fare un if, io so come si fa ma secondo quel capitolo io non 
dovrei saperlo quindi non posso usarlo e tra l'altro non dovrei farlo per 
vedere il segno del numero ma piuttosto per sapere di quante cifre č 
composto e detrminarne l'allineamento perchč malgrado io ci stia ancora 
sbattendo non riesco a mettere quel piů ed ad allineare tutto o se lo 
allineo il piů non c'č...sto impazzendo o__O
questo č il codice che allinea tutto ma senza il piů ossia fa quello che 
dice l'esercizio perfettamente ma quel maledetto piů non si vede
PROGRAM SommaDifferenza (input, output);
VAR
num1, num2, somma, diff: integer;
BEGIN
write('Inserisci due numeri interi separati da uno spazio,poi premi <invio>: 
');
readln(num1,num2);
somma:=num1+num2;
diff:=num1-num2;
writeln;
writeln(num1:10,num1:10);
writeln(+num2:10,-num2:10);
writeln('----':10,'----':10);
writeln(somma:10,diff:10);
readln;
END.
ora lasciando tutto cosě se metto il + e il - tra '' mi si scombina 
tutto....:( SIGH
-- 
------->>..::Vale::..<<-------
"Le imprese straordinarie
 possono sembrare impossibili
 a coloro che ne misurano le 
fatiche secondo il giudizio 
comune, pensando che ciň che
 č accaduto non possa
 piů accadere." 
------------------------------

mmmh ma se sei solo al 2° capitolo se sicura che l'allineamento debba
essere perfetto ??   e' un requisito fondamentale ? :-)
poi io alle elem. le addizioni le facevo
num1 +
num2 =
-----------
quindi il problerma non si pone :-) ehehhehe
no cmq penso che senza if, senza funzioni, senza niente non si possa
fare... l'if e' il minimo necessario...


 fare... l'if e' il minimo necessario...
lo so ma speravo ci fosse una soluzione maledetto il libro e il 
professore!!!
ps: pure io le addizioni le facevo cosě ma si da il caso che quel maledetto 
libraccio sia scritto in inglese e magari dove č stato scritto si fan 
cosě...accidentaccio a loro!!!
grassie 1000 per l'interessamento e scusa per il fastidio.


 ha scritto nel messaggio
news:%ABI7.95091$sq5.4...@news.infostrada.it...


ops ...
Writeln(num1:11,'  ',num1:11);
Writeln('+',num2:10,'  -',num2:10);
Writeln('-----------   -----------');
Writeln((num1+num2):11,'  ',(num1-num2):11);
me ne ero dimenticato un pezzo e non mandavo a capo la riga.
:10 e' sufficiente anche per i longint che hanno al massimo 10 cifre
(2^31-1)
"Dav" <dr.cr...@CUTtin.it> ha scritto nel messaggio
news:vICI7.95911$sq5.4...@news.infostrada.it...


Forse sono arrivato un po' tardi !!! :-)
Se Fatina ha gia fatto l'esame spero che l'abbia superato
altrimenti ecco un mio consiglio:
Per incolonnare l'operazione si può usare gotoxy(x,y)?
Se si ecco la soluzione:
PROGRAM SommaDifferenza (input, output);
USES crt;
VAR
num1, num2, somma, diff: longint;
BEGIN
clrscr; (*Mi sono permesso di aggiungere una pulizia dello schermo*)
writeln('Inserisci due numeri interi separati da uno spazio,poi premi
<invio>: ');
readln(num1,num2);
somma:=num1+num2;
diff:=num1-num2;
writeln;
(*prima riga*)
gotoxy (10,10);
write (' ',num1);
gotoxy (20,10);
write (' ',num1);
(*seconda riga*)
gotoxy (10,11);
write ('+',num2);
gotoxy (20,11);
write ('-',num2);
(*terza riga*)
gotoxy (10,12);
write ('----');
gotoxy (20,12);
write ('----');
(*risultati*)
gotoxy (10,13);
write (' ',somma);
gotoxy (20,13);
write (' ',diff); (*purtroppo non incolonna il rsultato della sottrazione*)
readln;
END.
Se anche questa soluzione non va bene credo che ti convenga chiedere al
professore
o consultare il manualone!

Ciao Gianfranco D. un uccellino stamattina mi ha detto che il 23 dic 2001
su it.comp.lang.pascal hai scritto: 

Per l'esame manca ormai pochissimo ma credimi sta' cosa ancora non l'ho 
risolta....insomma io non posso usare i 3/4 del codice che hai scritto visto 
che a lezione non se n'è mai parlato e in teoria io dovrei usare le cose che 
mi ha insegnato il prof....però mi piac.! ;) Non conoscevo gotoxy e sul 
manualone non posso controllare...dove posso trovare un minimo di 
illuminazione sulla cosa?? Mi sembra oltremodo comoda! Grassie mille e buon 
Natale!
-- 
  ^  ^
 (  .y)-~~
 ----------Valefatina ©
 La coscienza non ti
 trattiene dal compiere
 un peccato, però ti
 impedisce di godertelo
 ----------------------
 
Rispondimi via SMS
http://www.smsatme.com/sma/sms.php?auth=:A6:19:E6:DE:A0:87:EB:1E


http://www.giobe2000.it/Pascal/LibrerieStandard/Crt/GotoXY.htm
PV

 PV
E' arrivato babbo natale! :) Grazie mille! :o*


 Natale!
Puoi provare su:
http://digilander.iol.it/helponline/
o su
www.manuali.net
Ciao e buon Natale anche a te.