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, botów: 0