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

Problem z przypisywaniem wartości zwracanej przez funkcję

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.

0

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

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]);
	}
	
	
}
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.

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 ?

0

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

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