• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przetwarzanie sygnałów - generowanie dość skomplikowanej funkcji. C

Object Storage Arubacloud
0 głosów
2,262 wizyt
pytanie zadane 13 października 2018 w C i C++ przez sabfil Nowicjusz (120 p.)

Witam, muszę napisać program, który zawiera:
1. Funkcję generującą przebieg funkcji matematycznej (będzie podany dla każdego indywidualnie). Jako parametry wejściowe funkcji wchodzą: tablica współczynników funkcji, dwa parametry określające dziedzinę, tablica wynikowa oraz wielkość tablicy wynikowej. 
2. Funkcję wczytującą z konsoli współczynniki funkcji (jako tablicę);
3. Funkcję wczytującą zakres dziedziny;

Punktów jest więcej (projekt na zajęcia na studiach) ale na razie zajmuję się tymi trzema. Nie jestem dobry w programowaniu i mam problemy z poprawnym napisaniem tego kodu. Wypociłem coś takiego i nie mam pojęcia jak ogarnąć punkt pierwszy. Jak się za to w ogóle zabrać. Będę wdzięczny za wszystkie wskazówki, rady i wytknięcia błędów. 
P.S. Poza tym nie czuje jeszcze wskaźników, tego jak działają itp. niby w teorii wiem o co chodzi ale jak przychodzi co do czego to wszystko mi się miesza

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void parametry(float wspolczynniki[])
{
    float parA, parB, parC, parD;
    printf("Podaj parametr A: ");
    scanf("%f", &parA);                 //pobranie parametrow od uzytkownika
    printf("Podaj parametr B (nie 0): ");
    scanf("%f", &parB);
    printf("Podaj parametr C: ");
    scanf("%f", &parC);
    printf("Podaj parametr D (nie 0): ");
    scanf("%f", &parD);
    *(wspolczynniki+1) = parA;              //przypisanie parametrow do odpowiednich miejsc w tablicy
    *(wspolczynniki+2) = parB;
    *(wspolczynniki+3) = parC;
    *(wspolczynniki+4) = parD;
}

void dziedzina(float *dMin, float *dMax)               //X ma nalezec do (-1 , 1)
{
    printf("Podaj dolna granice dziedziny: ");
    scanf("%f", dMin);
    printf("Podaj gorna granice dziedziny: ");
    scanf("%f", dMax);
}

void generator(float wspolczynniki[], float *dMin, float *dMax, float wyniki[], int rozmiar)
{
                                        
    float tablica_par[4];   //tablica_par to nazwa tablicy w ktorej sa parametry A B C D

    float funkcja;
    float x;
    int i=1;
    for(x=-1; x<=1; x=x+0.004)
    {
    funkcja = (*(tablica_par+1) * sin(x / *(tablica_par+2))) * cos((sqrt( *(tablica_par+3))/ *(tablica_par+4)) * x);
    wyniki[1+i] = funkcja;
    i++;
    printf("%f\n", funkcja);
    }

}

int main()
{
float tablica_par[4];           //tablica_par to nazwa tablicy w ktorej sa parametry A B C D
parametry(tablica_par);         //wywołanie funkcji wprowadzania parametrow

/*printf("%f\n", *(tablica_par+1));
printf("%f\n", *(tablica_par+2));
printf("%f\n", *(tablica_par+3));
printf("%f\n", *(tablica_par+4));     //sprawdzenie czy w tablicy zapisały sie parametry*/

float dMin;
float dMax;
dziedzina(&dMin, &dMax);            //wywołanie funkcji określania granic x
//printf("dMin=%f\t dMax=%f\n", dMin, dMax);
generator(tablica_par, &dMin, &dMax,0, 500); //nie mam pojecia jak wywołać tą funkcje


    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 14 października 2018 przez j23 Mędrzec (194,920 p.)
void parametry(float wspolczynniki[])
{
	printf("Podaj parametr A: ");
	scanf("%f", wspolczynniki + 0);                 
	printf("Podaj parametr B (nie 0): ");
	scanf("%f", wspolczynniki + 1);
	printf("Podaj parametr C: ");
	scanf("%f", wspolczynniki + 2);
	printf("Podaj parametr D (nie 0): ");
	scanf("%f", wspolczynniki + 3);
}


void generator(float wspolczynniki[], float dMin, float dMax, float wyniki[], int rozmiar)
{
 	int i = 0;

	for(float x =- 1; x <= 1 && i < rozmiar; x += 0.004, ++i)
	{
		wyniki[i] = (wspolczynniki[0] * sin(x / wspolczynniki[1])) * cos((sqrt(wspolczynniki[2]) / wspolczynniki[3]) * x);
		printf("%f\n", wyniki[i]);
	}
}

/* ... */

float wyniki[500];

generator(tablica_par, dMin, dMax, wyniki, 500);

W C/C++ tablice indeksuje się od zera.

Podobne pytania

0 głosów
0 odpowiedzi 174 wizyt
0 głosów
1 odpowiedź 867 wizyt
pytanie zadane 26 października 2019 w Sprzęt komputerowy przez luna22 Obywatel (1,420 p.)
0 głosów
1 odpowiedź 299 wizyt
pytanie zadane 4 stycznia 2019 w Sprzęt komputerowy przez szymono31 Nowicjusz (140 p.)

92,628 zapytań

141,490 odpowiedzi

319,860 komentarzy

62,010 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...