PDA

View Full Version : [C]formattare informazioni; problema tabulazione con funzione \t


Percettrone
09-08-2015, 16:12
Premetto che sono nuovo del forum, quindi mi presento in questo mio primo tread. Mi sono iscritto proprio per poter chiedere aiuto in caso dovessero sorgere problemi, dato che sto imparando il C da autodidatta :)
Comunque, veniamo al problema in se: nel manuale che sto usando vi sono degli esercizi, ecco il testo dell'esercizio in cui ho riscontrato problemi:

Scrivete un programma che formatti le informazioni inserite dall'utente. Una sessione del programma deve presentarsi in questo modo:

Enter item number: 583

Enter unit price: 13.5
Enter purchase date (mm/dd/yyyy): 10/24/2010
Item Unit Purchase
Price Date
583 $13.50 10/24/2010

Il numero indicante l'articolo e la data d'aquisto devono essere allineate a sinistra mentre il prezzo unitario deve essere allineato a a destra. Ammettere somme in dollari fino a 9999.99 $. Suggerimento: utilizzate le tabulazioni per allineare le colonne.


Questo è il testo. Ho avuto problemi solo nell'ultima parte della scrittura del programma, quindi nella tabulazione e nell'allineare le varie somme come dice. Perciò posto qui di seguito la porzione di codice che ho scritto, ma che una volta eseguito il programma con il terminale di ubuntu, mi stampa la tabulazione errata:

Ho tradotto le varie indicazioni dall'inglese all'italiano
printf("Articolo\tPrezzo\tData\n\tArticolo\tAcquisto\n%d\t%4.2f\t%.2d/%.2d/%.4d\n", art, prezzo, dd, mm, yyyy);

Quando eseguo il tutto con il terminale questo è quello che salta fuori:

Numero dell'articolo: 583
Prezzo dell'articolo: 13.5
Data dell'acquisto (dd/mm/yyyy): 10/24/2010
Articolo Prezzo Data
Articolo Acquisto
583 13.50 10/24/2010

Mi scervello, ma non riesco a capire, probabilmente perchè sono inesperto:(
Spero nel vostro aiuto :D

Spe!
09-08-2015, 17:25
Prova a mettere ogni riga su printf separate.

Prova così

printf("Articolo\tPrezzo\t\tData\n"); // stampo prima riga descrizione
printf("\t\tArticolo\tAcquisto\n"); // stampo seconda riga descrizione

printf("%d\t\t€%4.2f\t%02d/%02d/%4d\n", art, prezzo, dd, mm, yyyy); // stampo articolo

monte.cristo
09-08-2015, 20:02
Il numero di spazi inseriti da un tab è 8. Se vuoi la seconda parola "Articolo" allineata a "Prezzo", devi inserire due tab tra Data e Acquisto nella stringa di formattazione e non uno solo.

Percettrone
10-08-2015, 19:18
grazie mille per l'aiuto:D