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

Argumenty funkcji void, linia 40, nie pojmuję gdzie jest błąd // EDIT - próba wykonania nowym sposobem

Object Storage Arubacloud
0 głosów
221 wizyt
pytanie zadane 28 kwietnia 2016 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,460 p.)
edycja 28 kwietnia 2016 przez Konrad Nabożny
Witam. Ulepszam mój program liczący schematem Hornera, a gdy już mamy funkcję kwadratową to liczy deltę, x0, x1, x2.

Gdzie robię niby błąd w linii 40!?

http://wklej.org/id/2360665/

 

@EDIT // EDIT

Nie chciałem robić kolejnego tematu, ponawiam więc ten. Zrezygnowałem z poprzedniego rozwiązania, ponieważ wszystko mi się poplątało i wróciłem do sposobu bez funkcji przeliczających poszczególne stopnie. Poszczególne ważne miejsca w kodzie opisałem w komentarzach. Moje pytanie brzmi, jak mogę zrobić tak, aby program liczył te przeklęte stopnie wyższe od trzeciego? Bardzo chciałbym zrobić to rekurencyjnie, tak aby można było zaczynać od dowolnego stopnia wielomianu, ale jak przyszło mi wysyłać do funkcji tablice danych, to poległem na całej linii. Przykładowe poprawne dane na wejściu dla stopnia czwartego (4 1 -4 7 -16 12), dla stopnia trzeciego (3 1 5 2 -8) dla stopnia drugiego - program liczy wtedy tylko deltę (2 3 5 2)

 

Kod: http://wklej.org/id/2362311/

 

Tak, nawet ja się w nim gubię.

2 odpowiedzi

0 głosów
odpowiedź 28 kwietnia 2016 przez criss Mędrzec (172,590 p.)

Deklarowane argumenty są zależne od innych argumentów. To aż dziwnie wygląda... Tym bardziej, że nie możesz używać argumentów funkcji poza jej ciałem.

Jeśli już podajesz rozmiar tablicy w stopien_wielomianu , to nic już więcej nie potrzebujesz do szczęścia. 2 ostatnie argumenty zadeklaruj jako wskaźniki, a w ciele odwołuj się normalnie jak do tablicy przez operator [], wiedząc, że jej rozmiar to stopien_wielomianu. Tyle.

komentarz 28 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Zupełnie nie rozumiem co oznacza że nie mogę używać argumentów funkcji poza jej ciałem.

Próbowałem wykonać to na 10 różnych sposobów, ale za każdym razem naprawiając błąd, pojawiają się 2 kolejne. Co prawda mógłbym zrobić wszystko bez funkcji i nie było by problemu, ale chcę żeby ten kod jakkolwiek wyglądał. :/
komentarz 28 kwietnia 2016 przez criss Mędrzec (172,590 p.)

Deklaracja argumentów to jeszcze nie ciało. Ciało to to między klamrami { }.

Napisałem ci przecież jak możesz to zrobić.

void wielomian_3(int stopien_wielomianu, int wynik, int mnoznik, int czy_odwrocic, int* stopien_wielomianu_tab, int* nowa_wartosc)
{
//wewnątrz funkcji normalne odwołania jak do tablicy
//np.
stopien_wielomianu_tab[3];
nowa_wartosc[2];
}

Operator [] zwraca to na co wskazuje ptr przesunięty o n: *(ptr + n). ptr to wskaźnik na którym używasz operatora, a to liczba w nawiasach kwadratowych. Mam nadzieje, że teraz rozumiesz.

Btw. nie wiem po co te argumenty wynik, mnoznik, czy_odwrocic skoro i tak w ciele funkcji natychmiastowo coś do nich przypisujesz i nie ma żadnego znaczenia co się tam znalazło w chwili wywołania.

komentarz 28 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Dzięki za rozwiązanie. Co do tych zmiennych wynik, mnoznik itp. to po prostu chwile wcześniej przeniosłem wszystko z maina. Funkcji jeszcze nie było i nie zdążyłem wszystkiego ogarnąć.
0 głosów
odpowiedź 28 kwietnia 2016 przez KubenQPL Maniak (62,820 p.)
A spróbuj nie określać wielkości tablicy w argumentach. Jako argumenty daj poprostu int tablica[].

Podobne pytania

0 głosów
0 odpowiedzi 144 wizyt
pytanie zadane 27 maja 2016 w C i C++ przez mrdropex Początkujący (430 p.)
0 głosów
3 odpowiedzi 3,116 wizyt
pytanie zadane 2 kwietnia 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
0 głosów
1 odpowiedź 309 wizyt

92,666 zapytań

141,564 odpowiedzi

320,022 komentarzy

62,033 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

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!

...