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

wyliczanie centroidow

VPS Starter Arubacloud
0 głosów
136 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,220 wizyt
pytanie zadane 19 grudnia 2017 w C i C++ przez zpawlo00 Początkujący (310 p.)
+1 głos
1 odpowiedź 337 wizyt
pytanie zadane 13 grudnia 2020 w C i C++ przez dominguezik Nowicjusz (160 p.)
0 głosów
1 odpowiedź 8,281 wizyt
pytanie zadane 21 września 2015 w C i C++ przez veryhotshark Obywatel (1,620 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...