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.
[C++] Wypełnienie tablicy wartościami funkcji
-
- Użytkownik
- Posty: 8
- Rejestracja: 22 lis 2014, o 15:36
- Płeć: Mężczyzna
- Lokalizacja: Poznań
- Podziękował: 1 raz
- Vardamir
- 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
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.
Następnie zadeklaruj tablicę i korzystając z pętli do każdego elementu tablicy przypisuj funkcję z odpowiednim argumentem.
-
- 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
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}\).
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;
}