Problem z przypisywaniem wartości zwracanej przez funkcję

Problem z przypisywaniem wartości zwracanej przez funkcję

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

MSH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
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:

Kopiuj
 	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.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

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

MSH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

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

Kopiuj
#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]);
	}
	
	
}
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
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.

AR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
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 ?

MSH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.