Řešení faktoriálu – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Řešení faktoriálu – JavaScript, AJAX, jQuery – Fórum – Programujte.comŘešení faktoriálu – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Patrik
~ Anonymní uživatel
133 příspěvků
12. 6. 2012   #1
-
0
-

3. Vstupní pole pro vložení čísla s tlačítkem „Vypočítej“. Po zadání čísla bude zobrazena tabulka faktoriálů od 1 do zadaného čísla. Bude-li číslo větší než 100, zobrazí se pouze zpráva, že je číslo příliš velké.

Zatim se snažim vyřešit faktorial aby se vypisoval v poli.

<script language="JavaScript">
    p=0
function faktorial(n) {n=document.getElementById("vstoupit1").value;
                      document.getElementById("vystup").innerHTML=
                      if (n==0 || n==1) return 1;
                      else return n*faktorial(n-1);
                      p++;document.getElementById("pocet").innerHTML=p}
    


 


 </script>
   
<h3>Číslo</h3> 
  <input id="vstoupit1" type="text">
   
<input type="button" value="Klik" onclick="soucet()">  

Zatim jsem to napsal takhle ale nefunguje mi to. Kde je chyba. A mužu za innerHTML napsat vubec if?

Nahlásit jako SPAM
IP: 91.219.240.–
JoDiK
~ Anonymní uživatel
987 příspěvků
13. 6. 2012   #2
-
0
-

#1 Patrik
1. Chyba je už v algoritmu (když pominu ty nesmysly dále). Kdyby sis ho nejdřív nakreslil, tak bys takový nesmysl vůbec nenaprogramoval.

místo vzorce: n!=n*(n-1)!

jsi naprogramoval vzorec n!=n*n!

2. Teroreticky může být cokoliv kdekoliv, ale otázka je, co to má dělat...

Nahlásit jako SPAM
IP: 88.103.233.–
JoDiK
~ Anonymní uživatel
987 příspěvků
13. 6. 2012   #3
-
0
-

#1 Patrik
Zdá se, že programování není tvůj koníček...

Zkus tedy následující:

Nejdřív se vyprdni na nějaký faktoriál, a začni základy:

1. Při kliknutí na tlačítko zobraz třeba text "Kliknul jsi!"

2. Uprav to tak, že při kliknutí na tlačítko zobrazíš obsah vstupního pole

3. Uprav to tak, že při kliknutí na tlačítko nejdřív zjistíš, jestli je ve vstupním poli něco zadáno, když ne, zobraz chybovou hlášku, když ano, zobraz, co bylo zadáno

4. Uprav předchozí tak, že místo toho co je zadáno vypíšeš třeba druhou mocninu toho, co bylo zadáno.

Až tohle všechno budeš mít, (když ti cokoli nepůjde, ptej se) tak budeme pokračovat s faktoriálem...

Nahlásit jako SPAM
IP: 88.103.233.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #4
-
0
-

Abych pravdu řekl tak tady jsem vedle .. at se snažim jak se snažim vymyslet tak to nechápu 

Nahlásit jako SPAM
IP: 91.219.240.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #5
-
0
-

Tak už mi to počita 

<script language="JavaScript">
    p=0
function nasobek() {x=document.getElementById("vstoupit1").value;
                      document.getElementById("vystup").innerHTML=2*x;
                      p++;document.getElementById("pocet").innerHTML=p}
    


 


 </script>
   
<h3>Číslo</h3> 
  <input id="vstoupit1" type="text">
   
<input type="button" value="Klik" onclick="nasobek()">   
   
   
<h1> Výsledek </h1>  
  <p id="vystup">
  &nbsp;
  </p>
  <h3>Počet výpočtů:<span id="pocet">0</span></h3>

Takže funguje vystup

Nahlásit jako SPAM
IP: 91.219.240.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #6
-
0
-

Ale dál nevím jak udělat faktorial

Nahlásit jako SPAM
IP: 91.219.240.–
JoDiK
~ Anonymní uživatel
987 příspěvků
13. 6. 2012   #7
-
0
-

#6 Patrik
S faktoriálem ještě chvilku počkej, udělej funkci dvojnásobek, a místo přímeho výpočtu 2*x zavolej funkci dvojnásobek(x), které předáš to x a ona vrátí dvojnásobek. Zvládneš to?

