Przesuwanie danych w tablicach

0

Dzień dobry, Mam 6 tablic. Dane są ułożone do siebie równorzędnie. Chcę posortować 1 tablice. Posortowane dane trafiają do tablicy 1 ale dwuwymiarowej. Jak zrobić żeby zapisać dane znowu równorzędnie?

Takie mam dane w 6 tablicach
g - 4 - ogrod - czeresnie - miod - wisnie
z - 12 - sad2 - truskaawki - poziomki - ogorki
a - 1 - sad - jablka - gruszki - sliwki

A chcę uzyskać takie coś, tylko że w jednej dwuwymiarowej tablicy (sortowanie wg. pierwszej tablicy).
a - 1 - sad - jablka - gruszki - sliwki
g - 4 - ogrod - czeresnie - miod - wisnie
z - 12 - sad2 - truskaawki - poziomki - ogorki

0

przeiterowac po wynikowej tablicy i odpowiedznie dane przepisac do osobnych

0

No czym ma to polegać?

0

Czemu masz 6 tablic, nie możesz mieć jednej? Tak by było bardziej po ludzku.

0

Przerobiłem kod, mam wszystko w jednej.

Mam pytanie. Jak obrócić o 180* dane w tablicy dwuwymiarowej. Mam 8 wymiarów w jednym rzędzie:

string[,] tablica = new string[ilosc,8];

Chcę obrócić tak dane, żeby obróciła mi się ilość a nie dane wewnątrz danego rzędu.

Jak to zrobić?

Próbowałem tak ale obracają mi się dane w drugim wymiarze z 1-8 robi mi się 8-1 :(

for (int i = ilosc_danych_ogolnie - 1; i == 0; i--)
                    {
                        for (int j = 0; j < 9; j++)
                        {
                            tym[licznik,j] = result[i,j];
                            licznik = licznik + 1;
                        }
                    }
0

czyli z tablicy
1 A aaa
2 B bbb
3 C ccc
4 D ddd

chcesz
ddd D 4
ccc C 3
bbb B 2
aaa A 1

?

0

Nie, takie coś chcę uzyskać:

1 A aaa
2 B bbb
3 C ccc
4 D ddd

na

4 D ddd
3 C ccc
2 B bbb
1 A aaa
0

Czyli chcesz posortować odwrotnie?

1

"Mały" OT: temat natchnął mnie do napisania "odwracalnej" tablicy (np. zgodnie z ruchem wskazówek zegara).

    public enum Angle
    {
        None = 0,
        Clockwise90 = 1,
        Reversed = 2,
        CounterClockwise90 = 3
    }

    public class MyArray<T>
    {
        T[,] array;
        Angle Rotation
        { get; set; }

        public MyArray(int width, int height)
        {
            this.array = new T[width, height];
        }

        public MyArray(T[,] array)
        {
            this.array = array;
        }

        public void Rotate(Angle a)
        {
            int rot = (int)Rotation;
            rot += (int)a;
            rot %= 4;

            Rotation = (Angle)rot;
        }

        public int Width
        { get { return array.GetLength(0); } }

        public int Height
        { get { return array.GetLength(1); } }

        public T this[int x, int y]
        {
            get
            {
                switch (Rotation)
                {
                    case Angle.None: return array[x, y];
                    case Angle.Clockwise90: return array[Width - x - 1, y];
                    case Angle.Reversed: return array[Width - x - 1, Height - y - 1];
                    case Angle.CounterClockwise90: return array[x, Height - y - 1];
                    default: return default(T);
                }
            }
            set
            {
                switch (Rotation)
                {
                    case Angle.None: array[x, y] = value; break; ;
                    case Angle.Clockwise90: array[Width - x, y] = value; break; ;
                    case Angle.Reversed: array[Width - x, Height - y] = value; break;
                    case Angle.CounterClockwise90: array[x, Height - y] = value; break;
                }
            }
        }
    }
0

Tak, chcę sortować odwrotnie a nie odwracać dane :)

0

MSN możesz dołączyć komentarz tego kodu.

Czy nie da się prościej tego zrobić :d ?
Czy Array.Sort() można ustawić na sortowanie odwrotne? To bym mi życie ułatwiło bo zanim daje do tablicy dwuwymiarowej to sortuje sobie na boku :D

0
Piotrexx napisał(a)

Czy Array.Sort() można ustawić na sortowanie odwrotne?

Oczywiście. Wystarczy, że podasz odpowiedni IComparer.

http://msdn.microsoft.com/en-us/library/aw9s5t8f.aspx

0

czesc mechanizmow sortujachych moze takze przyjac public delegate int Comparison<T>(T x, T y);
ktory przy nieskomplikowanych sortowaniach jest latwiejszy do zastosowania
np. sortowani eodwrotne tablicy int
int[] tab = new int[] {5,3,2,4,8,7};
Array.Sort(tab, (x, y) => { return -x.CompareTo(y); });

0

Dziękuje wszystkim.
Rozwiązanie z IComparer jest the best :)

PS.
Panowie pomocy jeszcze z jednym a mianowicie z ListView :)
Dlaczego nie mogę pobrać w taki sposób danych o grupie do której przypisany jest Item?

string grupa = listview1.item[i].Group.Header;

Kompiluje się ale gdy się odwołuje to krzyczy, że odwołanie do obiektu bla bla bla...

0

Jak pobrać ten cholerny header?

1

A jesteś pewien że itemowi jest przypisana jakaś grupa? bo na 99.99% Group == null.

1 użytkowników online, w tym zalogowanych: 0, gości: 1