Aufgabe mit Strings

WinterMensch

Mitglied
Ich habe ein Problem bezüglich folgender Aufgabe:

Also, man soll eine Zahl eingeben können, z.B. n=4. Danach soll ein Muster ausgegeben werden.
Jede Zeile soll 3^n Zeichen enthalten.
In der ersten Zeile soll die Anzahl der Zeichen durch 3 geteilt werden und der erste Abschnitt mit "." gefüllt werden, der zweite mit "*" und der dritte wieder mit "." .
In der zweiten Zeile sollen die zuvor mit "." gefüllten Abschnitte wieder in drei Teile geteilt werden, und wieder je ein Drittel mit ".", dann "*" und dann "." gefüllt werden. Die Abschnitte die mit "*" gefüllt waren sollen einfach durch "." ersetzt werden.
Das ganze soll dann n mal gemacht werden, also soll es n Zeilen geben.

Das was ich bis jetzt habe, berechnet die Anzahl der Zeichen pro Zeile und gibt die erste Zeile aus.
Die weiteren Zeilen sind aber problematisch..
Ich glaube, das ganze rekursiv zu lösen wäre vielleicht am sinnvollsten.
Vielleicht hat ja jemand eine Idee wie es weiter gehen könnte.
Vielen Dank schonmal im Voraus :)






Java:
class Test {
    public static void main(String[] args) {
        int b = In.readInt();
        double x = Math.pow(3,b);
        String value = new String();
        Out.println(ersteZeile(value, x));
        
    }
    
    
    static String ersteZeile(String value, double x) {
        double p = x / 3;
        while (value.length() < p) {
            value += ".";
        }
        double s = 2 * p;
        while (value.length() < s) {
            value += "*";
        }
        while (value.length() < x) {
            value += ".";
        }
        return value;
        
    }
  
}
 

DrZoidberg

Top Contributor
Ich hab hier mal ne rekursive Methode geschrieben. Aber ich vermute, dass sie nicht ganz der Aufgabenstellung entspricht, da nicht alle "." in der nächsten Zeile berücksichtigt werden.

Java:
static String muster(int l, int n) {
    int l1 = l/3;
    int l2 = l - 2*l1;
    StringBuilder sb = new StringBuilder();
    if(n == 0) {
        for(int i = 0; i < l1; i++) sb.append(".");
        for(int i = 0; i < l2; i++) sb.append("*");
        for(int i = 0; i < l1; i++) sb.append(".");
    } else {
        sb.append(muster(l1, n-1));
        for(int i = 0; i < l2; i++) sb.append(".");
        sb.append(muster(l1, n-1));
    }
    return sb.toString();
}

static void printMuster(int n) {
    for(int i = 0; i < n; i++) {
        System.out.println(muster((int)Math.pow(3, n), i));
    }
}
 

Pentalon

Bekanntes Mitglied
Meinst Du sowas ?

Java:
    static void muster(int zahl) {
    	double m = Math.pow(3, zahl);

    	double teil = m / 3;
    	
    	while(teil >= 1) {
    		for(double i=0;i<m;i++) {
    			if(((int)(i / teil) & 1) == 0) {
    				System.out.print(".");
    			} else
    				System.out.print("*");
    		}    
    		System.out.println();
    		teil = teil / 3;
    	}
    }

Eingabe 4

Ausgabe:
[TIPP]...........................***************************...........................
.........*********.........*********.........*********.........*********.........
...***...***...***...***...***...***...***...***...***...***...***...***...***...
.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.[/TIPP]

Pentalon
 

Pentalon

Bekanntes Mitglied
Also so:
Java:
    static void muster(int zahl) {
    	double m = Math.pow(3, zahl);

    	double teil = m / 3;
    	char[] zeichen = {'.','*','.'};
    	int x=0;
    	
    	while(teil >= 1) {
    		for(x=0;x<2;x++) {
    			for(double i=0;i<m;i++) {
    				if(((int)(i / teil) & 1) == 0) {
    					System.out.print(zeichen[x]);
    				} else
    					System.out.print(zeichen[x+1]);
    			}
    			System.out.println();
    		}    
    		if(x==2)
    			teil = teil / 3;
    	}
    }

Jetzt kommt bei 3 sowas raus:
[TIPP].........*********.........
*********.........*********
...***...***...***...***...
***...***...***...***...***
.*.*.*.*.*.*.*.*.*.*.*.*.*.
*.*.*.*.*.*.*.*.*.*.*.*.*.*[/TIPP]

Sieht aus wie ein Teppichmuster :)

Pentalon
 

Pentalon

Bekanntes Mitglied
Hier noch eine Variante, bei der Du wählen kannst, wie oft sich die Zeilen abwechseln sollen:

Java:
public class Test7 
{
 