Nahlásit jako SPAM
IP: 88.103.233.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #8
-
0
-

Obavam se že nezvladnu :/

Nahlásit jako SPAM
IP: 91.219.240.–
JoDiK
~ Anonymní uživatel
987 příspěvků
13. 6. 2012   #9
-
0
-

#8 Patrik
function dvakrat(x) {
  return 2*x;
  }

Tak aspoň zvládni zavolání té funkce...

Nahlásit jako SPAM
IP: 88.103.233.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #10
-
0
-

   

    <script language="JavaScript">
    p=0

    
function dvakrat(x) 
{
  return 2*x;
}

 


 </script>
   
<h3>Číslo</h3> 
  <input id="vstoupit1" type="text">
   
<input type="button" value="Klik" onclick="dvakrat(x)">   
   
   
<h1> Výsledek </h1>  
  <p id="vystup">
  &nbsp;
  </p>
  <h3>Počet výpočtů:<span id="pocet">0</span></h3>

Takhle?

Nahlásit jako SPAM
IP: 91.219.240.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #11
-
0
-

Ale nefunguje to

Nahlásit jako SPAM
IP: 91.219.240.–
JoDiK
~ Anonymní uživatel
987 příspěvků
13. 6. 2012   #12
-
0
-

#11 Patrik
No, protože jsi mimo.

Přece funkce dvakrat jenom násobí dvěma libovolnou hodnotu x

Funkce nasobek čte vstupní údaj, spočítá výsledek a zapíše výstupní údaj.

Tak kterou funkci asii budeš volat na to kliknutí???

Takže se vrať k předchozí verzi a místo 2*x ve funkci nasobek napiš dvakrat(x)

Nahlásit jako SPAM
IP: 88.103.233.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #13
-
0
-

Zajimave je že predtim me to napadlo udelal jsem to a nefungovalo to a ted. Takže to bych měl a  už budeme přistupovat k faktoriálu či jeste ne?

Nahlásit jako SPAM
IP: 91.219.240.–
JoDiK
~ Anonymní uživatel
987 příspěvků
13. 6. 2012   #14
-
0
-

#13 Patrik
Ještě jeden krok.

Ve funkci dvakrát ještě zkus přidat vyhodnocení (něřeš, že to je třeba matemetický nesmysl)

Jestliže je číslo x menší než 10 tak se bude vracet dvojnásobek, jinak se bude vracet polovina.

Příklad když zadáš 6 vrátí se 12, když zadáš 22, vrátí se 11.

Pak už půjdeme na faktoriál...

Nahlásit jako SPAM
IP: 88.103.233.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #15
-
0
-

ja to proste nechapu, ale napsal jsem tohle  

    <script language="JavaScript">
    p=0
function nasobek() {x=document.getElementById("vstoupit1").value;
                      document.getElementById("vystup").innerHTML=dvakrat(x);
                      p++;document.getElementById("pocet").innerHTML=p}
    
function dvakrat(x) 
{
  return 2*x;
  if (x<10) x=2*x};
}

 


 </script>
   
<h3>Číslo</h3> 
  <input id="vstoupit1" type="text">
   
<input type="button" value="Klik" onclick="nasobek()">   
   
   
Nahlásit jako SPAM
IP: 91.219.240.–
JoDiK
~ Anonymní uživatel
987 příspěvků
13. 6. 2012   #16
-
0
-

A zkusils, jestli to funguje?

Nahlásit jako SPAM
IP: 88.103.233.–
JoDiK
~ Anonymní uživatel
987 příspěvků
13. 6. 2012   #17
-
0
-

#15 Patrik
Co nechápeš?

Nahlásit jako SPAM
IP: 88.103.233.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #18
-
0
-

Zkusil a nefunguje, k´mrknu na to jeste zitra vypadá to jako lehke, chapu jak to ma pracovat ale zapsat to neumím

Nahlásit jako SPAM
IP: 91.219.240.–
JoDiK
~ Anonymní uživatel
987 příspěvků
13. 6. 2012   #19
-
0
-

#18 Patrik
Podívej se na syntaxi a význam příkazu IF a pak zkus zapsat tím příkazem toto:

Jestliže je číslo x menší než 10 tak se bude vracet dvojnásobek, jinak se bude vracet polovina.

