Algorytm -> Wyliczanie średniej ważonej...

0

A więc mam już troszkę kodu programu, który składa się z dynamicznej tablicy(Rozmiar zależy od użytkownika), którą wypełnia się poszczególnymi ocenami z sprawdzianów, kartkówek i reszty. Poza tym użytkownik wybiera daną "wagę" dla sprawdzianów, kartkówek i reszty. Konsola się czyści i chciałbym, żeby na ekran została wyświetlona średnia ważona. Długo nad tym się głowiłem jak obliczyć średnią, jednak doszedłem do wniosku, że bez algorytmu nie dam rady. Szukałem troszkę w internecie jednak nic nie znalazłem. Liczę na waszą pomoc. Pozdro.

PS:Używam języka C++.

0

po pierwsze to musisz wiedzieć które oceny w tej tablicy to kartkówki, sprawdziany, itp.

ja bym to chyba zrobił za pomocą tablicy struktur. W Takie strukturze można przechowywać ocenę i index wagi

 
typedef stuct ocena
{
   float ocena;
   int wIndex;
};

wagi[3];// kartkówki,sprawdziany, ...
oceny[N];

0

chyba sobie żartujesz z tym szukaniem algorytmu: https://secure.wikimedia.org/wikipedia/pl/wiki/%C5%9Arednia_wa%C5%BCona

0

Ok dzięki za pomoc udało mi się napisać programik, co prawda jest trochę chaotycznie napisany, ale to był "spontan" i jutro go dopracuję i uporządkuję..:D

Dla ciekawskich:P:

#include <iostream>
#include <iomanip>
#include <conio.h>

using namespace std;



int main(void)
{    
     /*Deklaracja potrzebnych tablic dynamicznych oraz różnych typów..*/
     
     
     int *spr;
     int *kart;
     int *reszta;

     int rozmiar,s,k,r;//typy zmiennych do ustalenia rozmiaru tablic
     float wspr,wkart,wreszta,wynikspr,wynikkart,wynikreszta;//typy zmiennych do ustalenia wagi ocen..
     
     cout<<"Program zostal stworzony do liczenia sredniej wazonej.\n\n\nNa poczatku nalezy ustalic \"wage\" -> ";
     cout<<"(Czyli ilosc % dla poszczegolnych ocen).\n";
     
     
     getch();
     
     system("cls");
     
     
     
    
    cout<<"Ustal \"wage\" dla sprawdzianow oraz prac klasowych - (Standardowo wynosi \"3\"): ";
    cin>>wspr;
    
    
    cout<<"Ustal \"wage\" dla kartkowek - (Standardowo wynosi \"2\"): ";
    cin>>wkart;
    
    
    cout<<"Ustal \"wage\" dla zadan domowych, odpowiedzi, prac w grupie itp - \n(Standardowo wynosi \"1\"): ";
    cin>>wreszta;
    
    
    
    
    //Stworzenie dynamicznej tablicy do wprowadzenia ilości ocen..

    cout<<"\n\nIle posiadasz ocen z sprawdzianow\? - (Wprowadz dana ilosc): ";
    cin>>s;
    
    
    cout<<"Ile posiadasz ocen z kartkowek\? - (Wprowadz dana ilosc): ";
    cin>>k;
    
    
    cout<<"Ile posiadasz ocen z zadan domowych, odpowiedzi, prac w grupie itd\? - (Wprowadz dana ilosc): ";
    cin>>r;
    
   
    
    
    spr=new int [s];
    kart=new int [k];
    reszta=new int [r];
      
   getch();
   
   system("cls");
   
   //Pętle do while do wprowadzania ocen do tablicy..
   int i = 0;
   
   cout<<"Wprowadz swoje oceny z sprawdzianow: \n";
   
   for(i=0;i<s;i++)
   { 
     
     
     cout<<"- ";
     cin>>spr[i];
     
   } 
   
   cout<<"\nWprowadz swoje oceny z kartkowek: \n";
   
   i = 0;
   
   for(i=0;i<k;i++)
   { 
     
    
     cout<<"- ";
     cin>>kart[i];
     
   }
   
    
   i = 0;
   
   cout<<"\nWprowadz swoje oceny z innych rodzajow zadan: \n";
   
   for(i=0;i<r;i++)
   { 
     
     
     cout<<"- ";
     cin>>reszta[i];
     
   }
   
   //Wyliczenie średniej ważonej..
   
   getch();
   
   system("cls");
   
   cout<<"Twoja srednia wazona wynosi: ";
     
     
   
   wynikspr=0;
   wynikkart=0;
   wynikreszta=0;
   
   
   /*Pętle do sumowania ocen z poszczególnych tablic..*/
  
      for(i=0;i<s;i++)
  {  
  
     wynikspr+=spr[i];
  }
     
     
      for(i=0;i<k;i++)
  {  
  
     wynikkart+=kart[i];
  }
     
     
     for(i=0;i<r;i++)
  {  
  
     wynikreszta+=reszta[i];
  }
     
  /*Mnożenie wyniku przez "wagę" dla danych ocen -> Suma iloczynu wagi*ocen..*/
       float sumaocen;
      sumaocen+=wynikspr*wspr+wynikkart*wkart+wynikreszta*wreszta; 
      
  /*Mnożenie wyniku przez "wagę" dla danych ocen -> Suma iloczynu wagi*ocen..*/
      float sumawag;
      sumawag+=wspr*s+wkart*k+wreszta*r;
      
 /*Obliczanie średniej ważonej..*/
     cout<<sumaocen/sumawag;                                    
 
 /*Zwalnianie pamięci zajętej przez wszystkie tablicę, które użyliśmy...*/
    delete[] spr;
    delete[] kart;
    delete[] reszta;
     
  
    
   getch();
   
   
}  



1 użytkowników online, w tym zalogowanych: 0, gości: 1