    public static void main(String[] args) 
    {
	      Scanner scan = new Scanner(System.in);

	      System.out.println("Zahl für n: ");
	      int a = scan.nextInt();
	      System.out.println("Wie oft sollen die Zeilen abgewechselt werden (max 5): ");
	      int b = scan.nextInt();
	      scan.close();	
	      muster(a,b);
	      
    }
    
    static void muster(int zahl,int toggle) {
    	double m = Math.pow(3, zahl);

    	double teil = m / 3;
    	char[] zeichen = {'.','*','.','*','.','*'};
    	int x=0;
    	
    	while(teil >= 1) {
    		for(x=0;x<toggle;x++) {
    			for(double i=0;i<m;i++) {
    				if(((int)(i / teil) & 1) == 0) {
    					System.out.print(zeichen[x]);
    				} else
    					System.out.print(zeichen[x+1]);
    			}
    			System.out.println();
    		}    
    		if(x==toggle)
    			teil = teil / 3;
    	}
    }    
}

Pentalon
 

WinterMensch

Mitglied
Ich glaube das ist immer noch nicht das gesuchte.. Tut mir voll Leid, vielleicht wäre es klarer gewesen wenn ich mal eine Ausgabe angegeben hätte.
Also hier ist eine:

k = 4
Java:
...........................***************************...........................
.........*********.............................................*********.........
...***...............***.................................***...............***...
.*.....*...........*.....*.............................*.....*...........*.....*.
 

AmunRa

Gesperrter Benutzer
Mit war gerade fad da hab ich das hier mal geschrieben. ICh glaub es sollte deine Anforderung erfüllen

Output für 4
Code:
...........................***************************...........................
.........*********.............................................*********.........
...***...............***.................................***...............***...
.*.....*...........*.....*.............................*.....*...........*.....*.

Java:
import java.util.ArrayList;
import java.util.List;

class test2 {
	public static void main(String[] args) {

		int count = 4;
		int lineLength = (int) Math.pow(3, count);
		String[] parts = makeNewParts(lineLength);
		

		while (count > 0) {
			printLine(parts);
			List<String> partList = new ArrayList<String>();
			for (String part : parts) {
				String[] newParts = splitPart(part);
				for (String newPart : newParts)
					partList.add(newPart);
			}
			parts = partList.toArray(new String[0] );
			count --;
		}
	}

	public static String[] splitPart(String part) {
		switch (part.charAt(0)) {
		case '*':
			return new String[] { translateStarsToPoint(part) };
		case ',':
			return new String[] { part };
		case '.':
			return makeNewParts(part.length());
		default:
			return new String[0];
		}
	}

	public static String[] makeNewParts(int length) {
		String parts[] = new String[3];
		int p = length / 3;

		for (int i = 0; i < 3; i++) {
			StringBuilder part = new StringBuilder(p);
			for (int j = 0; j < p; j++) {
				switch (i) {
				case 0:
				case 2:
					part.append('.');
					break;
				case 1:
					part.append('*');
					break;
				}
			}
			parts[i] = part.toString();
		}

		return parts;
	}

	public static String translateStarsToPoint(String stars) {
		return stars.replace('*', ',');
	}

	public static void printLine(String[] parts) {
		for (String part : parts) {
			System.out.print(part.replace(',', '.'));
		}

		System.out.println();
	}
}
 

Pentalon

Bekanntes Mitglied
So wie ich Deiner Anleitung entnehme, sollen die Bereiche die mit "." gefüllt sind, in 3 Teile unterteilt werden.
Das müsste bei 3 dann eigendlich so aussehen:

Code:
.........*********.........
...***...............***...
.*.....*..*..*..*..*.....*.

Sterne werden ja in der nächsten Zeile zu Punkten, die dann in der nächsten Zeile wieder in 3 Teile unterteilt werden müssten.

Hier etwas deutlicher:
Code:
.........|*********|.........
...|***|...|...|...|...|...|***|...
.*.|...|.*.|.*.|.*.|.*.|.*.|...|.*.

Pentalon
 
Zuletzt bearbeitet:

Pentalon

Bekanntes Mitglied
Dann ist aber Deine Zeichnung auch nicht korrekt:

Code:
...........................***************************...........................
.........*********.............................................*********.........
...***...............***.................................***...............***...
.*.....*...........*.....*.............................*.....*...........*.....*.

und es müsste eigendlich so sein:

Code:
...........................***************************...........................
.........*********.............................................*********.........
...***...............***......***......***......***......***...............***...
.*.....*..*..*..*..*.....*..*.....*..*.....*..*.....*..*.....*..*..*..*..*.....*.

Zur besseren Übersicht:
Code:
...|***|...|...|...|...|...|***|...|...|***|...|...|***|...|...|***|...|...|***|...|...|...|...|...|***|...
.*.|...|.*.|.*.|.*.|.*.|.*.|...|.*.|.*.|...|.*.|.*.|...|.*.|.*.|...|.*.|.*.|...|.*.|.*.|.*.|.*.|.*.|...|.*.

Pentalon
 

WinterMensch

Mitglied
Naja, das war das Beispiel aus der Aufgabe, also mit n = 4.
Aber ich denke es ist so, dass das was mal ein Sternchen war und dann zum Punkt wurde, auch immer ein Punkt bleiben soll, was irgendwie ziemlich kompliziert ist..
Kann man das irgendwie umsetzen?
 

Bleiglanz

Gesperrter Benutzer
gemeint ist doch sicher die

Cantor-Menge ? Wikipedia

so dass der jeweils mittlere Abschnitt für immer unverändert bleibt? Irgenwie komisch, dass die * aus der ersten Zeile in der zweiten Zeile zu . werden sollen, stimmt das wirklich? Oder gehört dazu nicht eine 0. Zeile die komplett aus . besteht?
 

WinterMensch

Mitglied
Oh, stimmt, das ist genau das was ich gesucht hatte :)
Habe es mir leider nicht gleich genau angeguckt weil du ja geschrieben hattest, dass es vermutlich nicht ganz der Aufgabenstellung entspricht. Aber tut es ja doch. Vielen Dank :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
J Buchstabenzähler-Aufgabe mit Arrays Java Basics - Anfänger-Themen 5
Jere58 Aufgabe zu Mustern Java Basics - Anfänger-Themen 1
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Mikejr Java Berg aufgabe Java Basics - Anfänger-Themen 6
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
T Informatik Studium Aufgabe Java Basics - Anfänger-Themen 4
T Aufgabe Informatik Studium Java Basics - Anfänger-Themen 10
G matrix aufgabe Java Basics - Anfänger-Themen 22
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
9 Aufgabe Bruttorechner Java Basics - Anfänger-Themen 14
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
StevenGG Aufgabe im Studium Java Basics - Anfänger-Themen 36
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
R Eclipse Aufgabe Java Basics - Anfänger-Themen 4
J OOP-Aufgabe Java Basics - Anfänger-Themen 15
Helix19 Informatik Grundkurs (Haus-)Aufgabe Java Basics - Anfänger-Themen 5
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
C Rechnungen-Aufgabe Java Basics - Anfänger-Themen 18
C Biene-Aufgabe Java Basics - Anfänger-Themen 2
K Algorithmen und Datenstrukturen Programmier Aufgabe Java Basics - Anfänger-Themen 10
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
T Aufgabe zum Verschlüsselungsalgorithmus Java Basics - Anfänger-Themen 11
J Erste Schritte Aufgabe Java Basics - Anfänger-Themen 24
T Methoden BinaryTree transformieren Aufgabe Java Basics - Anfänger-Themen 36
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
S Sortieralgorithmus - Aufgabe mit Lösungsidee Java Basics - Anfänger-Themen 20
A Aufgabe: Gleitkommazahlen Java Basics - Anfänger-Themen 3
A Java-Programmierungs Aufgabe Java Basics - Anfänger-Themen 2
U Aufgabe zu Kontrollstrukturen Java Basics - Anfänger-Themen 8
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
J Aufgabe als Feuertaufe Java Basics - Anfänger-Themen 8
S Unbedingte hilfe bei Java Aufgabe [Schleife / Zinsrechnung] Java Basics - Anfänger-Themen 14
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
H aufgabe 4 Java Basics - Anfänger-Themen 297
M Hilfe bei Projektorientierungs-Aufgabe !! Java Basics - Anfänger-Themen 3
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
H java aufgabe Java Basics - Anfänger-Themen 7
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
H was verlangt die aufgabe ? Java Basics - Anfänger-Themen 10
H java aufgabe Java Basics - Anfänger-Themen 68
H java aufgabe Java Basics - Anfänger-Themen 25
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
R Java Aufgabe (Teilbarkeit) Java Basics - Anfänger-Themen 7
H java aufgabe Java Basics - Anfänger-Themen 44
H java aufgabe Java Basics - Anfänger-Themen 7
H java string aufgabe Java Basics - Anfänger-Themen 10
H array aufgabe Java Basics - Anfänger-Themen 13
D Erste Schritte Lösen dieser Aufgabe, Hilfe! Java Basics - Anfänger-Themen 12
H aufgabe Java Basics - Anfänger-Themen 9
H lösung aufgabe Java Basics - Anfänger-Themen 12
S Hilfe für Aufgabe Java Basics - Anfänger-Themen 4
H java online aufgabe Java Basics - Anfänger-Themen 4
H Array aufgabe Java Basics - Anfänger-Themen 7
H oop aufgabe probe kalusur Java Basics - Anfänger-Themen 11
H oop aufgabe Java Basics - Anfänger-Themen 19
H JAVA AUFGABE Java Basics - Anfänger-Themen 7
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
J Problem bei Aufgabe "Geldstückelung" Java Basics - Anfänger-Themen 5
P Problem bei Java-Aufgabe Java Basics - Anfänger-Themen 12

Ähnliche Java Themen


Oben