CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Tablica ze zmiennym porządkiem liczb

Tablica ze zmiennym porządkiem liczb

dział ogólny

Tablica ze zmiennym porządkiem liczb

Nowy postprzez Cyfrowy Baron » niedziela, 10 kwietnia 2011, 15:43

Mam taką tablicę:

KOD cpp:     UKRYJ  
int tab[] = {1, 2, 3 4};


Do tego dochodzi zmienna, która może przyjąć jedną z czterech wartości występujących w tablicy, i jest wprowadzana do tablicy, ale zawsze jako pierwszy element tej tablicy, czyli:

KOD cpp:     UKRYJ  
int i = 2;
int tab[] = {i, 2, 3, 4};


Nie mam pomysłu jak zmienić porządek liczb, by się nie powtarzały, czyli - jeżeli zmienna przyjmuje wartość 2, to w tablicy na miejsce elementu o numerze 2 pojawia się wartość 1, gdyż 2 zostało przesunięte na pierwszą pozycję, czyli:

KOD cpp:     UKRYJ  
int i = 2;
int tab[] = {i, 1, 3, 4};


Gdyby zmienna miała wartość 3, to porządek w tablicy powinien być taki:

KOD cpp:     UKRYJ  
int i = 3;
int tab[] = {i, 1, 2, 4};


a gdyby wartość wynosiła 4 to taki

KOD cpp:     UKRYJ  
int i = 4;
int tab[] = {i, 1, 2, 3};


Mogę to zdefiniować na sztywno w bloku switch, co nie jest zbyt skomplikowane, gdy tablica ma określoną liczbę elementów, problem pojawia się przy dynamicznej tablicy.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Tablica ze zmiennym porządkiem liczb

Nowy postprzez Slynx » niedziela, 10 kwietnia 2011, 18:33

Nie wiem dokładnie o co Ci chodzi, ale gdybym ja miał wypełniać tablicę o nieznanej wielkości liczb, zakładając że pierwszy element jest elementem niepowtarzalny w granicach tablicy, a reszta jest posortowana rosnąco zrobiłbym to tak... po prostu, tj:

KOD cpp:     UKRYJ  
 int i = 5; //numer jaki przybierze pierwszy elment, czyli te Twoje i
 int x =0; // nwm
 int rozmiar = 20; //tablica 20 elementowa
int temp = 1; // zaczynamy od 1, nie od zera !
array< int^ >^ tab = gcnew array<int^>(rozmiar); //tablica
for each(int ^%n in tab) // tutaj nadaje im kolejne wartości, żeby potem można było to ułożyć
{
        n = temp;
        temp++;
}
x = i; // dodatkowe przechowanie
i = tab->IndexOf(tab, i); // funkcja podaje pierwsze wystąpienie i w ciągu, czyli i (nie i + 1);
tab[i] = tab[0]; // zamiana
tab[0] = -1; // przypisanie 1 liczbnie w ciągu wartości która po sortowania zawsze będzie pierwsza
tab->Sort(tab); // sortowanie
tab[0] = x; // .. i przypisanie Twojego i do 1 elementu.
//
// Efektem będzie ciąg liczb (5, 1, 2, 3, 4, 6, 7...)


Ja wiem, że to może tak trochę do d***, ale algorytmika nie jest moją mocną stroną, a gdybym miał taki problem jak Ty, to tak bym to zrobił.
Ostatnio edytowano niedziela, 10 kwietnia 2011, 19:01 przez Cyfrowy Baron, łącznie edytowano 1 raz
Powód: Dla kodu używamy tagów [cpp] kod [/cpp]
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Tablica ze zmiennym porządkiem liczb

Nowy postprzez Cyfrowy Baron » niedziela, 10 kwietnia 2011, 18:42

Nie chodzi o wypełnianie tablicy liczbami, lecz o zmianę porządku liczb w oparciu o wartość zmiennej. Przeczytaj jeszcze raz mój post.

Znalazłem już sposób z pętlą, ale jest niewydajny, więc oczekuję lepszych rozwiązań.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Tablica ze zmiennym porządkiem liczb

Nowy postprzez Slynx » niedziela, 10 kwietnia 2011, 19:28

No to nie rozumiem. Chcesz traktować całą tablicę jako zbiór niepowtarzalnych liczb, przy czym "i" zawsze pozostaje na pierwszym miejscu, a reszta ... jest w jakiś sposób uporządkowana ? Trochę nieprecyzyjnie się wyraziłeś, bo w przykładach ustawiałeś liczby rosnąco.

//
Albo najlepiej pokaż ten swój kod, to wtedy będę wiedział co miałeś na myśli i będzie można się zastanowić nad optymalizacją, zamiast głowić się nad zrozumieniem problemu.
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Tablica ze zmiennym porządkiem liczb

Nowy postprzez Cyfrowy Baron » niedziela, 10 kwietnia 2011, 21:57

Slynx napisał(a):Trochę nieprecyzyjnie się wyraziłeś, bo w przykładach ustawiałeś liczby rosnąco.


No nie zupełnie. Zmienna zawsze jest na pierwszej pozycji, a kolejne elementy tablicy to kolejne liczby licząc od 1, ale bez zmiennej. Przecież przykłady wyraźnie to obrazują.

Slynx napisał(a):Albo najlepiej pokaż ten swój kod, to wtedy będę wiedział co miałeś na myśli i będzie można się zastanowić nad optymalizacją, zamiast głowić się nad zrozumieniem problemu.


Kod już pokazałem, ni mniej, ni więcej. Zmienna + tablica.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Tablica ze zmiennym porządkiem liczb

Nowy postprzez polymorphism » poniedziałek, 11 kwietnia 2011, 09:44

Cyfrowy Baron napisał(a):Znalazłem już sposób z pętlą, ale jest niewydajny, więc oczekuję lepszych rozwiązań.

Lepszych nie będzie. Jeśli mowa o tablicach z nieokreśloną liczba elementów, to innego sposobu niż z pętlą po prostu nie ma.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Tablica ze zmiennym porządkiem liczb

Nowy postprzez Slynx » poniedziałek, 11 kwietnia 2011, 11:47

Cyfrowy Baron napisał(a):No nie zupełnie. Zmienna zawsze jest na pierwszej pozycji, a kolejne elementy tablicy to kolejne liczby licząc od 1, ale bez zmiennej. Przecież przykłady wyraźnie to obrazują.

No to mój kod robił dokładnie to samo. Ustawiał na pierwszej pozycji tą zmienną, a resztę liczb (wykluczając zmienną) sortował rosnącą.
Jak pokazywałem, że wypełniam tablicę kolejnymi liczbami to to był jedynie przykład bym miał na czym pracować.
Zresztą, już nieistotne, bo widzę, że masz rozwiązanie.
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome


  • 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ł: Google [Bot] i 14 gości

cron