Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    2

    mettere dati in colonna (in c)

    Salve a tutti,
    dovendo risolvere il seguente quesito:

    http://imageshack.us/photo/my-images...062012306.jpg/
    (mi scuso, ma non ho capito ancora come mettere qui nel sito un'anteprima)

    ho sviluppato il seguente codice, che calcola perfettamente quanto richiesto.
    Il mio problema ora consiste nella giusta "impaginazione" dell'output. Vorrei che l importo venisse volta per volta incolonnato, così come apprare nella traccia.
    Come fare?

    codice:
    /*calcolo importi di addebito parcheggio*/
    #include <stdio.h>
    #include <math.h>
    
    double calculateCharges (double h);         /*prototipo di funzione*/
    
    /*l'esecuzione del programma ha inizio dalla funzione main*/
    int main ()
    {
        double ore;                    /*ore di parcheggio*/
        int counter;                   /*numero auto*/
        
        /*fase di elaborazione*/
        printf ("%-4s\t%3s\t%7s\n", "Auto", "Ore", "Importo");  /*intabulazione*/
        
        for (counter = 1; counter <= 3; counter++) {            /*considera le ore di parcheggio di ognuna delle tre auto*/
            printf ("%-4d\t", counter);                         /*comunica l'auto in esame*/
            scanf  ("%lf", &ore);                               /*prende in input le ore di parcheggio*/
            printf ("%.2f\n", calculateCharges(ore));           /*comuncica l'importo*/
            }
        
        system ("pause>nul");
        return 0;
    }
    
    double calculateCharges (double h)                          /*funzione per il calcolo dell'importo*/
    {
           double scatto;                                       /*variabile per lo scatto orario*/
           double importo;
           
           if (h <= 3) {                                        /*tariffa base*/
                 importo = 2.00;
                 return importo;
                 }
           
           else {
               scatto = ceil (h - 3);                           /*considera scatto minimo dell'ora come ora effetiva trascorsa*/         
               importo = 3 + scatto * 0.50;                     /*calcola l'importo*/
               
               if (importo >= 10.00) {                          /*applica un tetto massimo all importo*/
                           importo = 10.00;
                           return importo;
                           }
               }
           
           return importo;
    }

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    L'immagine non si vede, comunque per far apparire in colonna dei numeri (suppongo sia questo) o qualsiasi altra cosa basta interporre fra, ad esempio, %f un numero:
    %10f
    Il numero verrà stampato su 10 spazi giustificato a destra
    %-10f
    Il numero verrà stampato su 10 spazi giustificato a sinistra
    se poi vuoi anche limitare il numero delle cifre decimali (come hai fatto tu) puoi scrivere ad esempio
    %10f
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    2
    il problema è che nella scanf mi prende anche l invio e dunque il dato "importo" viene riportato a capo e non invece sotto la rispettiva colonna.. sono chiaro? Ho messo il link dell'immagine, riesci a vederla? comunque se non ti reca disturbo prova a compilare il mio codice, ti accorgerai direttamente del mio problema. Se riesci poi a risolverlo, mi fai sapere! nel frattempo ti ringrazio

    P.s. : come faccio ad allegare immagini in questo editor? non ci sono ancora riuscito!

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Non c'è un modo standard per non andare a capo dopo una scanf/fgets in quanto l'input viene letto in seguito all'invio, l'unico modo che hai è usare alcune librerie di sistema a seconda del sistema in cui ti trovi per "cancellare" il ritorno a capo...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.