Tablica 2-wymiarowa (wiersz o największej sumie, usunięcie wyznczonego wiersza i kolumny).

0

Witam,
mam za zadanie utworzyć kasę Tablica, której obiektami są 2-wymiarowe tablice. Mam problem z utworzeniem tych oto dwóch metod:

  • znalezienie wiersza o maksymalnej sumie wartości elementów, wyświetlenie n-ru wiersza i sumy

*usuwa z tablicy wiersz i kolumnę wyznaczone przez położenie elementu maksymalnego (we wcześniejszej metodzie trzeba było wyznaczyć maksymalną liczbę w tablicy oraz jej indeks)

Czy ma ktoś jakiś pomysł jak się do tego zabrać?Parę tygodni temu dopiero zaczęłam uczyć się Javy i nie znam się na rzeczy. Bardzo proszę o pomoc ;)

ps.nie mogę używać żadnych klas

0

Rozumiem, że jesteś początkujący, ale to jest napisane masło maślane...

Masz napisać klasę Tablica której obiektami są 2 wymiarowe tablice, ale nie możesz używać klas??? Bez sensu
Podejrzewam, że chodzi o to abyś się nauczył iterować pętle for w pętli for.
Co ma się znajdować w tablicy, inty?
Wklej treść zadania.

0

4B7DA9A7-C273-421A-B8A6-9E53B4B45495.jpeg

1

Prześlij swój kod, bo ja nie czaje o co autorowi chodzi.

Co to metody: znalezienie wiersza o maksymalnej sumie wartości elementów, wyświetlenie n-ru wiersza i sumy
int sum, maxSum, index;
for (int i = 0; i < rowSize(); i++) {
for (int j = 0; j < colSize(); j++) {
sum+=tablica[i][j];
}
if (sum>maxSum){maxSum=sum; index=i;}
}

0

Czy może ktoś wrzucić implementację pierwszego zdania z tego zadania?

Zdefiniować klasę Tablica2, której obiektami są 2-wymiarowe tablice

0

Nie wiem czy w Javie też się używa podobnych rzeczy:

kod w C#

    public class Tablica2<T>
    {
        private T[,] tab;

        public T this[int x, int y]
        {
            get { return tab[x,y]; }
            set { tab[x,y] = value; }
        }
    }

W tym zadaniu (tak mi się wydaje) chodzi o to żeby utworzyć taką klasę, która po utworzeniu jej instancji będzie tworzyła tak jakby tablicę dwuwymiarową, tak jak mamy np. kolekcje które są zwyczajnymi klasami a używa się ich jakby były tablicami. Literka T oznacza typ jaki będzie przechowywany w tablicy (mamy tu do czynienia z pojęciem typów generycznych) i określa się go przy tworzeniu obiektu tej klasy

Tablica2<int> tmpTab = new Tablica2<int>();//Oczywiście trzeba napisać jakiś kontruktor, żeby wypełnić naszą prywatną tablicę

No i w ciele klasy mamy zdefiniowany indeksator dzięki, któremu będziemy mogli pobierać dane z tej tablicy stosując taki zapis

tmpTab[0,0] = 10;

Nie wiem z czego to zadanie i jaki ktoś ma mieć poziom, ale tylko takie coś przychodzi mi do głowy. Jak czytam to zadanie to chyba właśnie o to chodzi, że w swoim wnętrzu ma mieć 2 wymiarową tablicę, o indeksatorze nie ma nic wspomniane więc można by go pominąć.

2

Ad. 1 znalezienie wiersza o maksymalnej sumie wartości elementów, wyświetlenie n-ru wiersza i sumy

            int sum = 0, maxSum = 0, index = 0;          

            for (int i = 0; i < rowSize; i++)
            {
                sum = 0;
                for (int j = 0; j < colSize; j++)
                {
                    sum += tablica[i][j];
                }
                if (sum > maxSum) { maxSum = sum; index = i; }                
            }

            //Wyświetlenie wiersza
            for (int i = 0; i < colSize; i++)
            {
                // Funckja wyświetlajaca: tablica[index][i];
            }
            //Wyświetlenie sumy: "Suma elementów:" + maxSum;

Ad. 2 usuwa z tablicy wiersz i kolumnę wyznaczone przez położenie elementu maksymalnego

 // int indexMaxValCol, indexMaxValRow; //zmienne które wyznaczyłaś wcześniej z którejś tam metody
           
            int[][] tmpTab = new int[rowSize-1][colSize-1];
            
            int index1 = -1, index2 = -1;

            for (int i = 0; i < rowSize; i++)
            {                
                if (i == indexMaxValRow) { continue; }

                index1++;
                index2 = -1;

                for (int j = 0; j < colSize; j++)
                {                    
                    if (j == indexMaxValCol) { continue; }

                    index2++;

                    tmpTab[index1, index2] = tablica[i, j];
                }
            }

            tablica = tmpTab;
0

Albo w klasie Tablica2 deklarujesz dwa pola typu int, które będą przechowywały indeks(wiersz, kolumna) dla maksymalnej wartości i potem w tej metodzie z zadania 5 przypisujesz im wartość, no i później w metodzie z zadania 10 używasz tych pól. Drugi sposób to np. utworzyc sobie nowy typ, który będzie zawierał pola X,Y oraz value(żeby mieć to wszystko ładnie pogrupowane), w tej klasie (Tablica2) deklarujesz pole tego typu i w metodzie tej z zad 5 tworzysz go, ustawiasz mu wartości. No a potem w tej metodzie z zadania 10 bierzesz odczytujesz wartości z tego pola. Mogłabys też po prostu zwracać ten obiekt z tymi 3 polami. Wgl. żeby dobrać się do tych wartości to w metodzie z zadania 10 musisz najpierw wywołać metodę z zadania 5.

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