JavaRush /Java Blog /Random-TK /Bir ölçegli we iki ölçegli massiwler bilen baglanyşykly m...
Анзор Кармов
Dereje
Санкт-Петербург

Bir ölçegli we iki ölçegli massiwler bilen baglanyşykly meseleleri çözmek

Toparda çap edildi
Bu makalada massiwler bilen baglanyşykly meselelere serediler (we esasanam garaşsyz derňewi üpjün eder). Aşakdaky ugurlarda başarnyklarymyzy ösdüreris:
  1. Bir ölçegli massiwler

    1. Meseleler “Yzygiderliligi dowam etdiriň” ;
    2. Gözleg meselelerini ýerine ýetirmek;
    3. Toplum elementlerini tertiplemek bilen baglanyşykly meseleler.
  2. Iki ölçegli massiwler

    1. Wezipeler “Formanyň matrisasyny gurmak” ;
    2. Wezipeler “Iň garaşylmadyk ýerlerde elementleri tapyň (hatar, sütün, diagonal)” ;
    3. Gämileri suw söweşi üçin tertipläň .
Problemshli meseleler üçin bitewi sanlary ulanarys. Meseleleri bir ölçegli we iki ölçegli massiwlerde çözýäris - 1

Bir ölçegli massiwler bilen baglanyşykly meseleler

Yzygiderliligi dowam etdiriň

Bu meseleleriň tapgyrynda size zerur bolar:
  1. Bu ýa-da san yzygiderliliginiň haýsy görnüşini emele getirýändigini kesgitläň.
  2. Berlen yzygiderliligiň ilkinji N elementlerini bitewi massiw hökmünde emele getirýän we massiw elementlerini ekranda görkezýän funksiýa ýazyň.
Aşakdaky san seriýasyny dowam etdirmek meselesi bilen ýüzbe-ýüz bolalyň:

1, 2, 3, 4, 5…
1-nji ädim: nagşy kesgitläň. Bu ýerdäki hemme zat başlangyç - bu tebigy sanlaryň tapgyry. 2-nji ädim: Berlen hataryň ilkinji N elementlerini massiw hökmünde emele getirjek bir funksiýa ýazyň:
public class Main {

    public static void main(String[] args) {
        System.out.println(Arrays.toString(createArrayOfIntegers(10)));

        // Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    }

    public static int[] createArrayOfIntegers(int n) {
        int[] array = new int[n];
        for (int i = 1; i <= n; i++) {
            array[i-1] = i;
        }

        return array;
    }
}
Şonuň ýaly-da, aşakdaky yzygiderliligi dowam etdirjek funksiýalary ýazmak zerurdyr:

A. 2,  4,  6,   8,  10...
B. 1,  3,  5,   7,   9...
C. 1,  4,  9,  16,  25...
D. 1,  8, 27,  64, 125...
E. 1, -1,  1,  -1,   1,  -1...
F. 1, -2,  3,  -4,   5,  -6...
G. 1, -4,  9, -16,  25....
H. 1,  0,  2,   0,   3,   0,  4....
I. 1,  2,  6,  24, 120, 720...
J. 1,  1,  2,   3,   5,   8, 13, 21…

Elementleri gözläň

Bu meseleleriň tapgyrynda, käbir aýratynlyklara eýe bolan taýýar massiwde element tapmaly. Mysal üçin, iň ýokary bahasy bolan element. Görkezmek üçin, geliň, bir massiw alýan we massiwdäki iň ýokary elementiň indeksini kesgitleýän bir funksiýa üçin kod ýazalyň, soňra bolsa bu elementi indeks bilen bilelikde konsola çykaralyň. java.util.concurrent.ThreadLocalRandomŞeýle hem, synpy ulanyp, tötänleýin elementlerden ybarat belli bir uzynlygyň bitewi massiwini nädip çalt döredip boljakdygyny görkezerin :
public class Main {

    public static void main(String[] args) {
        int[] array = generateRandomIntArray(10);
        findMax(array);

        /*
        Output:
        Generated random array: [50551934, -551646189, 410352642, 1822778873, -1744293692, -1140287711, 878876868, -2116893120, -797503442, -703924530]
        Max element is [1822778873] with index [3]
        */

    }


    public static int[] generateRandomIntArray(int n) {
        int[] array = ThreadLocalRandom.current().ints().limit(n).toArray();
        System.out.println("Generated random array: " + Arrays.toString(array));
        return array;
    }

    public static void findMax(int[] array) {
        int maxIndex = 0;
        int max = array[maxIndex];
        for (int i = 1; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
                maxIndex = i;
            }
        }

        System.out.println(String.format("Max element is [%d] with index [%d]", max, maxIndex));
    }
}
Indi wezipeleriň özleri. Tötänleýin bitewi elementleriň toplumyndan tapmaly:
  1. Maksimum.
  2. Minimum.
  3. Ortaça.
  4. Iň ýokary we iň az elementleriň arasyndaky elementleriň sany.
  5. Ilkinji esasy san.
  6. Iň soňky san.
  7. Toplumdaky esasy sanlaryň sany.
Bahasyny we indekslerini hem görkezip bilersiňiz. Gözleýän elementiňiz ýok bolsa, amatly ýagdaýda ekranda görkeziň. Iň soňky mesele üçin ýokarlanýan tertipde tertiplenen bitewi elementleriň toplumyny taýýarlamaly. Bu massiwde, iň az sanly amalda ( Maslahat ) bahasy boýunça element tapmaly .

Sortirlemek

Meseleleriň bu tapgyrynda dürli sortlaşdyryş algoritmlerini ulanyp, bitewi elementleriň toplumyny tertipleşdirmeli. Internetde dürli algoritmlerde gaty köp material bar. Ilki bilen algoritmiň manysyna düşünmäge synanyşyň, soňra bolsa özüňiz durmuşa geçirmäge synanyşyň. Ilki kagyzda (blok diagrammasy, pseudokod, size laýyk zat), soň bolsa IDEA-da. Implementationerine ýetirmegiň algoritmleri:
  • köpürjik görnüşi;
  • saýlama görnüşi;
  • goýmak görnüşi;
  • görnüşi birleşdirmek.

Iki ölçegli massiwler bilen baglanyşykly meseleler

Matrisa çyzyň

Işleriň indiki tapgyrynda belli bir görnüşde düzülen iki ölçegli massiwleri (matrisalary) çekmek zerur (olar konsola çykyş): olar ýumuş bilen görkezilen nagşa laýyk bolmaly. Size bir mysal bereýin. Formanyň matrisasyny gurmaly we görkezmeli m*n( mhatarlaryň sany nirede we nhatardaky elementleriň sany):

1, 2, 3, 4
5, 6, 7, 8
9,10,11,12
Geliň, biziň üçin hemme zady etjek, şeýle hem matrisany konsola owadan çykarjak bir funksiýa ýazalyň (peýdaly bolup biler):
public class Main {

    public static void main(String[] args) {
        createAndDrawMatrix(3, 4);

    }

    public static void createAndDrawMatrix(int m, int n) {
        int[][] matrix = new int[m][n];

        int value = 1;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                matrix[i][j] = value;
                value ++;
            }
        }

        printMatrix(matrix);
    }

    public static void printMatrix(int[][] matrix) {
        for (int[] array : matrix) {
            for (int anInt : array) {
                System.out.print(String.format("%3d", anInt));
            }
            System.out.println();
        }
    }
}
m*nIndi meseleler: Formanyň matrisasyny görkeziň : 4, 3, 2, 1 8, 7, 6, 5, 12,11,10, 9 ----------- 1, 4, 7 2, 5, 8 3, 6, 9 ----------- 9, 8, 7 6, 5, 4 3, 2, 1 ----------- 12,11,10, 9 8, 7, 6, 5, 4, 3, 2, 1

