[c++] Behöver lite förtydligande om printf

Permalänk
Medlem

[c++] Behöver lite förtydligande om printf

Hej,

Jag och några kompisar håller på med att uppskatta/räkna ut pi med olika program(vilka vi även gör själva i verkligheten också). Nu håller vi på med archimedes approximation of Pi. Och vi vet ungefär hur vi skall göra, men hittade även ett mycket kortare program på internet, och vi förstår allt utom en rad. Koden ser ut så här;

#include <stdio.h>
#include <math.h>

void main(void)
{
double s = 1.0;
double n = 6.0;
puts("number of sides approximate value of pi");
while (n < 500000000.0)
{
printf ("%9.0f %18.16f\n", n, n*s/2.0);
double h = s / 2.0;
double z = sqrt(1.0 - h * h);
s = sqrt(h * h + (1.0 - z) * (1.0 - z));
n *= 2;
}
}

Raden vi ej förstår är printf ("%9.0f %18.16f\n", n, n*s/2.0);. Vad gör printf och kan någon kort förklara vad hela raden gör/betyder på ett simpelt sätt(fortfarande novice inom programmering)

Tack på förhands,
Tommie

Permalänk
Medlem

Kan inte C++, men om jag inte är helt ute och cyklar så gör printf formatterade utskrifter. Mer än så kan jag tyvärr inte säga

Visa signatur

Stationär: Fractal Design Meshify 2 Compact, Ryzen 7 5700x, MSI MAG B550 Tomahawk, Kingston HyperX Fury 32GB 3600Mhz CL18, Sapphire Radeon RX 5700 Pulse, Kingston A2000 1TB (x2), Seasonic Focus GX 650W, Noctua NH-U14S

NAS: Fractal Design Define R5, Ryzen 3 1200AF, Asus Prime B450M-A, 32GB ECC DDR4 @ 2133Mhz, 5x WD Red 4TB (Raidz2), WD Red 2TB (stripe), TrueNAS 12.0

Permalänk
Medlem

Det där är c inte c++

Printf skriver formaterad text till stdio.
Raden skriver ut en rad med ett flyttal med 9 tecken före avgränsare och i dom fall talet inte innehåller rätt mängd siffror så fylls det ut med mellanslag. sen ett flyttal med 18 tecken före avgränsare och 16 tecken efter avgränsare och avslutar med att göra nyrad. I dom fall talen inte innehåller rätt mängd siffror så fylls det ut med mellanslag.
Flyttal är decimaltal i mer vanligt språk

Permalänk

Funktionen printf är en ren utskriftsfunktion. Den först parametern är hur utskriften skall formateras och resten är de värden som skall skrivas ut. I det här fallet betyder "%9.0f %18.16f\n" formattera parameter 2 som ett flyttal (9 tecken brett, noll decimaler) och parameter 3 som ett flyttal (18 tecken brett, 16 decimaler) och skriv till sist ut ett radbryt.

Permalänk
Medlem