Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Średnia ważona z nieokreśloną liczbą argumentów

Ostatnio zmodyfikowano 2017-12-20 00:32
Autor Wiadomość
koot
Temat założony przez niniejszego użytkownika
Średnia ważona z nieokreśloną liczbą argumentów
» 2017-12-19 19:32:46
Cześć! Mam do napisania funkcję, która obliczy średnią ważoną wg tego wzoru: a1p1 + a2p2 +···+ anpn + an+1(1−p1 −p2 −···−pn). Jej jedyny określony argument to n. Pozostałe argumenty to ciąg liczb typu double postaci a1,p1,a2,p2,...,an,pn,an+1. Ponadto funkcja ma sprawdzać podane warunki pi >= 0 dla i = 1,2,...,n; pi <= 1 dla i = 1,2,...,n; p1 + p2 +···+ pn <= 1. Przygotowałem sobie taki oto szkielet funkcji, ale nie za bardzo wiem, jak go wypełnić. Ktoś mógłby pomóc?
C/C++
double sredniaWazona( unsigned int n,...)
{
    va_list ap;
   
    unsigned int i;
    double * wagi = new double[ n ];
    double * oceny = new double[ n + 1 ];
   
    va_start( ap, n );
   
    for( int i = va_arg( ap, unsigned int ); i < n; i = va_arg( ap, unsigned int ) )
    {
       
    }
   
    va_end( ap );
}
P-167991
pekfos
» 2017-12-19 19:47:36
Ta pętla nie ma żadnego sensu.
P-167992
koot
Temat założony przez niniejszego użytkownika
» 2017-12-19 20:30:21
@pekfos: Dlatego proszę o pomoc. Bo nie wiem, jak to zrobić.
P-167994
pekfos
» 2017-12-19 21:16:10
Jeśli rozumiesz działanie va_arg, to nie widzę żadnych problemów do rozwiązania. Tzn jak już wywalisz tą pętlę i wstawisz nową, taką z sensem tym razem. Jeśli rozumiesz użycie tu tablic, to z tym też nie będzie żadnych problemów.
P-167996
koot
Temat założony przez niniejszego użytkownika
» 2017-12-19 21:28:41
A jednak problem jest. I liczyłem chociaż na podpowiedź. Ale skoro to problem, to ok.
P-167998
pekfos
» 2017-12-19 21:40:36
No, i jaki to problem? Ile trzeba ciągnąć za język, by dostać coś bardziej konkretnego od "nie wiem jak zrobić", "proszę o pomoc".. Podpowiedź dostałeś i jakoś to specjalnie wiele nie dało. To co nie wiesz jak zrobić..? Jak napisać pętlę która wypełnia tablicę czymkolwiek? Podstaw 'cokolwiek' na va_arg i gotowe, aby tylko wczytywać odpowiednią daną do odpowiedniej tablicy.
P-167999
koot
Temat założony przez niniejszego użytkownika
» 2017-12-19 21:44:42
Chciałem zrobić tablice, do których bym wczytywał do jednej wartości a, do drugiej - p. Ale nawet nie wiem, czy to dobry pomysł. Czy może da się to zrobić jakoś prościej.
Może tak powinna wyglądać pętla?    for(int i=0;i<n;i=va_arg(ap,double))
P-168001
pekfos
» 2017-12-19 22:13:35
Chciałem zrobić tablice, do których bym wczytywał do jednej wartości a, do drugiej - p. Ale nawet nie wiem, czy to dobry pomysł.
Tablice nie są tu potrzebne. Sumować elementy możesz na bieżąco.

Może tak powinna wyglądać pętla?    for(int i=0;i<n;i=va_arg(ap,double))
Czyli jednak nie rozumiesz działania va_arg. Ta pętla ma mieć dokładnie n przebiegów i to jest jedyne co powinno tu wpływać na jej wygląd.
P-168002
« 1 » 2 3 4
  Strona 1 z 4 Następna strona