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
2091952

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.