Výpis indexů pole – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpis indexů pole – Java – Fórum – Programujte.comVýpis indexů pole – Java – Fórum – Programujte.com

 

K4BlOs
~ Anonymní uživatel
56 příspěvků
11. 11. 2012   #1
-
0
-

Ahoj, mám program který mi hledá na vedlejší diagonále v matici nejmenší a největší prvek. Když mi toto číslo najde tak by mi ho měl vypsat i s těmi indexy pole kde se nachází asi nějak takto

Max. prvek na vedlejsi diagonale:
[0][2] = 7

jak tam mam dostat ty indexy?

Nahlásit jako SPAM
IP: 176.12.115.–
K4BlOs
~ Anonymní uživatel
56 příspěvků
11. 11. 2012   #2
-
0
-

   

import java.util.*;

public class XXX {
	public static Scanner sc = new Scanner(System.in);
	
	//metoda pro vypis matice
	static void vipisMatici (int[][] matice) {
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.format("%3d", matice[i][j]); //vypis matice (do radku)
			}
			System.out.println(); //odradkovani
		}
	}
	
	//metoda pro maximalni prvek
	public static void vedlejsiDiagonalaMax(int[][] matice) {
	    int max = Integer.MIN_VALUE;
	    for (int i = 0;  i < matice.length;  i++) {
	    	if ( matice[i][matice.length-i-1] > max ) {
	    		max = matice[i][matice.length-i-1];
	    	}
	    }
	    System.out.println("Max. prvek na vedlejsi diagonale: " + max);
	  }
	
	//metoda pro minimalni prvek
	public static void vedlejsiDiagonalaMin(int[][] matice) {
		 int min = Integer.MAX_VALUE;
         for (int i = 0; i < matice.length; i++) {
             int hodnota = matice[i][matice.length-1-i];
             if (hodnota < min) min = hodnota;
	    }
	    System.out.println("Min. prvek na vedlejsi diagonale: " + min);
	  }
	
	public static void main(String[] args) {
		System.out.println("Zadej rad matice");
		int n = sc.nextInt(); //urci velikost matice
		int[][] matice = new int [n][n]; //vztvori matici velikosti n
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.print("m[" + i + "]" + "[" + j + "]: ");
				matice[i][j] = sc.nextInt();
			}
		}
		System.out.println("---Vysledky---");
		System.out.println("Byla zadana matice:");
		vipisMatici(matice); //vypise zadanou matici
		vedlejsiDiagonalaMax(matice);
		vedlejsiDiagonalaMin(matice);
	}
}
Nahlásit jako SPAM
IP: 176.12.115.–
reciproke0
Návštěvník
11. 11. 2012   #3
-
0
-

Při průchodu po té diagonále, kde narazíš na "maximum" si ty jeho indexy musíš uložit.

Nahlásit jako SPAM
IP: 82.208.4.–
K4BlOs
~ Anonymní uživatel
56 příspěvků
11. 11. 2012   #4
-
0
-

a půjde to udělat i s metodama pro to max a min číslo tak jak je mám nebo je budu muset celý předělat.

Nahlásit jako SPAM
IP: 176.12.115.–
reciproke0
Návštěvník
11. 11. 2012   #5
-
0
-

a proč by to nešlo, když tam jsi schopný vybrat číslo na určitém místě a porovnat, tak v tu chvíli znáš i ty indexy => můžeš si je uložit.

Nahlásit jako SPAM
IP: 82.208.4.–
TheOndrap+2
Super člen
11. 11. 2012   #6
-
0
-

KIV/PPA1? :D

normálně si do každé metody zaveď

int poz_max, poz_min;

a když budeš aktualizovat ty maxima/minima tak aktualizuješ i poz_max, poz_min

+ to hledání maxima a minima můžeš provédst najednou, nemusíš na to mít 2 metody, ale OK je to cvičnej příklad.

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
K4BlOs
~ Anonymní uživatel
56 příspěvků
11. 11. 2012   #7
-
0
-

ale ja právě vůbec netuším, jak mám zjistit nebo uložit ty indexy toho max/min

Nahlásit jako SPAM
IP: 176.12.115.–
reciproke0
Návštěvník
11. 11. 2012   #8
-
0
-

Třeba na tohle řádku se aktualizuje maximum, když si k tomu uložít to "i" tak máš vyhráno.

max = matice[i][matice.length-i-1];
Nahlásit jako SPAM
IP: 82.208.4.–
TheOndrap+2
Super člen
11. 11. 2012   #9
-
0
-

no tak přece víš, kdy jsi nalezl maximální hodnotu, právě tady:

-- if (hodnota < min) min = hodnota;

-- if (hodnota > max) max = hodnota;

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
TheOndrap+2
Super člen
11. 11. 2012   #10
-
0
-

a v tu chvíli

if (hodnota < min){
	min = hodnota;
	minPozice = i;
}

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
K4BlOs
~ Anonymní uživatel
56 příspěvků
11. 11. 2012   #11
-
0
-

ty indexy mi dělají vždy problémy

stále se mi to nedaří

import java.util.*;

public class XXX {
	public static Scanner sc = new Scanner(System.in);
	
