Programmazione C: correzione dei cicli e precisione in virgola mobile nelle tabelle di conversione

6

Scrivere un semplice convertitore di temperatura sembra banale finché non ti rendi conto di quanto facilmente la logica di base si interrompa. Inizi con un ciclo “mentre”, apri una tabella da Fahrenheit a Celsius e tutto sembra a posto. Ma poi hai bisogno di un punto dati specifico, come la temperatura del corpo umano, e all’improvviso il tuo codice pulito si trasforma in un incubo di debug.

Ecco uno sguardo dal mondo reale su come funziona il looping in C, perché la precisione è importante e come impedire che i programmi si blocchino per sempre.

Nozioni di base: cicli interi

Consideriamo la versione più semplice possibile. Vuoi stampare una tabella da 0 a 100 gradi Fahrenheit, saltando di 10 secondi. Utilizzi un numero intero “int” per il contatore “a”.

Esegui questo e otterrai una griglia pulita:

“testo”.
0 gradi F = -17 gradi C
10 gradi F = -12 gradi C
20 gradi F = -6 gradi C
30 gradi F = -1 gradi C
40 gradi F = 4 gradi C
50 gradi F = 10 gradi C
60 gradi F = 15 gradi C
70 gradi F = 21 gradi C
80 gradi F = 26 gradi C
90 gradi F = 32 gradi C
100 gradi F = 37 gradi C
c

int principale() {
fluttuare a;
un = 0;
mentre (a <= 100) { printf("%6.2f gradi F = %6.2f gradi C\n", a, (a - 32.0) * 5.0 / 9.0); a = a + 10; } restituire 0; } c

int principale() {
fluttuare a;
un = 0;
mentre (a <= 100) { se (a > 98,6) {
printf(“%6.2f gradi F = %6.2f gradi C\n”, 98.6, (98.6 – 32.0) * 5.0 / 9.0);
}
printf(“%6.2f gradi F = %6.2f gradi C\n”, a, (a – 32.0) * 5.0 / 9.0);
a = a + 10;
}
restituire 0;
}
c

int principale() {
float a, b;
un = 0;
b = -1;
mentre (a <= 100) { se ((a > 98,6) && (b < 98,6)) { printf("%6.2f gradi F = %6.2f gradi C\n", 98.6, (98.6 - 32.0) * 5.0 / 9.0); } printf("%6.2f gradi F = %6.2f gradi C\n", a, (a - 32.0) * 5.0 / 9.0); b = un; a = a + 10; } restituire 0; } ```

Ora la logica è valida. Stampa la riga aggiuntiva solo se “a” è attualmente superiore a 98,6 E “b” era precedentemente inferiore a 98

Articolo precedentePerché la singolarità tecnologica potrebbe effettivamente realizzarsi entro il 2030
Articolo successivoCome scegliere il telefono più sicuro: bilanciamento di hardware, software e supporto