Funkcja, wskaźniki

0

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;
}
0

Oczywiście można to zrobić na wskaźnikach. U Ciebie powinno to tak wyglądać. Musisz teraz wstawić * przed nazwami zmiennych, by odwołać się do ich wartości.

float zerowanie(float x, int poz, float* eps_masz, int* l_popr)

Ps. YooSy masz rację mój błąd. Zapomniałem o tym.

0

Tak jak napisał YooSy nie ma tego zaimplementowanego w samym C, dlatego prosiłbym o pomoc ze wskaźnikami :|

0

Cos takiego(modyfikuje przekazane x w zależności od y)? Kompilacja gcc file_name.c:

#include <stdio.h>

float modify(float * x, int  y) {
	*x = *x * y;
	return *x;
}

int main () {
	float a = 1;
	int b = 2;
	printf("a, before fun= %f\n", a);
	a = modify(&a, b);
	printf( "a, after fun= %f\n", a);
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1