Avatar billede kebaan Nybegynder
18. december 2008 - 22:25 Der er 8 kommentarer og
1 løsning

Begynderspørgsmåk: Javebogen - Kurveprogram

Jeg er ny til programmering og er kommet til denne opgave. Kan ikke gennemskue hvordan den skal laves med de ting man har lært indtil nu? De vil (som der står i nedenstående link) have at man skal lave det med "*" så det er ikke noget der skal løses grafisk.

http://www.javabog.dk/OOP/kapitel2.jsp afsnit 2.10.2

Håber i kan hjælpe en nybegynder som mig :P
Avatar billede arne_v Ekspert
18. december 2008 - 22:37 #1
Du skal vel bruge loekke.

Og output skal se ud lidt ligesom:

              ***
            ***
        ***
      **
    **
  **
*
*
Avatar billede kebaan Nybegynder
18. december 2008 - 22:53 #2
hvorfor skal output ikke være noget i retning af:

                *
          *
      *
    *
  *
*
*
*

Det jeg ikke forstår er at du laver flere og flere stjerne på samme linie?

Og kan ikke se hvordan man skulle lave det så den ved output skal se sådan ud? For hvis de med den opgave mener at man bare skal lave en masse System.out.println() og System.out.print() så det passer synes jeg det virker lidt underligt.

Sådan som jeg har forstået det og vil lave det vil jeg give den et input Math.sqrt() også skal den selv regne ud hvordan det skal se ud. Så jeg kan skrive lige den ligning jeg vil.

Hvis de bare mente at man skal lave en masse System.out.println() i løkker så kan jeg sagtens lave det, bare ikke sådan jeg har forstået det :D
Avatar billede arne_v Ekspert
18. december 2008 - 22:57 #3
Om output er det ene eller det andet afhaenger lidt af om du vil have en stjerne
per enhed paa X aksen eller en stjerne per enhed paa y aksen.

Du skal bruge loekke og System.out.println - og det maa antages at stjernes placering
skal beregens ikke hardcodes.
Avatar billede kebaan Nybegynder
19. december 2008 - 00:00 #4
Må desværre indrømme at jeg stadig ikke kan finde ud af at lave det så den selv beregner :/Det jeg er startet på herunder er jo hardcoding?

Ville være meget rart hvis du kunne skrive lidt kode så jeg kan se hvad jeg skal gøre :)

public class Kurveprogram {

    public static void main(String[] args) {

        double y;
        int x;
        for (x=100; x>=0; x--)
        {
            y = (int) Math.sqrt(x);//funktionen skrives ind her
            if (y>=10)
                System.out.println("                                                                                                  *");//99 gange mellemrum da x=100
            else if (y>=9)
                System.out.println("                                                                                *");//80 gange mellemrum da x=81

        }
    }

}
Avatar billede kebaan Nybegynder
19. december 2008 - 00:16 #5
Har søgt direkte på eksperten nu og fundet præcis samme spørgsmål hvor du (arne v) også gav svaret, så har løst opgaven nu. Mange tak for hjælpen, skriver du et svar?.. ville bare ønske at jeg selv kunne tænkt mig frem til det :/

Her er det endelige resultat:
public class Kurveprogram {

    public static void main(String[] args) {
        int x;
        int y;

        for(y = 20; y >= 0; y--)
        {
            for(x = 0; x < 200; x++)
            {
              if(y == (int)Math.sqrt(x))
                System.out.print('*');
              else
                System.out.print(' ');
            }
        System.out.println();
        }
    }
}
Avatar billede arne_v Ekspert
19. december 2008 - 02:46 #6
Du kan godt trække int erklæringerne ind i for løkkerne:

public class Kurveprogram {
    public static void main(String[] args) {
        for(int y = 20; y >= 0; y--) {
            for(int x = 0; x < 200; x++) {
                if(y == (int)Math.sqrt(x)) {
                    System.out.print('*');
                } else {
                    System.out.print(' ');
                }
            }
            System.out.println();
        }
    }
}
Avatar billede arne_v Ekspert
19. december 2008 - 02:49 #7
Man kan diskutere om Math.round(Math.sqrt(x)) ikke var bedre end (int)Math.sqrt(x).

Du endte iøvrigt også op med flere stjerner i en linie.
Avatar billede arne_v Ekspert
19. december 2008 - 02:49 #8
Og et svar
Avatar billede kebaan Nybegynder
19. december 2008 - 10:54 #9
Her er den med en stjerne på hver linie :)
og endnu engang tak for hjælpen :)

public class Kurveprogram {
    public static void main(String[] args) {
        for (int x = 0; x < 50; x++)
        {
            for(int y = 10; y>=0; y--)
            {
              if(y == (int)Math.sqrt(x))
                System.out.print('*');
              else
                System.out.print(' ');
            }
        System.out.println();
        }
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester