Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    43

    C: input e output formattati

    raga volevo chiedere è possibile eseguire l operazione di far stampare un numero qualsiasi anticipato da un numero x di 0,,dove x è in funzione di qualcosa???
    ad esempio:
    codice:
    #include<stdio.h>
    void main()
    {
    	int p;
    	printf("inserire numero che vuoi");
    	scanf("%d",&p);
    	printf("valore insreito è %010d",p);
    }
    questo pezzo mi dice che una volta inserito il numero me lo scrive con 10 0 davanti..
    ora chiedo è possibile legarlo a un qualcosa..avevo pensato così
    codice:
    #include<stdio.h>
    void main()
    {
    	int g=10;
    	int s=5;
    	int h=g-s;
    	int p;
    	printf("inserire numero che vuoi");
    	scanf("%d",&p);
    	printf("ilvalore di h vale %d",h);/*riga non necessaria*/
    	printf("valore insreito è %0hd",p);
    }
    certo questo è un esempio banale..ma mi chiedevo se c era un modo per farlo..a quanto sembra il compliatore non legge la variabile h..
    è possibile?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Posta il codice usando i tag altrimenti non avrai alcuna risposta ...

    Se non capisci come si fa, non rinunciare, ma riprovaci ...

    Il tuo codice deve essere compreso tra questi tag

    [ CODE ]
    [ /CODE ]

    senza inserire gli spazi che ho messo solo per chiarezza.

    Ok?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    In realtá non è che il compilatore non legge h, ma è che vuole il numero sottoforma di stringa . . . Potresti provare a convertire un numero in una stringa tramite la sprintf (per riferimenti sulle funzioni e quant' altro su c/c++ vai qui ) . . . Attualmente non posso verificare ma potresti fare tipo:
    codice:
     
    char buf[50]; 
    int h=6;
     sprintf(buf, "valore inserito è %%0%dd", h); 
    printf(buf, p);
    Chiedo scusa anticipatamente se ho commesso qualche errore
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  4. #4
    codice:
    #include <stdio.h>
    
    int main(void)
    {
    	int g=10;
    	int s=5;
    	int h=g-s;
    	int p;
    	printf("Inserisci un numero che vuoi: ");
    	scanf("%d",&p);
    	printf("Il valore di h è %d.\n",h); /*riga non necessaria*/
    	printf("Il valore inserito è %0*d.\n",h,p);
    	return 0;
    }
    Per maggiori informazioni dai un'occhiata alla documentazione della printf.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    43
    grazie mille per la risposta..era proprio quello che cercavo...ora tutto questo andrà in una serie di cicli for che solo a pensarci mi fa venir mal di testa. un ultima cosa..leggendo il codice di MItaly--penso che il compilatore quando veda
    codice:
    printf("Il valore inserito è %0*d.\n",h,p);
    associa *d ad h?..cioè fa andare alla ricerca di h..e vede il suo valore associando gli 0?
    un ultimissima curiosità ..perchè da quello che ho visto in giro e sui libri i programmatori fanno tutti
    codice:
    int main(void)
    mentre il mio prof ha sempre evitato ciò scrivendo
    codice:
    void main()
    ??
    lo so che sono uguali..me lo chiedevo a titolo di curiosità..ciao e grazie ,mille..

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da mimmoss
    mentre il mio prof ha sempre evitato ciò scrivendo
    Il perche' lo dovresti chiedere al tuo professore ...

    Lo standard (e la buona programmazione) prevede che sia

    int main

    ma alcuni compilatori "tollerano" e il tuo professore fa lo stesso ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da mimmoss
    grazie mille per la risposta..era proprio quello che cercavo...ora tutto questo andrà in una serie di cicli for che solo a pensarci mi fa venir mal di testa. un ultima cosa..leggendo il codice di MItaly--penso che il compilatore quando veda
    codice:
    printf("Il valore inserito è %0*d.\n",h,p);
    associa *d ad h?..cioè fa andare alla ricerca di h..e vede il suo valore associando gli 0?
    Come già detto, leggiti la documentazione della printf:
    * The width is not specified in the format string, but as an additional integer value argument preceding the argument that has to be formatted.
    un ultimissima curiosità ..perchè da quello che ho visto in giro e sui libri i programmatori fanno tutti
    codice:
    int main(void)
    mentre il mio prof ha sempre evitato ciò scrivendo
    codice:
    void main()
    ??
    lo so che sono uguali..me lo chiedevo a titolo di curiosità..ciao e grazie ,mille..
    Non sono uguali, il secondo è sbagliato.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.