Pętla for i klepsydra

2015-10-29 19:00
0

Witam a wieć musze zrobić z klepsydre

<ort>* * * * * * * * * * * * * * * * * * * * * * * * * * * * *</ort>

Narazie udało mi sie zrobic cos takiego :

public class Zad5{
public static void main(String[] args){
        for (int j = 10; j>0; j--)
    {
        for(int i = 0; i< j; i++){
            System.out.print("*");

        }
        System.out.print(" "+"\n");

    }

    for(int a = 1; a <= 10; a++){

        for(int b = 0; b < a; b++)
            System.out.print("*");
        System.out.print("\n");
    }
        System.out.print("\n");

Pytanie jak za każda nowa linia ma się robic kolejna spacja ?

edytowany 1x, ostatnio: bogdans, 2015-10-29 20:08
!Staranniej pisz posty, kod wstawiaj w znaczniki &lt;code=java&gt;&lt;/code&gt;, porządnie formatuj. Chyba że chcesz, by wątki lądowały w koszu. - bogdans 2015-10-29 20:11

Pozostało 580 znaków

2015-10-29 19:01
0

klepsydra ma wygladac tak

 * * * * *
  * * * *
   * * *
     * *
      *
    * *
   * * *
 * * * *
* * * * *
jakaś krzywa tak - karolinaa 2015-10-29 19:47

Pozostało 580 znaków

2015-10-29 19:50
0

tak się skopiowała dziwnie :P

Ty ją źle narysowałeś. Różnica liczby gwiazdek w kolejnych wierszach powinna wynosić 2. - bogdans 2015-10-29 20:14

Pozostało 580 znaków

2015-10-29 20:05
0

Pytanie jak za każda nowa linia ma się robic kolejna spacja

Nie „kolejna”, tylko o jedną więcej niż w poprzedniej linii.

?

Nie stawiamy spacji przed znakiem zapytania.

Pozostało 580 znaków

2015-10-29 20:32
import java.util.*;
public class Zad5
{
    public static void main(String[] args)
    {
        String[] stars = new String[9];
        StringBuilder sb = new StringBuilder("*");
        for(int i=8;i>=0;i--)
        {
            stars[i] = sb.toString();
            sb.append("**");
        }
        String[] spaces = new String[9];
        sb = new StringBuilder("");
        for(int i=0;i<9;i++)
        {
            spaces[i] = sb.toString();
            sb.append(" ");
        }        
        for(int i=0;i<9;i++)
        {
            System.out.println(spaces[i]+stars[i]);
        }
        for(int i=7;i>=0;i--)
        {
            System.out.println(spaces[i]+stars[i]);
        }        
    }
}

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-10-29 20:41
0

wszystko bardzo dobrze wychodz, tyle ze jak wykladowca mnie zapyta jak ona działa nie bede wiedział :P jest mozliwosc przetworzyc jakos mój kod ?

Pozostało 580 znaków

2015-10-29 20:46
0

Pewnie tak, ale ja tego nie zrobię.
Przed znakiem zapytania nie stawiamy spacji.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-10-29 21:04
0

ok dzieki

Pozostało 580 znaków

2015-10-29 21:19
Zimny Samiec
0

Witam
Czasami zaglądam na forum i próbuje rozwiazać problemy forumowiczów. Z samym rozwiązaniem problemów nie mam lecz bardziej z sposobem rozwiązania. Program podzieliłem na góre
i dół. W zależności od liczby poczatkowych gwiazdek rysuje mi klepsydre. Lecz sam kod brzydko wygląda. Jak można klepsydre umieścić w jednym forze? Wiem że można zrobić funkcje
writeSandglass(enum part) i w zależności od partu dawać inne warunki ale ciekaw jestem jak to zrobić w jednym forze:

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    int stars = 0;
    int spaces = 0;

    const int starsStart = 10;

    int sandglassHeight = starsStart * 2 - 1;

    for(int i=0; i< starsStart; i++){
        stars = starsStart - i;
        spaces = i;
        for (int k=0; k< spaces; k++){
            cout << " ";
        }
        for(int j=0; j<stars; j++){
            cout << "* ";
        }
        for (int k=0; k< stars; k++){
            cout << " ";
        }
        cout<< endl;
    }
    for(int i=2; i< starsStart + 1; i++){
        stars = i;
        spaces = starsStart - i;
        for (int k=0; k< spaces; k++){
            cout << " ";
        }
        for(int j=0; j<stars; j++){
            cout << "* ";
        }
        for (int k=0; k< stars; k++){
            cout << " ";
        }
        cout<< endl;
    }

    return 0;
}

Pozostało 580 znaków

2015-10-29 21:23
Zimny Samiec
0

srry za te fory na koncu które rysuja spacje, musze sie wreszcie kiedys zarejestrowac i miec mozliwosc edycji postów ;>

Pozostało 580 znaków

2015-10-29 21:36
Zimny Samiec
0

Poprawiłem ten kod. Kod chyba łatwiejszy do zrozumienia niż ten z macierzami, i łatwo go można przekleić na jave. Lecz wydaje mi się że nie istnieje magiczny for który by 2 części robił za jednym razem :(

#include <iostream>

using namespace std;

int main() {
    int stars = 0;
    int spaces = 0;

    const int starsStart = 10;

    int sandglassHeight = starsStart * 2 - 1;

    for(int i=0; i< starsStart; i++){ //gora
        stars = starsStart - i;
        spaces = i;
        for (int k=0; k< spaces; k++){
            cout << " ";
        }
        for(int j=0; j<stars; j++){
            cout << "* ";
        }
        cout<< endl;
    }
    for(int i=2; i< starsStart + 1; i++){ //dol
        stars = i;
        spaces = starsStart - i;
        for (int k=0; k< spaces; k++){
            cout << " ";
        }
        for(int j=0; j<stars; j++){
            cout << "* ";
        }
        cout<< endl;
    }

    return 0;
}
edytowany 1x, ostatnio: bogdans, 2016-12-13 18:26

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0