Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Podwójna tablica dynamiczna C++/CLI w Visual C++

lukagrom 26 Cze 2017 18:24 606 3
  • #1 26 Cze 2017 18:24
    lukagrom
    Poziom 15  

    Założyłem stworzenie dwóch podwójnych tablic [10][10], przypisanie im losowych wartości, a następnie posortowanie. Sprawa w C++ banalna. Jednak postanowiłem spróbować to wedle wzorców środowiska Visual C++ i pojawił się mały problem.

    Deklaracja tablic:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Inicjowanie tablic:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Przypisanie losowych wartości:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    I następnie chciałbym posortować dane w tych tablicach poprzez użycie następującej funkcji sortującej:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Błąd wyskakuje mi przy sortowaniu:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jeżeli używam tradycyjnych tablic C++ statycznych (int tab[10][10], czy tworzonych dynamicznie (int **tab), tego błędu przy sortowaniu nie ma.
    Komunkat kompilaora:
    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    [/code]

    Dodano po 37 [minuty]:

    Zmieniłem nagłówek funkcji sortującej (mając na celu dostosowania typu danych do zadeklarowanych wcześniej tablic)
    Kod: c
    Zaloguj się, aby zobaczyć kod


    na

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nadal wyskakuje ten sam błąd.

    0 3
  • #2 29 Cze 2017 00:55
    lanzul
    Poziom 21  

    lukagrom napisał:

    Kod: c
    Zaloguj się, aby zobaczyć kod
    lukagrom napisał:
    error C3262: invalid array indexing: 1 dimension(s) specified for 2-dimensional 'cli::array<Type,dimension> ^'

    Na wstępie przepraszam kolegę, jeśli to co piszę, okaże się bzdurami ... :-\ ... nie mam ż a d n e g o doświadczenia w plusach ... pojedynczych, podwójnych, itd., ale w porównaniu z sortowaniem (bąbelkowym) w takim 'prościakowym' vb, to widzę tu wyraźną różnicę, i to nie wynikającą z przeciwnych przyrównań indeksów tabeli - u kolegi idzie od góry do dołu:
    Kod: vba
    Zaloguj się, aby zobaczyć kod

    W pętli, wykonywanej u kolegi według 'j', nie ma w ogóle zmiennej 'i', 'stałej' przez cały czas wykonywania operacji na 'j', a tworzącej indeks do 'wymiany' wartości wewnątrz tabeli, zaś cały czas następuje zmiana 'j', zmniejszanie.
    Według mnie nie następuje 'wymiana sortująca' pomiędzy indeksami tabeli, brak sortowania, a gdy 'j' zmieni się na '1', to wtedy 'j-1' wyjdzie poza dopuszczalny zakres.

    0
  • #3 29 Cze 2017 05:01
    lukagrom
    Poziom 15  

    Algorytm sortowania jest prawidłowy. Zresztą uzylem go w tej aplikacji, ktorej kod znajduje sie tutaj - http://l077.blogspot.com/2017/06/manipulation-of-data-in-dynamic-tables.html" target="_blank" rel="nofollow" class="postlink ">Link
    Kwestia rozbija sie o podwojne tablice dynamiczna, ktora w tradycyjnym C++ ma ksztalt

    Kod: c
    Zaloguj się, aby zobaczyć kod
    , a w tym Visual C++,ktorego jezykiem jest dziwaczny C++/CLI ksztalt tablicy to
    Kod: c
    Zaloguj się, aby zobaczyć kod
    .

    0
  • #4 29 Cze 2017 10:58
    lanzul
    Poziom 21  

    lukagrom napisał:
    ... a w tym Visual C++,ktorego jezykiem jest dziwaczny C++/CLI ksztalt tablicy to ... zmienna[x,y]...

    lukagrom napisał:
    error C3262: invalid array indexing: 1 dimension(s) specified for 2-dimensional 'cli::array<Type,dimension> ^'

    Może właśnie tu leży przyczyna (?) ... brak drugiej koordynaty w tablicy dwuwymiarowej ... jeśli 'konstrukcja' jest typu 'zmienna(x,y)', to sortowanie chyba raczej powinno wyglądać, tak:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo