Comment imprimer verticalement en C?

Je dois imprimer en boucle et je veux imprimer la sortie sur deux lignes plutôt que sur une seule ligne.

Comme ça:

printf("| %-7.2f ", Fahrenheit); 

qui produit:

 | -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 | 

Quand j’ajoute printf("| %-6d", Celsius); sous le printf ci-dessus, il est imprimé juste à côté de / au milieu de mon premier printf.

Je veux que la sortie soit comme:

 | -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 | | -300 | -275 | -250 | -225 | -200 | -175 | -150 | -125| 

au lieu que les deux ensembles de valeurs soient mélangés sur la même ligne.

une partie de mon code:

 for(Celsius = CelsiusMin;Celsius <= CelsiusMax; Celsius += CelsiusStep) { Fahrenheit = FahrenheitZero + Celsius * CelsiusToFahrenheit; printf("| %-7.2f ", Fahrenheit); printf("| %-6d", Celsius); } return EXIT_SUCCESS; } 

Vous ne pouvez pas avoir directement une séquence d’instructions printf() écrivant sur la ligne 1 et une deuxième séquence d’instructions printf() simultanées écrivant sur la ligne 2, vous devrez donc la simuler.

Vous avez probablement besoin de quelque chose qui construit les deux lignes de sortie, puis les imprime quand elles sont prêtes:

 char line1[128]; char line2[128]; char *next1 = line1; char *next2 = line2; for (int c = -325; c <= -125; c += 25) { double f = (c + 40.0) * (9.0 / 5.0) - 40.0; next1 += sprintf(next1, "| %-7.2f ", f); next2 += sprintf(next2, "| %-7d ", c); } printf("%s|\n", line1); printf("%s|\n", line2); 

Exemple de sortie:

 | -553.00 | -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 | -238.00 | -193.00 | | -325 | -300 | -275 | -250 | -225 | -200 | -175 | -150 | -125 | 

La formule de conversion est plus simple que celle habituellement citée et symésortingque pour la conversion de ° F en ° C ou inversement, la différence étant le facteur de conversion (9.0 / 5.0) et (5.0 / 9.0) . Il repose sur -40 ° C = -40 ° F. Essayez le:

  • C = 0°C; (C+40) = 40; (C+40)*9 = 360; (C+40)*9/5 = 72; (C+40)*9/5-40 = 32°F C = 0°C; (C+40) = 40; (C+40)*9 = 360; (C+40)*9/5 = 72; (C+40)*9/5-40 = 32°F
  • F = 32°F; (F+40) = 72; (F+40)*5 = 360; (F+40)*5/9 = 40; (F+40)*5/9-40 = 0°C F = 32°F; (F+40) = 72; (F+40)*5 = 360; (F+40)*5/9 = 40; (F+40)*5/9-40 = 0°C

Vous feriez peut-être mieux avec les degrés Celsius imprimés en double également; J'ai conservé la représentation entière que vous avez choisie, mais je me suis assuré que les chiffres sont alignés sur les deux lignes.

Pour info: le zéro absolu est -273,15 ° C, 0K, -459,57 ° F. Donc, vous essayez d'imprimer des températures inexistantes.

Vous pouvez utiliser “\ t” pour aligner les sorties.