A až to budeš mít zapsané, uvědom si, že funkce vrací hodnotu uvedenou za klíčovým slovem return - takže ho správně použij v tom IF...

Nahlásit jako SPAM
IP: 88.103.233.–
Patrik
~ Anonymní uživatel
133 příspěvků
13. 6. 2012   #20
-
0
-

takže tam bude i příkaz else? Že? No zitra na to mrkn ua snad neco vymyslím .. Ale ten zapis mi dělá problém

Nahlásit jako SPAM
IP: 91.219.240.–
Patrik
~ Anonymní uživatel
133 příspěvků
17. 6. 2012   #21
-
0
-

Tak jsem faktorál vyřešil ale nevím jak to udelat aby mi to nevypisovalo na nove strance ale do toho obdelniku co tam mám. Prosím pomozte

   <div id="obsah">

    <script language="JavaScript">
    p=0
    max=0
function nasobek() {x=document.getElementById("vstoupit1").value;
                      document.getElementById("vystup").innerHTML=dvakrat(x);
                      p++;document.getElementById("pocet").innerHTML=p}
    
function dvakrat(x) 
{
  for (var i=1, f=1;i<=x;i++,f=f*i) {if (i<10)document.write("0"+i+"!="+f+"<br>")
                                    else document.write(i+"!="+f+"<br>") };
  
}

 


 </script>
   
<h3>Číslo</h3> 
  <input id="vstoupit1" type="text">
   
<input type="button" value="Klik" onclick="nasobek()">  
Nahlásit jako SPAM
IP: 91.219.240.–
JoDiK
~ Anonymní uživatel
987 příspěvků
17. 6. 2012   #22
-
0
-

#21 Patrik
No protože tam zas matláš dohromady víc věcí...

Buď teda vkládej do nachystaných "obdélníků" pomocí innerHTML a nebo piš do dokumentu pomocí write...

Nahlásit jako SPAM
IP: 88.103.233.–
Patrik
~ Anonymní uživatel
133 příspěvků
18. 6. 2012   #23
-
0
-

Jenže když to co mam v tom write dam do inner tak to nejede. Prosím nepředelal a neposlal bys mi to tady? :)

Nahlásit jako SPAM
IP: 91.219.240.–
JoDiK
~ Anonymní uživatel
987 příspěvků
18. 6. 2012   #24
-
0
-

#23 Patrik
Kdybys pokračoval v tom, co jsem po tobě chtěl, tak bysme sem došli.

Zkusíme to tedy jinak, tady to máš a zbytek už si udělej sám...

Chybí ti tam ještě: "Bude-li číslo větší než 100, zobrazí se pouze zpráva, že je číslo příliš velké. "

<script language="JavaScript">
 var   p=0

function vypocet() {x=document.getElementById("vstup").value;
                      document.getElementById("vystup").innerHTML=vsechny_faktorialy(x);
                      p++;document.getElementById("pocet").innerHTML=p}
    
function vsechny_faktorialy(x) 
{
var s="Faktorialy:"
  for (var i=1, f=1;i<=x;i++,f=f*i) {s=s+"<br>"+i+"!="+f };
  return s
}

</script>
 
<div id="obsah">
   
<h3>Zadej číslo, ze kterého se má počítat faktoriál</h3> 
<form>
  <input id="vstup" type="text">
  <input type="button" value="Klik" onclick="vypocet()">   
</form>  
<h2> Výsledek </h2>  
  <p id="vystup">
  &nbsp;
  </p>
  <h3>Počet výpočtů: <span id="pocet">0</span></h3>
</div>
Nahlásit jako SPAM
IP: 88.103.233.–
Patrik
~ Anonymní uživatel
133 příspěvků
19. 6. 2012   #25
-
0
-

Dekuji moc a to max cislo se udělá jak? :)  Předem dekuji :)

Nahlásit jako SPAM
IP: 91.219.240.–
CZechBoY+4
Věrný člen
20. 6. 2012   #26
-
0
-

dáš tam podmínku if(x>5) { return ("Příliš velké číslo");}

Nahlásit jako SPAM
IP: 213.192.10.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Vypočet faktorialu — založil robbie

řešení — založil Michael

Řešení 9. úlohy — založil black evil

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý