Program liczący srednią ważoną

0

Hej, chce napisać program który będzie pobierał z pliku oceny z wagami z 10 różnych przedmiotów i będzie liczył ich średnią ważoną. Niestety mój program nie działa do końca tak jak powinien.

#include <iostream>
#include <stdio.h>
#include <fstream>

using namespace std;

int main()
{
    fstream odczyt;
    fstream zapis;
    float a,b, waga, ocena, waga_max=0,wazona=0,wazona_max;


    odczyt.open("dziennik.txt", ios:: in);
    zapis.open("wazonamax.txt", ios:: out);

    for(int i=0; i<10; i++){
                  odczyt >> a;
                  odczyt>> b;

        for(int j=0; j<10; j++){


                    waga_max=waga_max+b;


        wazona= wazona+(a*b);

        }

 wazona_max = wazona/waga_max;
    printf("twoja srednia to %.*f \n",2, wazona_max);

    }





    odczyt.close();
    zapis.close();

    return 0;
}
3

Niestety mój program nie działa do końca tak jak powinien.

To nie jest odpowiedni opis problemu. Napisz, co konkretnie się dzieje. Skoro oczekujesz od nas pomocy, to chociaż wykaż minimum zaangażowania i napisz coś więcej, niż jedno zdanie, z którego zresztą za wiele nie wynika :P

0

@cerrato: Mianowicie problem leży w tym że wynik(wazona_max) powinien liczyć się za pętlami bo inaczej są zle wyniki, zapis musi być pod nim, wtedy natomiast wynik wyświetla się raz a nie 10.

2

Czamu ma służyć druga pętla for?

for(int j=0; j<10; j++)

Twój kod robi za dużo, ma rzeczy które nie są używane, albo robią coś bezsensu.
Weź wyczyść wszystkie śmieci i pozywaj zmienne tak by tłumaczyły czemu służą.

0

@MarekR22: Oceny z wagami są w pliku tekstowym 5 ocen i 5 wag na zmiane, jest 10 linijek kazda to inny przedmiot.

2
bardzofajnaosobaaa napisał(a):

@MarekR22: Oceny z wagami są w pliku tekstowym 5 ocen i 5 wag na zmiane, jest 10 linijek kazda to inny przedmiot.

Zgaduję że odczyt powinien być w maksymalnie wewnętrznej pętli. Wtedy będziesz czytać 10 przedmiotów po 10 ocen każdy

0

@KamilAdam: niestety probowałam i to nie było to

4
bardzofajnaosobaaa napisał(a):

@KamilAdam: niestety probowałam i to nie było to

To oznacza dwie rzeczy:

  • W tym kodzie jest więcej błędów (pomijając odczyt w złym miejscy, złe formatowanie i bezsensowne nazwy)
  • Nie masz pojęcia co robisz i strzelasz na oślep

Popraw formatowanie i nazwy na sensowne oraz przenieś odczyt do wewnętrznej pętli na początek, a potem omyślimy co dalej

BTW jeśli par ocen i wag jest pięc to wewnętrzna pętla powinna liczyć do 5 a nie do 10
BTW2 Zrób najpier wersję dla jednego przedmiotu z tylko jedną pętlą

1

Może zacznij od podania przykładowego pliku dziennik.txt

0

@_13th_Dragon:
3 2 5 1 5 2 6 1 1 2
4 3 4 2 4 1 5 2 5 2
2 3 6 3 5 2 2 3 1 1
5 2 1 1 2 1 6 2 6 1
6 1 2 2 5 2 5 2 1 3
1 2 4 1 3 3 6 3 3 1
4 1 6 1 5 2 2 1 1 3
5 2 5 3 1 3 6 3 4 1
5 3 3 1 5 2 5 1 1 3
6 2 2 1 6 2 6 3 2 1

0

Moment to gdzie tu oceny a gdzie wagi?

0

@_13th_Dragon: na zmiane

0

No to masz już odpowiedź, tak przy okazji na przyszłość - to czego ty nie wiesz, dane dopowiedzą.

0

@_13th_Dragon: @MarekR22:
obawiam się niestety ze są tu użyte rzeczy o których się nie uczyłam i moj nauczyciel tego nie zaakceptuje.

0

To co masz "nowego" w porównaniu do twego kodu?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.