Elementleri gözläň

Bu bölümde matrisanyň dürli böleklerinde: belli bir sütünde ýa-da belli bir hatarda dürli elementleri gözlemek amala aşyrylmalydyr. Formanyň matrisasy bar diýip pikir edeliň: -1 2 -3 4 -5 6 -7 8 -9 10 -11 12 -13 14 -15 16 -17 18 -19 20 -21 22 -23 24 -25 26 -27 28 -29 30 -31 32 -33 34 -35 Mysal üçin, üçünji hatarda otrisatel elementleriň sanyny tapalyň:
public class Main {

    public static void main(String[] args) {
        int [][] matrix = {
                { -1,   2,   -3,    4,   -5,    6,   -7},
                {  8,  -9,   10,  -11,   12,  -13,   14},
                {-15,  16,  -17,   18,  -19,   20,  -21},
                { 22, -23,   24,  -25,   26,  -27,   28},
                {-29,  30,  -31,   32,  -33,   34,  -35}
        };

        findNegativeCountInRow(matrix, 3);
    }

    private static void findNegativeCountInRow(int[][] matrix, int rowNumber) {
        int negativeCount = 0;
        for (int element : matrix[rowNumber]){
            if (element < 0) {
                negativeCount ++;
            }
        }

        System.out.println("Matrix: ");
        printMatrix(matrix);
        System.out.println(String.format("Has %d negative elements in #%d row ", negativeCount, rowNumber));

    }

    public static void printMatrix(int[][] matrix) {
        for (int[] array : matrix) {
            for (int anInt : array) {
                System.out.print(String.format("%5d", anInt));
            }
            System.out.println();
        }
    }
}
Esasy usuly ýerine ýetirmegiň netijesinde, konsola aşakdakylar çykar:

Matrix: 
   -1    2   -3    4   -5    6   -7
    8   -9   10  -11   12  -13   14
  -15   16  -17   18  -19   20  -21
   22  -23   24  -25   26  -27   28
  -29   30  -31   32  -33   34  -35
Has 3 negative elements in #3 row 
Indi ýumuşlar. Geň zat üçin formanyň nmatrisasyny çap ediň :n*n

1,  -2,  3,  
-4,  5, -6,
7,  -8,  9
Bu matrisadan alyň:
  • ähli negatiw elementler;
  • setirdäki ähli negatiw elementler i;
  • sütündäki ähli negatiw elementler j;
  • ähli diagonal elementler (çep ýokarky burçdan başlap);
  • ähli diagonal elementler (aşaky çep burçdan başlap).

Deňiz söweşi

Teryldyzjyk bilen soňky bölüm: maslahat ýa-da mysal ýok. Matrisalar deňiz söweşi programmirlemek üçin amatlydyr. Bu oýny programmirlemegiň tapgyrlaryndan biri gämileriň oýun meýdançasyna ýerleşdirilmegi. Bu meseleleriň birnäçesini çözseňiz, deňiz söweşini ýeňip geçjekdigiňize arkaýyn boluň. Şeýlelik bilen, noldan ybarat 10x10 matrisa berildi. Deňiz söweşini oýnamak üçin meýdan diýip çaklalyň. Bu ugurda 0 boş öýjük, 1 gämi ýa-da gäminiň bir bölegi. Deňiz söweş oýnunyň düzgünlerine laýyklykda funksiýalary ýazyň, olaryň her biri tötänleýin ýerleşdirilýär:
  • 10 sany bir gatly gämi;
  • 10 sany iki gatly korbals;
  • 5 üç gatly gämi;
  • deňiz söweşi üçin ähli gämileri tertipleýär (4 sany bir gatly, 3 sany iki gatly, 2 sany üç gatly, 1 sany dört gatly).
Bu hemmesi! Islendik programmirleme mowzugynda bolşy ýaly, massiwler hem tejribe arkaly has gowy öwrenilýär. Warmylylyk gutly bolsun!
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION