Java :: Aufgabe #191 :: Lösung #3

3 Lösungen Lösungen öffentlich
#191

Ermittlung von Zeilen- und Spaltennummer eines 2D-Array-Feldes

Anfänger - Java von hollst - 09.02.2018 um 11:03 Uhr
Die Felder eines "unendlich" großen 2D-Arrays seien nach folgendem "Diagonal-Schema" nummeriert:

1 2 4 7 . . .
3 5 8 . . . .
6 9 . . . . .
10 . . . . . .
. . . . . . usw.

Man schreibe ein Programm, das für eine gegebene Feldnummer N die Zeilen- (ZN) und die Spaltennummer (SN) zurückgibt.
Zeilen- und Spaltennummerierungen beginnen wie üblich mit 0.

Beispiele:
N = 8 -> ZN = 1, SN = 2
N = 31 -> ZN = 2, SN = 5
#3
vote_ok
von newToJava820 (90 Punkte) - 27.08.2020 um 01:48 Uhr
Quellcode ausblenden Java-Code
package übung191;

import java.util.Scanner;

public class Program {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int z = 0;
		int Zeile = 0; 
		int Spalte = 0;
		boolean ergebnis = false;
		
		//Frage mit eingabe in der Console
		System.out.println("Wie groß soll das 2D-Array sein?");
		System.out.println("wv Zeilen:");
		int y = sc.nextInt();
		System.out.println("wv Spalten:");
		int x = sc.nextInt();
		int[][] array = new int[y][x];
		
		
		//Array mit Zahlen wird erstellt
		for (int i = 0; i < array.length; i++) {
			for (int j = 0; j < array[i].length; j++) {
				//(0/0)
				if (i == 0 && j == 0) {
					array[i][j] = j + 1;
				}
				//Erste Reihe
				if (i == 0 && j != 0) {
					array[i][j] = ++z + array[i][(j - 1)];
					z = array[i][j] - array[i][(j - 1)];
				}
				//letzte Spalte
				if (i != 0 && j == (x - 1)) {
					array[i][j] = (array[i][(j - 1)] - array[i][(j - 2)]) + array[i][(j - 1)];
				}
				//Rest
				if (i != 0 && j != (x - 1)) {
					array[i][j] = array[(i - 1)][(j + 1)] + 1;
				}		
			}	
		}
		
		
		//Eingabe welche Zahl der User wissen möchte
		System.out.println("Welche Zahl suchst du?");
		int eingabe = sc.nextInt();
		
		
		//Suche der Zahl und ob sie überhaupt im Array ist
		for (int i = 0; i < array.length; i++) {
			for (int j = 0; j < array[i].length; j++) {
				if (eingabe == array[i][j]) {
					ergebnis = true;
					Zeile = i;
					Spalte = j;
				}
			}
		}
		
		
		//Ausgabe des Ergebnis
		if (ergebnis == true) {
			System.out.println("*********************");
			System.out.println("Deine Zahl " + eingabe + " ist in:");
			System.out.println("Zeile: " + Zeile + " - Spalte: " + Spalte);
		} else {
			System.out.println("Deine Zahl ist leider nicht im array");
		}
		
		
		//Für manuelle überprüfung - Tabelle wird ausgegeben falls gewünscht
		System.out.println("*********************");
		System.out.println("Möchtest du die Tabelle manuel überprüfen? ja(j) - nein(n)");
		String manuell = sc.next();
		if (manuell.equals("j")) {
			for (int i = 0; i < array.length; i++) {
				for (int j = 0; j < array[i].length; j++) {
					System.out.print(array[i][j] + " ");
				}
				System.out.println();
			}
		} else {
			System.out.println("(n) oder Falsche eingabe - terminate");
		}
		
		
	}

}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben