• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wyliczanie centroidow

Object Storage Arubacloud
0 głosów
143 wizyt
pytanie zadane 27 stycznia 2021 w C i C++ przez hicodyn Początkujący (420 p.)
edycja 27 stycznia 2021 przez hicodyn

Mam vector struktur Punkt

struct punkt
{
	std::vector<double> wspolrzedne;
	int nrKlastra{};
};

każdemu punkt w przestrzeni d-wymiarowej jest przypisany do jednego klastra/ jednej grupy. Chodzi o to, aby wśród każdego klastra wyliczyć centroid dodając do siebie poszczególne współrzędne, a następnie dzieląc przez liczbę punktów. 

Przykład dla dwóch punktów 3- wymiarowych:

A = [2, 3, 5] B= [6, 3, 7]    ====> centroid dla nich to bedzie C[ 4, 3, 6 ]

Za każdym razem jednak wyrzuca mi błąd i nie za bardzo wiem jak to zrobić ani co robię źle, bo program przed kompilacją żadnych błędów nie pokazuje. Tutaj jest kod funkcji

std::vector<punkt> newCentroidy(std::vector<punkt> vectorCentroidow, std::vector<punkt> vectorPunktow, daneWejsciowe przelaczniki)
{
    std::vector<punkt> vectorCentr;
    std::vector<int> lPuntow{};
    std::vector<std::vector<double>> suma{};

    for (int i = 0; i < przelaczniki.k; i++)
    {
        for (int j = 0; j < vectorPunktow.size(); j++)
        {
            for (int k = 0; k < przelaczniki.d; k++)
            {
                if (vectorPunktow[j].nrKlastra == i)    //jezeli nrKlastra j-tego punktu to i
                {
                    lPuntow[i] += 1;
                    suma[i][k] += vectorPunktow[j].wspolrzedne[k];
                }
            }
        }
    }

    return vectorCentr;
}

przelaczniki, to strutura ktora przechowuje m.in informacje o tym ilo wymiarowe sa punkty (przelaczniki.d).

Kod nie jest dokończony, bo już na tym etapie są jakieś błędy

komentarz 27 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
1. Jakie błędy Ci wyrzuca?
2. Masz UB
komentarz 27 stycznia 2021 przez hicodyn Początkujący (420 p.)
Z UB nie wiem o co chodzi, a błąd dodałam do pytania
komentarz 27 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
UB to undefined behaviour, czyli w skrócie ani kompilator, ani program, ani nawet wróżbita Maciej nie odpowiadają za to co się może stać. Proba dostępu poza tablicę to UB.

1 odpowiedź

0 głosów
odpowiedź 27 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Używasz operatora [] na vectorze, jednak Twój vector ma rozmiar 0 (a w zasadzie Twoje vectory). Musisz użyć konstruktora przyjmującego size_t, którym skontruujesz vectory.
komentarz 27 stycznia 2021 przez hicodyn Początkujący (420 p.)
a mógłbyś powiedzieć trochę dokładniej w jaki sposób to zrobić?

Podobne pytania

0 głosów
2 odpowiedzi 1,240 wizyt
pytanie zadane 19 grudnia 2017 w C i C++ przez zpawlo00 Początkujący (310 p.)
+1 głos
1 odpowiedź 353 wizyt
pytanie zadane 13 grudnia 2020 w C i C++ przez dominguezik Nowicjusz (160 p.)
0 głosów
1 odpowiedź 8,493 wizyt
pytanie zadane 21 września 2015 w C i C++ przez veryhotshark Obywatel (1,620 p.)

92,655 zapytań

141,543 odpowiedzi

319,959 komentarzy

62,024 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...