	//metoda pro vypis matice
	static void vipisMatici (int[][] matice) {
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.format("%3d", matice[i][j]); //vypis matice (do radku)
			}
			System.out.println(); //odradkovani
		}
	}
	
	//metoda pro maximalni prvek
	public static void vedlejsiDiagonalaMax(int[][] matice) {
	    int max = Integer.MIN_VALUE;
	    for (int i = 0;  i < matice.length;  i++) {
	    	if ( matice[i][matice.length-i-1] > max ) {
	    		max = matice[i][matice.length-i-1];
	    		int maxPozice = i;
			    System.out.println("Max. prvek na vedlejsi diagonale: ");
			    System.out.println("[" + maxPozice + "] = " + max);
	    	}
	    }
	  }
	
	//metoda pro minimalni prvek
	public static void vedlejsiDiagonalaMin(int[][] matice) {
		 int min = Integer.MAX_VALUE;
         for (int i = 0; i < matice.length; i++) {
             int hodnota = matice[i][matice.length-1-i];
             if (hodnota < min) min = hodnota;
	    		int minPozice = i;
			    System.out.println("Max. prvek na vedlejsi diagonale: ");
			    System.out.println("[" + minPozice + "] = " + min);
	    }
	  }
	
	public static void main(String[] args) {
		System.out.println("Zadej rad matice");
		int n = sc.nextInt(); //urci velikost matice
		int[][] matice = new int [n][n]; //vztvori matici velikosti n x n
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.print("m[" + i + "]" + "[" + j + "]: ");
				matice[i][j] = sc.nextInt();
			}
		}
		System.out.println("---Vysledky---");
		System.out.println("Byla zadana matice:");
		vipisMatici(matice); //vypise zadanou matici
		vedlejsiDiagonalaMax(matice);
		vedlejsiDiagonalaMin(matice);
	}
}
Nahlásit jako SPAM
IP: 176.12.115.–
TheOndrap+2
Super člen
11. 11. 2012   #12
-
0
-

ty to máš  v podstatě dobře a zasekneš se na takový ptákovině :))

public static void vedlejsiDiagonalaMin(int[][] matice) {
	int min = Integer.MAX_VALUE;
        int pozMin = 0;
	for (int i = 0; i < matice.length; i++) {
		int hodnota = matice[i][matice.length-1-i];
		if (hodnota < min){
			min = hodnota;
	    		pozMin = i;
		}
	}
        System.out.println("Max. prvek na vedlejsi diagonale: ");
        System.out.println("[" + pozMin + "]["+matice.lenght()-1-i+"] = " + min);
}

snad by to mělo bejt OK .. v tom if(hodnota < min) v podstatě testuješ, jestli tvoje nalezená hodnota je menší než aktuální, no když je tak je na čase aktualizovat nejmenší hodnotu(min) a v tu chvíli i aktualizuješ hodnotu pozice nejmenšího čísla. (?OK?)

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
K4BlOs
~ Anonymní uživatel
56 příspěvků
11. 11. 2012   #13
-
0
-

Díky moc už jsem to dal dohromady

import java.util.*;

public class XXX {
	public static Scanner sc = new Scanner(System.in);
	
	//metoda pro vypis matice
	static void vipisMatici (int[][] matice) {
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.format("%5d", matice[i][j]); //vypis matice (do radku)
			}
			System.out.println(); //odradkovani
		}
	}
	
	//metoda pro maximalni prvek
	public static void vedlejsiDiagonalaMax(int[][] matice) {
	    int max = Integer.MIN_VALUE;
	    int pozMax = 0;
	    int pozMax2 = 0;
	    for (int i = 0;  i < matice.length;  i++) {
	    	int hodnota = matice[i][matice.length-1-i];
	    	if ( hodnota > max ) {
	    		max = hodnota;
	    		pozMax = i;
	    		pozMax2 = matice.length-i-1;
	    	}
	    }
	    System.out.println("Max. prvek na vedlejsi diagonale: ");
	    System.out.println("[" + pozMax + "][" + pozMax2 + "] = " + max);
	  }
	
	//metoda pro minimalni prvek
	public static void vedlejsiDiagonalaMin(int[][] matice) {
		 int min = Integer.MAX_VALUE;
		 int pozMin = 0;
		 int pozMin2 = 0;
         for (int i = 0; i < matice.length; i++) {
             int hodnota = matice[i][matice.length-1-i];
             if (hodnota < min) {
            	 min = hodnota;
            	 pozMin = i;
            	 pozMin2 = matice.length-1-i;
             }
         }
         System.out.println("Min. prvek na vedlejsi diagonale: ");
         System.out.println("[" + pozMin + "][" + pozMin2 + "] = " + min);
	  }
	
	public static void main(String[] args) {
		System.out.println("Zadej rad matice");
		int n = sc.nextInt(); //urci velikost matice
		int[][] matice = new int [n][n]; //vztvori matici velikosti n x n
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.print("m[" + i + "]" + "[" + j + "]: ");
				matice[i][j] = sc.nextInt();
			}
		}
		System.out.println("---Vysledky---");
		System.out.println("Byla zadana matice:");
		vipisMatici(matice); //vypise zadanou matici
		vedlejsiDiagonalaMax(matice);
		vedlejsiDiagonalaMin(matice);
	}
}
Nahlásit jako SPAM
IP: 176.12.115.–
TheOndrap+2
Super člen
11. 11. 2012   #14
-
0
-

No vidíš ! Jenom taková drobnost .. tu druhou pozici nemusíš ukládat, tu si dycky můžeš dopočítat :)

Označ vlákno za vyřešené

Nahlásit jako SPAM
IP: 147.228.209.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Výpis pole — založil Row

Vypis pole — založil Al

Výpis pole — založil Tominek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý