Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    45

    [c/c++]Convertire intero in stringa

    #include <iostream.h>
    #include <stdlib.h>
    #include <time.h>

    void ora(int &h,int &min,int &sec,int &gm,int &m,int &a)
    { time_t tempo;
    struct tm * leggibile = NULL ;

    time(&tempo);
    leggibile = localtime(&tempo);

    h = leggibile -> tm_hour;
    min = leggibile -> tm_min;
    sec = leggibile -> tm_sec;
    gm = leggibile -> tm_mday;
    m = leggibile -> tm_mon + 1 ;
    a = leggibile -> tm_year + 1900 ;

    }

    int main ()
    { int h,min,sec,gm,m,a;

    ora(h,min,sec,gm,m,a);

    cout << "Sono le ore "<< h <<":"<<min<<" e "<<sec<<" secondi"<<endl;
    cout << "Data "<<gm<<"/"<<m<<"/"<<a<<endl ;
    system("pause");
    return 0;
    }


    --------------------------------------------------------------------------------------

    attraverso questa funzione riesco a ottenere ora e data dal sistema che vengono salvati in delle variabili intere...

    ora vi spiego il mio problema:
    x scuola devo amministrare un parcheggio che a ogni macchina che entra venga attribuito un tagliando e segnalata l'ora e data di ingresso e uscita...

    ora: ho pensato di risolvere questo problema con le liste dinamine non sapendo a priori il numero di tagliandi emessi

    quindi ho pensato di fare una variabile
    typedef struct tagliando
    { int numero;
    ora ingresso;
    ore uscita;
    data;
    tagliando *next;
    }


    l'unico problema è che le variabili ora ingresso uscita vorrei salvarle nel formato CHAR 24:22 (hh:mm) e 12/12/2008 (gg/mm/aaaa) dato che se no avrei troppe varibili da gestire nel formato INT...(tanto poi non ci devo fare sopra nessuna operazione)

    la mia domanda è quindi: COME CONVERTIRE UN INT IN CHAR?

    es io ho

    int h = 10
    int min = 7

    e vorrei fare 10:07 (il 7 diventa 07)
    stessa cosa per la data....è possibile?

    grazie mille a tutti
    ciao ciao
    by Nick

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    45
    ah mi son dimenticato di dire che NON abbiamo fatto ancora ne gli OGGETTI ne le CLASSI....
    grazie a tutti per la disponibilita

  3. #3
    prima di tutto, quando posti del codice, per migliorare la leggibilità, usa i tag code:
    [*code]codice[/*code]
    (senza asterisco)

    Hai mai provato ad usare la funzione asctime ?
    codice:
    #include <stdio.h>
    #include <time.h>
    
    int main ()
    {
      time_t rawtime;
      struct tm * timeinfo;
    
      time ( &rawtime );
      timeinfo = localtime ( &rawtime );
      printf ( "The current date/time is: %s", asctime (timeinfo) );
      
      return 0;
    }
    Per la conversione di un intero in stringa potresti usare uno stringstream (contenuta nell'header "sstream") oppure sprintf (contenuta nell'header "stdio")
    codice:
    char stringa[10];
    int ore, minuti;
    ...
    sprintf(stringa,"%d:%d", ore, minuti);
    Experience is what you get when you don’t get what you want

  4. #4
    ah scusa, nel tuo caso:
    codice:
    sprintf(stringa,"%02d:%02d", ora, minuti);
    Experience is what you get when you don’t get what you want

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    45
    grazie gentilissimo!!
    dopo provo subito quello che mi hai detto...scusami ma sono alle prime armi

    riguardo sprintf(stringa,"%d:%d", ore, minuti);
    ho capito che il primo è la destinazione
    ma il parametro in mezzo "%d:%d" vorrei capire cosa significhino o magari se puoi linkarmi una guida dove spieghi come si utilizza la funzione sprintf che io nn l'ho trovata...grazie mille!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    chiedo scusa per l'imprecisione
    Experience is what you get when you don’t get what you want

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    45
    grazie mille per l'aiuto!

    allora dalla guida ho capito che "%02d:%02d" è la stringa di formattazione, ma alcune cose non mi sono ancora chiare

    " " a cosa servono? a dire che : è un carattere e non un parametro?

    % indica l'inizio di una direttiva di conversione

    d L'argomento e' convertito a decimale segnato...cioè? che dopo ci saranno dei numeri?

    02 non l'ho capito ...è quello che fa diventare ad es 7 in 07?

    e poi perche %02d è ripetuto sia prima che dopo il ':'?

    se riuscite a farmi un po' di chiarezza
    grazie mille

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    45
    Originariamente inviato da Xaratroom
    chiedo scusa per l'imprecisione
    ma figurati! sono io che t devo ringraziare!

  10. #10
    allora dalla guida ho capito che "%02d:%02d" è la stringa di formattazione, ma alcune cose non mi sono ancora chiare
    " " a cosa servono? a dire che : è un carattere e non un parametro?
    % indica l'inizio di una direttiva di conversione
    d L'argomento e' convertito a decimale segnato...cioè? che dopo ci saranno dei numeri?
    02 non l'ho capito ...è quello che fa diventare ad es 7 in 07?
    e poi perche %02d è ripetuto sia prima che dopo il ':'?
    Il prototipo della sprintf è il seguente:
    codice:
    int sprintf ( char * str, const char * format, ... );
    Ritorna un valore int che equivale, in caso di successo, al numero di caratteri scritti.
    Richiede:
    -Un parametro di tipo puntatore a carattere (char *str), che rappresenta la stringa, sulla quale andrà a scrivere.
    -Un parametro di tipo puntatore a carattere costante (const char * format), che è appunto la stringa di formattazione.
    -Altri parametri "non determinati" (...)
    Per "poter capire" quello che viene effettivamente passato, la sprintf ha bisogno che, il tipo dei dati passati (dopo la stringa di formattazione) sia specificato nella stringa di formattazione.
    Per specificare che tipi stai passando, alla funzione, utilizzi le direttive di conversione.
    Il carattere % indica l'inizio di una direttiva di conversione.
    Mentre il carattere che lo segue, solitamente, il tipo della variabile passata.
    Per capirci meglio:
    codice:
    [...]
    char nome[20];
    int i;
    [...]
    char stringa[30];
    sprintf (stringa, "Salve utente numero %d, il tuo nome è %s", i, nome);
    Notare la prima direttiva di conversione (%d) si riferisce al terzo parametro passato alla funzione (la variabile i : d -> intero) mentre la seconda direttiva (%s) si riferisce al quarto parametro (nome: %s ->stinga).
    Detto questo c'è da fare l'ultima precisazione:
    %d è una direttiva di conversione senza alcun flag opzionale.
    La struttura di una direttiva di conversione è la seguente:
    % Obbligatorio Indica l'inizio di una direttiva di conversione.
    - Flag opzionale Specifica un incolonnamento a sinistra.
    + Flag opzionale Specifica che il segno verra' sempre stampato.
    ' ' (spazio) Flag opzionale Specifica che verra' stampato o il segno negativo o uno spazio.
    0 Flag opzionale Specifica che nelle conversioni numeriche, i caratteri di riempimento saranno 0 (zeri) anziche' spazi.
    # Flag opzionale Specifica un formato alternativo per l'output.
    Ampiezza Numero opzionale Dimensione minima del campo.
    '.' (punto) Opzionale Separa l'ampiezza dalla precisione.
    Precisione Numero opzionale
    Modificatore Lettera opzionale La lettera h seguita da uno dei caratteri di conversione d, i, u, o, x o X indica che l'argomento e' uno short int o uno unsigned short int.
    Il modificatore l (elle) con gli stessi caratteri di conversione, indica che l'argomento e' un long int o uno unsigned long int.
    Il modificatore L seguito da uno dei caratteri di conversione e, E, f, g o G indica che l'argomento e' un long double.
    Carattere di conversione Lettera obbligatoria Termina la specifica di conversione relativa ad un argomento della lista variabile.
    Quindi, (in %02d) 0 specifica che i caratteri di riempimento saranno degli 0 e non degli spazi, mentre 2 indica che la dimensione minima del valore "stampato" sarà di 2 cifre.
    %indica l'inizio e d indica la fine.

    La stringa di formattazione per il tuo caso diventa:
    "<primo>:<secondo>"
    (quindi nella stringa di formattazione ci sono 2 direttive).
    dove <primo> e <secondo> sono entrambi uguali alla direttiva %02d

    spero di non essere stato confusionario
    Experience is what you get when you don’t get what you want

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 © 2024 vBulletin Solutions, Inc. All rights reserved.