| 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?  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 );
 }
 | 
|  | 
| pekfos | » 2017-12-19 19:47:36 Ta pętla nie ma żadnego sensu. | 
|  | 
| 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ć. | 
|  | 
| 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. | 
|  | 
| 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. | 
|  | 
| 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. | 
|  | 
| 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))
 
 | 
|  | 
| 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. | 
|  | 
| « 1 »  2 3 4 |