ciao a tutti
vorrei sapere come faccio ad approssimare un numero in virgola mobile, per esempio
123.456789 a 123.456
ciao a tutti
vorrei sapere come faccio ad approssimare un numero in virgola mobile, per esempio
123.456789 a 123.456
Per troncare ad una determinata cifra decimale:
.codice:double Truncate(double Number, unsigned int Position) { return floor(Number*pow(10,Position))/pow(10,Position); }
Amaro C++, il gusto pieno dell'undefined behavior.
ok grazie
il programmino richiede di inserire da tastiera N numeri reali, di ordinarli.
Successivamente leggere da tastiera un numero reale e verificare con ricerca binaria se questo numero reale coincide (con approssimazione di 1/1000) con uno degli N numeri ordinati precedentemente.
stampi la posizione nel vettore dell'eventiale numero coincidente.
Ho fatto in questo modo
ma non riesco a capire come effettuare quella approssimazionecodice:#include <stdio.h> #include <stdlib.h> #define N 4 /* * */ int main() { int i,j; float n; float app; float A[N]; printf ("Inserisci numeri\n"); for (i = 0; i < N; i++){ scanf ("%f", &n); A[i] = n; } for (i = 0; i < N - 1; i++){ for (j = i + 1; j < N; j++){ if (A[i] < A[j]){ app = A[j]; A[j] = A[i]; A[i] = app; } } } printf ("Numeri : %f", A[i]); return 0; }
Usa la funzione che ti ho scritto.![]()
Amaro C++, il gusto pieno dell'undefined behavior.
ho fatto in questo modo, ma non va
codice:#include <stdio.h> #include <stdlib.h> #include <math.h> #define N 2 float Truncate(float Number, unsigned int Position); int main() { int i,j; float n; float app; float A[N]; float REAL; int tronc = 3; printf ("Inserisci numeri\n"); for (i = 0; i < N; i++){ scanf ("%f", &n); A[i] = n; } for (i = 0; i < N - 1; i++){ for (j = i + 1; j < N; j++){ if (A[i] < A[j]){ app = A[j]; A[j] = A[i]; A[i] = app; } } } printf ("\nNumeri ordinati: \n"); for (i = 0; i < N; i++){ printf ("%f\n", A[i]); } printf ("Inserisci il numero da cercare\n"); scanf ("%f", &REAL); float Truncate(float REAL, unsigned int tronc); for (i = 0; i < N; i++){ if (A[i] == REAL){ printf("La posizione del numero all'interno del vettore : %d\n", i); } } system("PAUSE"); return 0; } float Truncate(float Number, unsigned int Position) { return floor(Number*pow(10,Position))/pow(10,Position); }
si ma ti rendi conto che non solo non la usi ma l'hai inserita all'interno del main ricopiandola senza usarla..![]()
continuo a dirti che hai delle pecche non da poco nella conoscenza del linguaggio c++ (questo è tipo il capitolo 2 o 3 di qualsiasi libro, cioè l'uso delle funzioni)
si vero...alcune volte mi perdo tra errori veramente banali..ecco fatto
graziecodice:#include <stdio.h> #include <stdlib.h> #include <math.h> #define N 2 float Truncate(float Number, unsigned int Position); int main() { int i,j; float n; float app; float A[N]; float REAL; int tronc = 3; printf ("Inserisci numeri\n"); for (i = 0; i < N; i++){ scanf ("%f", &n); A[i] = n; } for (i = 0; i < N - 1; i++){ for (j = i + 1; j < N; j++){ if (A[i] < A[j]){ app = A[j]; A[j] = A[i]; A[i] = app; } } } printf ("\nNumeri ordinati: \n"); for (i = 0; i < N; i++){ printf ("%f\n", A[i]); } printf ("Inserisci il numero da cercare\n"); scanf ("%f", &REAL); for (i = 0; i < N; i++){ if (Truncate(A[i], tronc) == Truncate(REAL, tronc)){ printf("La posizione del numero all'interno del vettore : %d\n", i); } } system("PAUSE"); return 0; } float Truncate(float Number, unsigned int Position) { return floor(Number*pow(10,Position))/pow(10,Position); }