Praca na tabeli

dział ogólny

Praca na tabeli

Nowy postprzez Pitek » czwartek, 3 grudnia 2009, 00:09

Witam ! Mam następujący problem który dotyczy jeszcze tego programu który pisze do obliczania średniej ważonej mianowicie mam kod który wg. mnie powinien szukać 0 lub pustego miejsca w tabeli w odpowiednim przedziale wpisywać daną z wiersza 0 do tablicy po zakończeniu sprawdzania sumować tablicę i odejmować od wszystkich wag. Cel tego jest taki że jeżeli jest sytuacja np. Kogoś nie było w szkole i nie ma oceny więc jest 0 należy to 0 znaleźć i odjąć wartość wagi która jest w wierszu 0 nad tą oceną 0 od sumy wag aby nie zaistaniała taka sytuacja (ocena1=5*waga1=2+ocena2=0*waga2=3)/(waga1+waga2) bo takie działanie wynika ze wzoru na średnią ważoną mi chodzi o to aby wyłapywać w pewnym zakresie tabeli tą ocene 0 i jej wagę znajdującą się nad nią w wierszu 0 odejmować od sumy wag przed podzieleniem aby nie wyszło że ktoś mia same piątki i jedno 0 a dzieli mu się to przez wagę z tej oceny 0 wychodzi mu nagle np. 4,89. Mam nadzieję że kod jeszcze pomoże w zrozumieniu mnie jak nie wszytko jest jasne to pytać co nie jest. Bardzo proszę o pomoc to dla mnie ważne.

Kod: Zaznacz cały
int ACol = Form1->StringGrid1->Col;
int ARow = Form1->StringGrid1->Row;

if( (ACol >= 22 && ACol <= 41) && (ARow >= 1 && ARow <= 38) )
{
  if(Form1->StringGrid1->Cells[ACol][0] == "0" && Form1->StringGrid1->Cells[ACol][0] == "")
  {
   //if(Form1->StringGrid1->Cells[ACol][0]!=0)
   //{
      for(int i=0;i<50;i++)
      {
      b=StrToInt(Form1->StringGrid1->Cells[ACol][0]);
      wyk2[i]=b;
      //a=0;
      }

   //}
  }
}

for(int i=0;i<50;i++)
{
   wyk3=wyk3+wyk2[i];
}
if(wyk3==0)
{
//funkcja licząca !!!!!!!!
wagi=(waga1+waga2+waga3+waga4+waga5+waga6+waga7+waga8+waga9+waga10+waga11+waga12+waga13+waga14+waga15+waga16+waga17+waga18+waga19+waga20);
wynik=(ocena1*waga1+ocena2*waga2+ocena3*waga3+ocena4*waga4+ocena5*waga5+ocena6*waga6+ocena7*waga7+ocena8*waga8+ocena9*waga9+ocena10*waga10+ocena11*waga11+ocena12*waga12+ocena13*waga13+ocena14*waga14+ocena15*waga15+ocena16*waga16+ocena17*waga17+ocena18*waga18+ocena19*waga19+ocena20*waga20)/wagi;
}
if(wyk3!=0)
{
wagi=(waga1+waga2+waga3+waga4+waga5+waga6+waga7+waga8+waga9+waga10+waga11+waga12+waga13+waga14+waga15+waga16+waga17+waga18+waga19+waga20)-wyk3;
wynik=(ocena1*waga1+ocena2*waga2+ocena3*waga3+ocena4*waga4+ocena5*waga5+ocena6*waga6+ocena7*waga7+ocena8*waga8+ocena9*waga9+ocena10*waga10+ocena11*waga11+ocena12*waga12+ocena13*waga13+ocena14*waga14+ocena15*waga15+ocena16*waga16+ocena17*waga17+ocena18*waga18+ocena19*waga19+ocena20*waga20)/wagi;
}
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Praca na tabeli

Nowy postprzez Pitek » czwartek, 3 grudnia 2009, 17:40

Jeszcze raz.
Chodzi mi o to by program mógł obliczać średnią ważoną dla dowolnej liczby ocen i różnych wag(co już zrobiłem i działa) także dla sytuacji gdy brakuje oceny (bo ktoś był chory i jej nie ma) wygląda to tak:

Waga : 1 6 4 5 3
Ocena: 5 2 0 5 1

Matematyczny sposób obliczenia średniej ważona dla przykładu powyżej:
(5*1+2*6+0*4+5*5+1*3)/(1+6+4+5+3) gdzie pogrubiona wartość wagi nie może być brana pod uwagę, ponieważ oceny pod tą wagą nie ma czyli zapisane jest 0.
Zrobiłem obliczenie w programie jak w poście wyżej ale w wyniku obliczania otrzymuje 0. Co zmienić albo jak zapisać poprawnie czy też gdzie umiejscowić kod żeby waga przy ocenie równej 0 nie była brana pod uwagę w obliczeniach średniej ważone za cały semestr.
Myślę że teraz temat jest całkiem zrozumiały.
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Praca na tabeli

Nowy postprzez polymorphism » czwartek, 3 grudnia 2009, 18:49

Dlaczego wagan i ocenan nie są tablicami?

Jedyne co teraz możesz zrobić to:
Kod: Zaznacz cały
wagi = 0;

if(ocena1 > 0)wagi += waga1;

(...)

if(ocena20 > 0)wagi += waga20;
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2171
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 201
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość

cron