Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  14 2327
Nok en ny oppgave som jeg jobber med.

Jeg skal taste inn ett tall, maks 10.

det tallet skal være antall linjer og så lage en pyramide.

Kode

    *
   ***
  *****
etc
matematikken som jeg finner ut er 1 - 3 - 5 - 7 - 9 - 11 altså x+2 hver linje.
forslag til hvordan det skal bli mulig ?
Sist endret av Ejii; 3. juni 2011 kl. 21:06.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Du forteller ikke hva du jobber i engang, dessuten virker dette skummelt om en skoleoppgave eller liknende. Les om looper i det aktuelle språket, de fleste har en konstruksjon som gjør dette mulig på minst 2-3 måter.
Trådstarter
@robhol
ohh yeah, ikke direkte en skoleoppgave. men det er en oppgave ifra www.javabok.no kapittel 4.14 oppgave 2.2

er for og lære meg java.

Oppgave 2.1 var og lage noe lignende og den løste jeg med en FOR løkke. det var
*
**
***
****
etc
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Du kan bruke den samme FOR-løkken her, med et enkelt grep.
Hint: hva sørger for at en for-løkke går "fremover"? Hvordan kan du modifisere denne for å nå målet ditt?
Trådstarter
hmm. er akkurat det hva jeg har tenkt på de siste dagene nå :P

Kode

import static javax.swing.JOptionPane.*;
class StjerneTegn {
	public static void main(String[]args){
		String linjerLest = showInputDialog("Hvor mange linjer vil du ha, 1 til 10");
		int linjer = Integer.parseInt(linjerLest);
		String stjernetegn = "*";
		if(linjer >10) {
			showMessageDialog(null, "For høyt tall");
		}
		else {
			for(int s = 1 ; s <= linjer; s++) {
				System.out.print(stjernetegn+"\n");
				stjernetegn +="*";
			}
		}
	}
}
Eller så kan du gjøre det med juks. Bruke "case"-setning. Veldig feil og kanskje litt klønete måte å gjøre det på, men det funker jo
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
moret: det er det dummeste jeg har hørt.
Som sagt, Ejii: en for-loop består av fire deler. Hvilken av dem gjør at "i" øker?
Sist endret av robhol; 3. juni 2011 kl. 21:30.
Trådstarter
det er den siste delen så det blir
for(int s = 1 ; s <= linjer; s +=2)
Sitat av Ejii Vis innlegg
hmm. er akkurat det hva jeg har tenkt på de siste dagene nå :P

Kode

import static javax.swing.JOptionPane.*;
class StjerneTegn {
	public static void main(String[]args){
		String linjerLest = showInputDialog("Hvor mange linjer vil du ha, 1 til 10");
		int linjer = Integer.parseInt(linjerLest);
		String stjernetegn = "*";
		if(linjer >10) {
			showMessageDialog(null, "For høyt tall");
		}
		else {
			for(int s = 1 ; s <= linjer; s++) {
				System.out.print(stjernetegn+"\n");
				stjernetegn +="*";
			}
		}
	}
}
Vis hele sitatet...

Kode

import javax.swing.*;
class StjerneTegn {
	public static void main(String[] args){
		String linjerLest = JOptionPane.showInputDialog(null, "Hvor mange linjer vil du ha, 1 til 10");
		int linjer = Integer.parseInt(linjerLest);
		String stjernetegn = "*";
		if(linjer >10) {
			JOptionPane.showMessageDialog(null, "For høyt tall");
		}
		else {
			for(int s = 1 ; s <= linjer; s++) {
				System.out.println(stjernetegn+"\n");
				stjernetegn +="*";
			}
		}
	}
}
En "rettet" utgave, det funket ikke hos meg med din. Forresten får jeg ikke til en pyramide sånn den egentlig skal se ut. Da må du nok inn med en for-setning til for å få på plass mellomrommene

Sitat av robhol Vis innlegg
moret: det er det dummeste jeg har hørt.
Som sagt, Ejii: en for-loop består av fire deler. Hvilken av dem gjør at "i" øker?
Vis hele sitatet...
Hvorfor skal det være så dumt? Det fungerer jo helt fint.
Trådstarter
@moret
det er ifra den forrige oppgaven.

jeg lurer på hvordan utskriften til og få til pyramiden skal være. de sadistene som har mekket denne oppgaven har i allefall klart det. men ikke jeg :P

for og få til enn pyramide så tror jeg at det blir antall linjer -1|

la oss si 3 linjer

Kode

   * <-- 3 innrykk (spacebar)
  *** <-- 2 innrykk
 ***** <-- 1 inrykk
så da blir innrykk = linjer - 1
hvordan skal det overføres til utskrift ?

Kode

---*
--***
-*****
Bytter man ut mellomrommene med et annet tegn, kjenner man igjen en form fra den forrige oppgaven. (Bare andre veien)
Sist endret av Dyret; 3. juni 2011 kl. 22:06.

Kode

import javax.swing.*;
class StjerneTegn {
	public static void main(String[] args){
		String linjerLest = JOptionPane.showInputDialog(null, "Hvor mange linjer vil du ha, 1 til 10");
		int linjer = Integer.parseInt(linjerLest);
		String stjernetegn = "*";
		String mellomRom = "";
		if(linjer >10) {
			JOptionPane.showMessageDialog(null, "For høyt tall");
		}
		else {
			for(int s = 1 ; s <= linjer; s++) {
				for(int i=0;i<linjer-s;i++){
					mellomRom+= " ";
		}
				System.out.println(mellomRom +"" +stjernetegn+"");
				stjernetegn +="**";
				mellomRom="";
			}
		}
	}
}
Det funker sånn
Trådstarter
funker perfekt.
må bare dekryptere hele shaitn nå.
har endelig begynt og fatt litt av for løkka, har misslikt saken i over 10 år.

takk igjen!
For gøy et par med python.

Kode

def pyramid(rows):
    for i in range(rows):
        print ' '*(rows-i-1) + '*'*(2*i+1)

user_input = int(raw_input("How many lines choice 1-10"))
if user_input > 10:
    print 'To high number'
else:
    pyramid(user_input)
En linje.

Kode

>>> for i in range(5):print '%s%s'%(' '*(5-(i-1)),'*'*((i*2)-1))
    
     *
    ***
   *****
  *******
Sist endret av snippsat; 4. juni 2011 kl. 01:20.
Tja, hvorfor ikke litt Clojure?! Her er én mulighet.., konseptuelt ganske lik Python-koden fra forrige innlegg:

Kode

(require '[clojure.contrib.string :as s])

(let [rows 5]
  (dotimes [i rows]
    (println (s/repeat (- rows i 1) \space)
             (s/repeat (inc (* 2 i)) \*))))
Har du lyst å eksperimentere med clojure (du kan teste det online her!!!) kan du jo forsøke å gjøre det samme ved å bruke funksjoner som range og map.