Witam
Czy w języku C (podkreślam, nie C++) użytkownik programu może określić z dokładnością do którego miejsca po przecinku ma zostać wyświetlona jakaś liczba? O ile w normalnych programach do wyświetlenia żądanego miejsca po przecinku używamy np %5f, czy istnieje jakiś sposób, aby w trakcie wykonywania programu określić precyzję z jaką będzie wyświetlana liczba?
Będę bardzo wdzięczny za pomoc
0
0
o_O Zbuduj stringa "%Xf" gdzie X to podana przez użytkownika liczba po prostu a potem przekazuj to jako pierwszy parametr to prinfta. Jak takiego stringa zbudować? Na przykład za pomocą sprintf()
5
#include <stdio.h>
#include <math.h>
int main()
{
int i;
for(i=2;i<12;++i) printf("%*.*f\n",i+2,i,M_PI);
return 0;
}
0
Bardzo dziękuję :)
0
Jeszcze jedno pytanie a'propos budowania stringa: napisałem coś takiego:
#include <stdio.h>
int main()
{
char new[30];
float flt;
int count = 0;
scanf( "%f", &flt);
printf( "Podales liczbe: %f\n", flt);
sprintf(new, "%f", flt );
for(count=0 ;new[count] != '\0'; count++ );
printf( "%f ma %d cyfr", flt, count-1);
return 0;
}
jednakże za liczbę cyfr po przecinku zawsze brane jest równo 7, nawet jeżeli podałem liczbę z większą precyzją. Jak naprawić ten błąd?
0
Hmm ta pętla jest dziwnie zakonczona:
for(count=0 ;new[count] != '\0'; count++ );
Jeżeli chcesz liczbę z większą dokłądnościa to możesz zrobić albo double, zamiast float, a drukowanie wtedy zastapisz zamiast %f na %lf.
0
#include <stdio.h>
#include <string.h>
int main()
{
char buff[30],*ptr;
double flt;
scanf("%lf",&flt);
printf("Podales liczbe: %lg\n",flt);
printf("%lg ma %d znaków, ",flt,sprintf(buff,"%lg",flt));
ptr=strchr(buff,'.');
if(ptr) printf("%d cyfr oraz %d po przecinku\n",ptr-buff,strlen(ptr)-1);
else printf("brak znaków po przecinku\n");
return 0;
}