Diskuze: Pomoc s ukolem do školy

Java Java Pomoc s ukolem do školy

Aktivity (1)
Avatar
Lukáš Slabý (LynSis):9.12.2014 10:30

Ahoj lidi potřeboval bych poradit s ukolem do školy.

  • Máme udělat program který nám do console vypiše čtverec z hvezdiček a bude mít uhlopříčku (Uživatel zadává jak velký čverec to bude )
Editováno 9.12.2014 10:31
 
Odpovědět 9.12.2014 10:30
Avatar
Odpovídá na Lukáš Slabý (LynSis)
Michal Haňáček:9.12.2014 10:43

Ahoj,
poradit není problém. S čím konkrétně?

Nahoru Odpovědět 9.12.2014 10:43
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Lukáš Slabý (LynSis):9.12.2014 10:43

Asi nějak takto by to mělo vypadat (nevím na jakých hodnotách to bude učitel zkoušet

 
Nahoru Odpovědět 9.12.2014 10:43
Avatar
Odpovídá na Lukáš Slabý (LynSis)
Michal Haňáček:9.12.2014 10:48

Já tak nějak tušil co to má dělat, ale ptám se s čím chceš poradit = co se ti nedaří?

Aby jsi mě pochopil - rád ti poradím (a stejně tak ostatní), ale nikdo to za tebe psát nebude. Napsání té appky zabere méně času, než napsání tohodle komentáře. Ale když to za tebe někdo napíše, tak ty si z toho nic nevezmeš.

Nahoru Odpovědět  +1 9.12.2014 10:48
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Lukáš Slabý (LynSis):9.12.2014 10:56

Ja mam hotovy ten ctverec jen nevym jak tam dostat tu uhlopricku

 
Nahoru Odpovědět 9.12.2014 10:56
Avatar
Michal Haňáček:9.12.2014 10:58

Ta uhlopricka je vzdycky na pozici X=Y ...
[EDIT] promin, zapomel jsem dát "odpovědět" na Lukáš Slabý (LynSis)

Editováno 9.12.2014 10:58
Nahoru Odpovědět 9.12.2014 10:58
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
ycefire
Člen
Avatar
ycefire:9.12.2014 11:00

Znáš: počet hvězd /délku strany/
potřebuješ počítat: počet průchodů /začíná na 1čce/ (2 vnořené iterační cykly se stejným počtem(délka strany)), řádek

cyklus 1 (řádky)
počet průchodů zvýšit o 1
do proměnné řádku přidej *

cyklus 2 (sloupce, počet hvězd-1)
když je v cyklu 1 1. průchod
do proměnné řádku přidej *
pokud je v cyklu 1 poslední průchod
do proměnné řádku přidej *
pokud je průchod cyklu 1 vyšší než 1 a menší než počet hvězd-1, a cyklus 2 je v průchodu shodném s "počet průchodů" nebo průchodu shodném s "počet hvězd - počet průchodů"
do proměnné řádku přidej *
pokud je v cyklu 2 poslední průchod
do proměnné řádku přidej *
jinak
do proměnné řádku přidej " "
konec cyklu 2
vypiš řádek

konec cyklu 1

Netestoval jsem to, ale mělo by to být logicky správně. Vypíše to obě 2 úhlopříčky, pokud by šlo jen o jednu, jak tu někdo psal, pozice hvězdy by se rovnala shodě čísla sloupce a čísla řádku (X=Y)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 9.12.2014 11:00
Avatar
Odpovídá na Michal Haňáček
Lukáš Slabý (LynSis):9.12.2014 11:00

Hmm stejne mi to furt nejak nedochazi ;//

 
Nahoru Odpovědět 9.12.2014 11:00
Avatar
Odpovídá na ycefire
Lukáš Slabý (LynSis):9.12.2014 11:03

Ok dik skusim to nejak udelat ;)

 
Nahoru Odpovědět 9.12.2014 11:03
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Lukáš Slabý (LynSis)
Jan Vargovský:9.12.2014 11:08

Vyděl si strany, abys dostal posun o kolik bys ses měl posunout na každém řádku. Pak jen udělej cyklus pro všechny řádky kde vždycky uděláš hvězdičku na pozici řádek * posun, asi to ještě bude chtít nějak zaokrouhlovat podle toho, aby se to chovalo tak má, protože nemůžeš vypsat znak kde chceš.

