[C++] Wypełnienie tablicy wartościami funkcji

andrzej9555
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 22 lis 2014, o 15:36
Płeć: Mężczyzna
Lokalizacja: Poznań
Podziękował: 1 raz

[C++] Wypełnienie tablicy wartościami funkcji

Post autor: andrzej9555 »

Witam,

mam do napisania kilka programów i kompletnie zaciąłem się na ostatnim. Mianowicie mam zadeklarować 200 elementową tablicę i wypełnić wartościami funkcji \(\displaystyle{ f(x)=(4x)^2-4}\) z przedziału od -10 do 10 (tab[0] = f(-10), do tab[1] = f(-9.9) itd.) oraz znaleźć i wyświetlić indeksy, dla których
wartość w tablicy mieści się w przedziale od -1 do 1.

Nie mam nawet pomysłu jak wypełnić tą tablicę tymi wartościami. Proszę o pomoc.
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[C++] Wypełnienie tablicy wartościami funkcji

Post autor: Vardamir »

Zacznij od napisania funkcji zwracającej wartość dla podanego argumentu.

Następnie zadeklaruj tablicę i korzystając z pętli do każdego elementu tablicy przypisuj funkcję z odpowiednim argumentem.
luka52
Użytkownik
Użytkownik
Posty: 8601
Rejestracja: 1 maja 2006, o 20:54
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 47 razy
Pomógł: 1816 razy

[C++] Wypełnienie tablicy wartościami funkcji

Post autor: luka52 »

Wg mnie jest to dobry przykład aby poćwiczyć nowe możliwości języka c++ (c++11) - wyrażenia lambda, zamiast rozwiązywać zadanie "po staremu".
Idea jest wciąż ta sama - definiujemy tablicę 200 elementów, następnie wykonujemy pętlę po wszystkich jej elementach ustalając wartości zgodnie z przyjętym wzorem.
Przedział \(\displaystyle{ [-10, 10]}\) został podzielony punktami: \(\displaystyle{ \frac{20 i}{200 - 1} - 10}\), gdzie \(\displaystyle{ i = 0, 1, \ldots, 199}\), co przekłada się na punkty: \(\displaystyle{ -10, -9.8995, \ldots, 10}\).

Kod: Zaznacz cały

#include <iostream>
#include <array>
#include <algorithm>

int main()
{
	const int N = 200;
	std::array<double, N> arr;

	std::for_each(arr.begin(), arr.end(), [](double& x) {
			static int i = 0; 
			x = (4.0 * ( 20.0 * i / (N - 1.0) - 10.0 )) * (4.0 * ( 20.0 * i / (N - 1.0) - 10.0 )) - 4.0;
			i++;
	});

	for (const auto& a : arr)
		std::cout << a << std::endl;

	return 0;
}
ODPOWIEDZ