Witam, od razu zaznaczam, że w programowaniu jestem zupełnie zielony, a problem jest prawdopodobnie banalny. Chciałbym, żeby obliczone argumenty(te wytłuszczone) w funkcji:
float zerowanie(float x, int poz, float eps_masz, int l_popr)
trafiły do funkcji wyjściowej
liczba_pk = zerowanie(liczba,pozycja,eps,dig)
zależnie jakie dane zostaną wprowadzone. Domyślam się, że za pomocą wskaźników da się to osiągnąć, lecz nie potrafię je zaimplementować w programie. Pozdrawiam.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float zerowanie(float x, int poz, float eps_masz, int l_popr)
{
float xpk = x,peps;
int z = 0;
// --- wyznaczenie epsilona maszynowego ---
eps_masz = x;
while(x+ eps_masz != x) eps_masz /= 2.0;
// --- obliczenie liczby cyfr poprawnych ---
peps =eps_masz;
while(peps < 1)
{
peps = 10;
z++;
}
if (peps < 4.5) l_popr = z - 1;
else l_popr = z - 2;
// --- zerowanie liczby ---
int i;
for (i=0; i < poz - 1; i++) xpk *= 10;
xpk = (int)xpk;
for (i=0; i < poz - 1; i++) xpk /= 10.0;
return xpk;
}
int main()
{
float liczba,liczba_pk,eps;
int dig,pozycja;
printf("Wprowadz liczbe: ");
scanf( "%f" ,&liczba);
printf("pozycja: ");
scanf("%d" , &pozycja);
liczba_pk = zerowanie(liczba,pozycja,eps,dig);
printf("\nliczba po zerowaniu: %f ", liczba_pk);
printf("\neps: %f", eps);
printf("liczba cyfr popr: %d", dig);
system("pause");
return 0;
}