piramide printen op scherm

Status
Niet open voor verdere reacties.

Maikel20

Gebruiker
Lid geworden
21 feb 2013
Berichten
16
Wie kan mij helpen!
Ik ben een opdracht aan het maken waarin ik een piramide moet maken:
schrijf een programma dat de gebruiker vraagt een integer op te geven van 1 tot 15. Het programma geeft een piramide weer, zoals ik hieronder heb staan.

Dit in de vorm van een geneste for-lus.
Als ik achterin kijk in het antwoord en die code goed lees snap ik die wel een beetje maar ik zou er zelf niet zomaar opkomen om de opdracht op die manier te doen, laat staan er zelf achter te komen. maar toch ben ik zo eigenwijs om er zelf achter te willen komen met wat hulp die niet rechtstreeks een code hoeft te zijn.

De opdracht moet er uiteindelijke zo uitzien(aan de hand van het aantal ingevoerde regels):
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4

alleen dan wel dat de cijfers recht boven elkaar zitten.

Tot nu toe heb ik dit:
Schermafbeelding 2013-02-28 om 14.58.10.png

Heeft er iemand een idee hoe ik verder moet?
Of kan iemand mij vertellen hoe je begint aan zo'n opdracht, met de opbouw en welke manier je wanneer kunt gebruiken?
Misschien handige tips voor in de toekomst?

Ik zie er nog niet echt een logica in denk ik...

Alvast bedankt.

Maikel
 
huiswerk?

als je leert programmeren heb je vast geleerd eerst een schema te maken van je programma. hoe ziet dit er uit?
 
ik doe een thuis cursus en hierin hebben ze het nooit over een schema. Ze leggen het allemaal wel uit maar niet echt met logica of tips
 
In het aantal regels zit al een verband.

Bij 1 regel > 1 cijfer wordt geprint
Bij 2 regels > 3 cijfers worden geprint
Bij 3 regels > 5 cijfers worden geprint
 
Ik denk dat je beter naar een ander verband kan zoeken.
Namelijk dit:

Iedere regel begint met het bijbehorende nummer:
Regel 1 begint met 1, regel 2 met 2 etc.
Vervolgens loopt het nummer terug naar 1, en daarna weer naar het oorspronkelijke nummer.

Dit is vrij eenvoudig te realiseren met een (geneste) for-lus, zoals al in de OP vermeld is.
 
Ok hier komt ie dan :D

Wat JoZ1 zegt is correct, zo moet je er inderdaad naar kijken.

Dan krijg je de volgende stappen:

  1. bepaal het regelnummer
  2. print vanaf het regelnummer tot aan de 1 achter elkaar (system.out.print)
  3. print vanaf 2 naar het regelnummer
  4. verhoog het regelnummer
  5. print een lege lijn.

In java ziet dat er dan zo uit:

  1. bepaal het regelnummer
    [JS]int regelNummer = 1;[/JS]
  2. print vanaf het regelnummer tot aan de 1 achter elkaar (system.out.print)
    [JS]
    // Print van regelnummer tot 1
    for(int x2 = 0; x2 < regelNummer; x2++){
    System.out.print(regelNummer -x2);
    }[/JS]
  3. print vanaf 2 naar het regelnummer
    [JS]// Print van 2 tot regelnummer
    for(int x3 = 1; x3 < regelNummer;x3++){
    System.out.print(x3 +1);
    }[/JS]
  4. verhoog het regelnummer
    [JS]// Hoog het regelnummer op
    regelNummer++;[/JS]
  5. print een lege lijn.
    [JS] System.out.println();[/JS]
  6. terug naar stap 1
    [JS]for (int x = 0; x < aantalRegels; x++){ }[/JS]

Gecombineerd krijg je dan:
[JS]public class Pyramide {


public void createPyramide(int aantalRegels){
int regelNummer = 1;
for (int x = 0; x < aantalRegels; x++){
// Print van regelnummer tot 1
for(int x2 = 0; x2 < regelNummer; x2++){
System.out.print(regelNummer -x2);
}
// Print van 2 tot regelnummer
for(int x3 = 1; x3 < regelNummer;x3++){
System.out.print(x3 +1);
}
// Hoog het regelnummer op
regelNummer++;
// Ga naar de volgende regel
System.out.println();
}
}
}[/JS]

Deze methode roep je dan aan vanuit een main (waar je ook het aantal vraagt)
[JS]import java.util.Scanner;

public class Main {

public static void main(String[] args){
Scanner input = new Scanner(System.in);
Pyramide myPyramide = new Pyramide();
int i = input.nextInt();
myPyramide.createPyramide(i);
input.close();

}

}
[/JS]

Hier onder staat het .zip bestand. Die kan je zo importeren in Eclipse
Bekijk bijlage pyramide.zip


[edit]
let er wel op dat de gebruiker hier ook een letter in kan vullen (en dan crashed het systeem).

Dit kan je echter wel afvangen in de mainclass:

[JS]import java.util.Scanner;

public class Main {

public static void main(String[] args){
run();
}
public static void run(){
Scanner input = new Scanner(System.in);
Pyramide myPyramide = new Pyramide();
if (input.hasNextInt()) {
int i = input.nextInt() ;
myPyramide.createPyramide(i);
} else {
System.out.println("Error: U heeft geen integer gegeven, probeer het nog eens!");
run();
}
input.close();
}

}[/JS]
[/edit]
 
Laatst bewerkt:
hee bedankt! ik ben eruit gekomen! en begrijp het ook wat beter nu;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan