Domanda:
Come mostrare un risultato numerico con la precisione scelta dall'utente, in C?
Giacomo
2008-10-12 04:22:08 UTC
il segmento di programma che ho scritto a questo scopo è:
-------------------------------------------------------------------------
...
printf("\nChoose the precision of the result (ex 1.00 vs 1.000), how many decimals? [count after the dot]");
scanf("%d",&p); // qui legge da utente il numero di cifre significative con cui esprimere il risultato

printf("\nx1 = (%.p)f e x2 = (%.p)f",ROOTS(a,b,c,'+'),ROOTS(a,b,c,'-')); // ecco qui come ho tentato di implementare il comando: devo stampare due float e so che facendo %.2f ad esempio stampo un float con 2 cifre significative... io allora ho pensato di mettere %.pf in modo che le cifre siano scelte dall'utente con la scanf precedente
...
----------------------------------------------------------------

ora il problema è che gcc dopo aver compilato senza problemi, quando mando in esecuzione mi manda in output due cifre in esadecimale. evidentemente il comando %.pf non ha il risultato che speravo. qualcuno può aiutarmi? grazie
Sei risposte:
?
2008-10-12 13:47:35 UTC
include

#include



int main()

{



double n;

int p;

char S[10];

char a[2];



p=3; /* Precisione */



a[0]=char(48+p);

a[1]='\0';



n=3.12345; /* numero calcolato */



strcpy(S,"\n%.");

strcat(S,a);

strcat(S,"f\0");



printf(S,n); /* Stampa il numero n nella precisione desiderata */



}





ALTRA VERSIONE



#include

#include



int main()

{



double n;

int p;

int da;

int u;

char S[10];



p=13; /* Precisione */



da = p / 10;

u = p - da * 10;



n=3.12345; /* numero calcolato */



strcpy(S,"\n%.xxf");



S[3]=char(48+da);



S[4]=char(48+u);



printf(S,n); /* stampa il numero n nella precisione desiderata */



}
Lorenzo
2008-10-12 05:36:58 UTC
Ciao , allora tu chiedi all'utente quante cifre ...

le metti su p che e' una variabile ...



printf si aspetta una stringa e a dire il vero persino costante , la cosa migliore e' che ti crei una stringa che contenga quello che vuoi far stampare a printf , p la devi convertire in stringa ,



crei la prima stringa fino a % , concateni p convertito in stringa e poi f



puoi usare una cosa del genere

char * strcat ( char * dest, const char * src );



tieni presente che in C standard non ci sono tipi stringhe e operatori per le stringhe ma solo vettory ( array ) per cui dovresti usare un array di caratteri oppure utilizzare parte di codice C++
HS
2008-10-12 05:00:04 UTC
non so come aiutarti però puoi fare uno swich che stampa il numero delle cifre dicimali in base a p es:

switch (p)

{

case 0:

printf("\n x1=%.0f.......",........);

break;

case 1:

printf("\n x1=%.1f.......",........);

break;

case 2:

printf("\n x1=%.2f.......",........);

break;

case 3:

printf("\n x1=%.3f.......",........);

break;

ecc....

}



ti basta fare solo copia incolla e cambiare il valore
Alex
2008-10-12 05:26:49 UTC
HO FATTO DELLE MODIFICHE PROVA ORA



#include

#include

#include



int main()

{

const int MaxCifre = 5;

char cifre[MaxCifre];



int prec = 0;

float num = 0;



system("cls");

printf("Inserisci un numero : ");

scanf("%f", &num);



_flushall();

do

{

printf("precisione : ");

scanf("%d", &prec);

} while(prec < 0 || prec > MaxCifre);



_itoa(prec, cifre, 10);



char stringa[255] = "Numero : %.";

strcat(stringa, cifre);

strcat(stringa, "f\n");



printf(stringa, num);

system("pause");

return 0;

}



questa a me funziona !!! CIAO !!!

si puo migliorare, questa è solo una prima stesura

io ho creato questo programma con dev-c++



FAMMI SAPERE !!!!



Mi dovete spiegare il pollice giu però, funziona e fa quello che chiede il richiedente, quindi non lo capisco proprio, ma come li mettete questi pollici a TESTA DI CA..O
Shadow
2008-10-12 04:27:16 UTC
mm, guarda, così a colpo d'occhio direi che prendi l'input dell'utente e a seconda cambi il tipo di dato..per esempio:



a=decimale --> float b //la variabile che controlla il ris

a=intero --> int b
.
2008-10-12 04:25:44 UTC
azz .. ho capito la domanda...ma non riesco ad aiutarti. poichè ho appena cominciato a studiare C


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...