Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Javascript - udělejte za mě domácí úkol!

Vytvořte skript, který pomocí věty vypíše aktuální čas.

Příklad: Pokud bude skript spuštěn ve 14:02:01 hodin, vypíše větu

Právě jsou dvě hodiny, dvě minuty a jedna sekunda.

Děkuji za každou odpověď, bádám nad tím, ale vůbec si nevím rady.

Změna předmětu, původně: Javascript (host)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Naházej ty číslovky ve tvaru slov do pole a pak vybírej dle indexů jako původních čísel. Př: var ar…
CoWayger 10.01.2012 19:49
CoWayger
Mily kolego, nechte si patentovat pole defaultne indexovana od hodnoty "2", Vas napad urcite mnoho v… nový
RooTan 05.06.2012 13:55
RooTan
a kde pise, ze by pole zacinalo od dvojky? Sem dost casto vzhuru dlouho do noci a tudíž si sem celke… poslední
Migilenik 05.06.2012 14:00
Migilenik
Moju češtinu ber s rezervou, ale toto by mohlo byť to, čo chceš: <!DOCTYPE html> <html><head> <meta… nový
los 10.01.2012 22:34
los
češtinu máš bezchybnou, nejsi z moravy?:)) nový
kmochna 10.01.2012 22:49
kmochna
z Jížní korei nový
Josef z Brna 11.01.2012 00:37
Josef z Brna
Nevím, jestli ještě původní tazatel má zájem se něco učit, ale mně u losova řešení něco zaujalo...… nový
JoDiK 11.01.2012 10:14
JoDiK
Áno, dobre rozmýšľaš. V tom (n - n % 10) /10 by sa to dalo zapísať aj ako (n - n0) / 10 vďaka tomu,… nový
los 11.01.2012 21:23
los
Děkuji "los" takhle jsem ti to představoval. No určitě nemám takové zkušenosti jako mnozí z vás prot… nový
Javascript 11.01.2012 17:28
Javascript

Moju češtinu ber s rezervou, ale toto by mohlo byť to, čo chceš:

<!DOCTYPE html>
<html><head>
	<meta charset="utf-8">
	<title>Čas</title>
</head><body>
	<script>
function inflect(texts, n) {
	return texts[n == 1 ? 0 : (1 < n && n < 5 ? 1 : 2)];
}
var numbers = [
	['nula', 'jedna', 'dvě', 'tři', 'čtyři', 'pět', 'šest', 'sedm', 'osm', 'devět', 'deset', 'jedenáct', 'dvanáct', 'třináct', 'čtrnáct', 'patnáct', 'šestnáct', 'sedmnáct', 'osmnáct', 'devatenáct'],
	['', '', 'dvacet', 'třicet', 'čtyřicet', 'padesát']
];
var texts = {
	info: ['Právě je', 'Právě jsou ', 'Právě je'],
	hours: ['hodina', 'hodiny', 'hodin'],
	minutes: ['minuta', 'minuty', 'minut'],
	seconds: ['sekunda', 'sekundy', 'sekund']
};
function toWords(n) {
	var n0 = n % 10;
	var n1 = 0|n / 10;
	return n1 == 1 ? numbers[0][n] : numbers[1][n1] + (!n1 || n0 ? numbers[0][n0] : '');
}
var div = document.body.appendChild(document.createElement('div'));
var text = div.appendChild(document.createTextNode(''));
setInterval(function() {
	var date = new Date;
	var h = date.getHours();
	var m = date.getMinutes();
	var s = date.getSeconds();
	text.data = [
		inflect(texts.info, h), ' ',
		toWords(h), ' ', inflect(texts.hours, h), ', ',
		toWords(m), ' ', inflect(texts.minutes, m), ' a ',
		toWords(s), ' ', inflect(texts.seconds, s), '.'
	].join('');
}, 200);
	</script>
</body></html>

Nevím, jestli ještě původní tazatel má zájem se něco učit, ale mně u losova řešení něco zaujalo...

Protože javascript zřejmě nemá operátor celočíselného dělení, všelijak se to obchází, já na to našel tohle:

(n - n % 10) /10

čemuž docela rozumím, nebo-li od čísla nejdřív odečtu zbytek po dělení a pak to vydělím a vyjde mi to vlastně bez toho zbytku

případně

n / 10 - n / 10 % 1

tomu už rozumím míň, ale snad je to tak, že to vydělím se zbytkem (za předpokladu, že dělení má vyšší prioritu než zbytek po dělení), zjistím zbytek tohoto výsledku po dělení jedničkou (což je vlastně ta desetinná část) a tu pak odečtu od toho podílu a zbyde mi celá část

0|n / 10;

tomuto ale rozumím nejmíň, je to vlastně dělení se zbytkem (dělení má vyšší prioritu) a s tím výsledkem se provede bitový součet s nulou???
To je asi z nějaké vyšší dívčí školy, rozumím tomu správně, že jakoby provádím bitový součet reálného čísla s celým, což způsobí, že výsledkem je celé číslo, jinak řečeno to odřízne desetinnou část?

Áno, dobre rozmýšľaš. V tom (n - n % 10) /10 by sa to dalo zapísať aj ako (n - n0) / 10 vďaka tomu, že sme si n % 10 uložili do n0.

0|výraz sa v JavaScripte používa na získanie celého čísla (podobne ako sa používa +výraz na konverziu reťazca na číslo). Bitový súčet je definovaný len nad celým číslom, takže ho pretypuje a bitový súčet ľubovoľného čísla s nulou je stále to isté číslo.

Zpět do poradny Odpovědět na původní otázku Nahoru