Editováno 9.12.2014 11:09
 
Nahoru Odpovědět 9.12.2014 11:08
Avatar
Dan
Člen
Avatar
Dan:13.12.2014 14:11

Ahoj!

Je to pár týdnů co jsem se začal zajímat o programování a ještě kratší čas co jsem objevil tuhle super stránku. Začínám teď s javou, mám jen nepředstavitelně malé znalosti o tomto jazyce. Tato úloha mě zaujala a dlouho jsem přemýšlel nad tím jak bych jí vyřešil a první co mě napadlo byl pokus s polem. Ke své obrovské radosti jsem dokázal, ač nejspíš dosti těžkopádně, přijít na to jak by to bylo kdyby mělo jít o čtverec. Ale nedokázal jsem tuto úlohu dokončit

Skončil jsem tak že jsem nastavil podmínku IF když je počet řádků a sloupců stejný - zobrazí se poadovaný čtverec s úhlopříčkou

Pak jsem přidal ELSE a zde jsem vymazal úhlopříču, protože to není PODLE VZORU od Lukáše. Prosím vás o radu, pakliže chápete jak jsem to myslel a jak by se to dalo co nejpochopitlnějši doplnit

Díky za váš čas!

PS: promiňte ale nevím jak se tu obvykle vkládá kód, snad to takhle bude stačit

https://www.email.cz/…n8s9U/IT.bmp

Editováno 13.12.2014 14:14
 
Nahoru Odpovědět 13.12.2014 14:11
Avatar
Matěj Kripner
Redaktor
Avatar
Odpovídá na Dan
Matěj Kripner:13.12.2014 15:13

Výpis obdélníku i s úhlopříčkou lze řešit různě. Možné řešení v krocích:

1. Získání proměnných výška a šířka

int w = 5; // šířka
int h = 6; // výška

2. Vypsání horní hrany

for(int i = 0; i < w; i++) {
     System.out.print("*");
}
System.out.println();

3. Vypočtení poměru šířky ku výšce

float pomer = w / (float)h; // Přetypování je použito, aby nám vyšlo desetinné číslo

4. Pomocná proměnná index určující kam se má vypsat hvězdička úhlopříčky

int index;

5. Vytvoření cyklu, který projde řádku po řádce(kromě první a poslední). Začíná se od jedničky, protože proměnnou i budeme násobit a v případě nuly by došlo ke ztrátě výsledku

for(int i = 1; i < h - 1; i++) {

}

Uvnitř cyklu:
6. Výpočet pozice, na kterou se má umístit hvězdička na tomto řádku

index = Math.round(pomer * (float)i);

7. Vypsání počáteční hvězdičky

System.out.print("*");

8. Vytvoření cyklu, který v dané řádce projde znak po znaku. Na pozici, kam se má vypsat hvězdička ji vypíše, jinak vypíše výplňový znak - mezeru

for(int j = 1; j < w - 1; j++) {
     if(index == j)
          System.out.print("*");
     else
          System.out.print(" ");
}

9. Ukončení řádku a odřádkování - přechod na nový řádek

System.out.print("*");
System.out.println();

Konec cyklu
10. Vypsání dolní(poslední) řádky

for(int i = 0; i < w; i++) {
     System.out.print("*");
}
System.out.println();

Celkový kód:

int w = 5;
int h = 6;
for(int i = 0; i < w; i++) {
    System.out.print("*");
}
System.out.println();
float pomer = w / (float)h;
int index;
for(int i = 1; i < h - 1; i++) {
     index = Math.round(pomer * (float)i);
     System.out.print("*");
     for(int j = 1; j < w - 1; j++) {
         if(index == j)
             System.out.print("*");
         else
             System.out.print(" ");
    }
    System.out.print("*");
    System.out.println();
}
for(int i = 0; i < w; i++) {
    System.out.print("*");
}
System.out.println();

Funguje to trošičku jinak než na obrázku v zadání, ale také správně :)
Snad ti bude moje odpověď užitečná, přeju hodně úspěchů!

Nahoru Odpovědět 13.12.2014 15:13
To understand what recursion is, you must first understand recursion.
Avatar
Dan
Člen
Avatar
Dan:14.12.2014 10:41

Moc díky :)

 
Nahoru Odpovědět 14.12.2014 10:41
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.