Wątek przeniesiony 2017-01-11 18:02 z Kosz przez Patryk27.

Problem z przypisywaniem wartości zwracanej przez funkcję

Odpowiedz Nowy wątek
2017-01-11 18:00
MSH
0

Witam wszystkich!

Mam problem z przypisywaniem wartości zwracanej przez funkcję do utworzonej tablicy w pętli. Pokazuje ona zawsze wartość 0.

Pętla oraz przypisywanie wartości zwracanej przez funkcję wygląda następująco:

    for(i=a; i<=b; i++)
    {
        tab[i] = fun(i);
        printf("Dla n = %d, W(n) = %.1f\n", i, tab[i]);
    }

W momencie, gdy nie przypisuję wartości zwracanej przez funkcję a bezpośrednio umieszczam tą wartość w printfie (printf("Dla n = %d, W(n) = %.1f\n", i, fun(i)); - program działa bez zarzutów. Sęk w tym, że muszę owe wartości umieszczać w tablicy.

edytowany 1x, ostatnio: MSH, 2017-01-11 18:01
2017-01-11 18:02
0

Pokaż więcej kodu, a najlepiej wrzuć cały minimalny kod reprezentujący problem.


edytowany 1x, ostatnio: Patryk27, 2017-01-11 18:03

Pozostało 580 znaków

2017-01-11 18:05
MSH
0

Cały kod wygląda następująco:

#include <stdio.h>
#include <stdlib.h>
 
float fun(int a)
{
    if(a%2==0)
    {
        return 0.5*a + a*a;
    }
    if(a%2==1)
    {
        return a*(a-5);
    }
}
 
int main()
{
    int n, i;
    int a, b;
    printf("Podaj poczatek przedzialu: ");
    scanf("%d", &a);
    printf("Podaj koniec przedzialu: ");
    scanf("%d", &b);
    n = b-a;
    int tab[n];
 
    for(i=a; i<=b; i++)
    {
        tab[i] = fun(i);
        printf("Dla n = %d, W(n) = %.1f\n", i, tab[i]);
    }
 
}

Pozostało 580 znaków

2017-01-11 18:07
1

Wykraczasz poza zakres tablicy - jeśli przykładowo podasz przedział 100..110, utworzona zostanie tablica mająca dziesięć elementów o indeksach 0..9, podczas gdy już w pierwszym obrocie pętli Ty nadpisujesz setny element.


Pozostało 580 znaków

2017-01-11 20:12
1

Nie jestem doświadczoną osobą, ale funkcja zwraca float, a ty chcesz to przypisać do tablicy intów, nie tracisz wtedy części ułamkowej wyniku ?
Jeśli tak ma być to czemu nie dać zwracania inta od razu w funkcji ?

edytowany 1x, ostatnio: Arryo, 2017-01-11 20:12

Pozostało 580 znaków

2017-01-11 20:14
MSH
0

@Arryo:
Masz rację, nie zwróciłem na to uwagi, a jednak jest to istotne. Dziękuję!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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