Diskuze: Pomoc s ukolem do školy
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
poradit není problém. S čím konkrétně?
Asi nějak takto by to mělo vypadat (nevím na jakých hodnotách to bude učitel zkoušet
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š.
Ja mam hotovy ten ctverec jen nevym jak tam dostat tu uhlopricku
Ta uhlopricka je vzdycky na pozici X=Y ...
[EDIT] promin, zapomel jsem dát "odpovědět" na Neaktivní uživatel
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)
Hmm stejne mi to furt nejak nedochazi ;//
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š.
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
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ů!
Zobrazeno 13 zpráv z 13.