• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ciąg liczbowy- skrypt w Javascript

Object Storage Arubacloud
0 głosów
5,913 wizyt
pytanie zadane 19 listopada 2016 w JavaScript przez damianlxlx5 Obywatel (1,880 p.)

Witam

Otóż tworząc skrypt, który ma wyświetlać ciąg liczbowy między dwoma liczbami wprowadzonymi przez użytkownika zarówno ujemny jak i dodatni natknąłem się na pewien problem, z którym sobie już nawet poradziłem jednak nie do końca wiem z czego ten błąd wynikał, dlatego postanowiłem się tutaj was o to zapytać.

Skrypt ma działać tak jak na przykładzie. Użytkownik podaje 1 liczbę= 2,a 2 liczbę= 10 i ma wyświetlić po kolei cyfry 2-10.

Wykonałem taki kod, najprościej jak mogłem:

 

<script type="text/javascript">

var liczba1= prompt ("Wprowadz liczbe 1:","");
var liczba2= prompt ("Wprowadz liczbe 2:","");
if (liczba1<liczba2)
{
	for (liczba1;liczba1<=liczba2;liczba1++)
	{
	document.write(liczba1 +" ");
	}
}
if (liczba1>liczba2)
{
	for(liczba1;liczba1>=liczba2;liczba1--)
	{
	document.write(liczba1 +" ");
	}
}


</script>

I tu pojawiają się problemy. Otóż jak użytkownik podaje liczbę 1 większą od drugiej, to ciąg nie wyświetla się prawidłowo dodając 1 liczbę i powtarza ostatnią liczbę jeszcze raz. Przykładowo jak użytkownik poda pierwszą liczbę=2, zaś drugą 8 to wyświetli się następujący ciąg 2 3 4 5 6 7 8 9 8. 

Zaś jak użytkownik poda pierwszą liczbę= 2, a drugą= 10 to jako ciąg wyświetli się tylko liczba 2, nie bardzo wiem czemu?

Albo jak użytkownik wpiszę pierwszą liczbę=100, a drugą= 88 to wyświetli się taki ciąg 100 101 100 99 98 97 96 95 94 93 92 91 90 89 88.

Dlaczego tak się dzieje, co jest tego powodem?

Drugi przykład jest taki, że jak dodam do tego pierwszego skryptu x w pętli i przypiszę go do zmiennej liczba1 to wtedy część problemów znika tzn. ciąg wyświetla się prawidłowo przy podaniu liczb na przykład od 2 do 8 ale jak wpiszę liczbę od 2 do 10 to nadal wyświetla się w tym przypadku tylko liczba 2.

<script type="text/javascript">

var liczba1= prompt ("Wprowadz liczbe 1:","");
var liczba2= prompt ("Wprowadz liczbe 2:","");
if (liczba1<liczba2)
{
	for (x=liczba1;x<=liczba2;x++)
	{
	document.write(x +" ");
	}
}
if (liczba1>liczba2)
{
	for(x=liczba1;x>=liczba2;x--)
	{
	document.write(x +" ");
	}
}


</script>

Co zmienia przypisanie x do zmiennej liczba1. Przecież to na to samo wychodzi teoretycznie, nie rozumiem.

Skrypt działa całkowicie prawidłowo dopiero gdy dodam do funkcji prompt dodatkowo funkcję parseInt.

<script type="text/javascript">

var liczba1= parseInt(prompt ("Wprowadz liczbe 1:",""));
var liczba2= parseInt(prompt ("Wprowadz liczbe 2:",""));
if (liczba1<liczba2)
{
	for (x=liczba1;x<=liczba2;x++)
	{
	document.write(x +" ");
	}
}
if (liczba1>liczba2)
{
	for(x=liczba1;x>=liczba2;x--)
	{
	document.write(x +" ");
	}
}


</script>

Myślę, że w miarę dokładnie opisałem problem i bardzo proszę o wyjaśnienie problemu.

2 odpowiedzi

+1 głos
0 głosów
odpowiedź 19 listopada 2016 przez damianlxlx5 Obywatel (1,880 p.)
Okey, czyli rozumiem, że 1 błąd leży w tym, iż funkcja prompt nie zwraca liczby tylko tekst(string). Natomiast dalej nie rozumiem dlaczego jak przypisze w pętli for zmienna x=liczba1 to skrypt lepiej działa tzn. ciąg od 2 do 8 wyświetla się prawidłowo jak to opisałem, natomiast bez tego przepisania zmiennej do zmiennej ciąg od 2 do 8 wyświetla się w ten sposób  2 3 4 5 6 7 8 9 8. Co jest tego powodem, co daje to przypisanie x do zmiennej liczba1?
komentarz 19 listopada 2016 przez niezalogowany

co daje to przypisanie x do zmiennej liczba1?

- Nic.

if (liczba1<liczba2)
{
    for (liczba1;liczba1<=liczba2;liczba1++)
    {
    document.write(liczba1 +" ");
    }
}

to wyświetli 2 3 4 5 6 7 8

i zostawi zmienna liczba1 z wartością 9, dzięki czemu spełniony jest kolejny warunek

if (liczba1>liczba2)
{
    for(x=liczba1;x>=liczba2;x--)
    {
    document.write(x +" ");
    }
}

Odliczy zatem od 9 do 8, stąd na końcu
2 3 4 5 6 7 8 9 8

komentarz 19 listopada 2016 przez damianlxlx5 Obywatel (1,880 p.)
Aha już rozumiem skąd te błędy. Naprawdę bardzo Ci dziękuje za pomoc.

Podobne pytania

0 głosów
1 odpowiedź 378 wizyt
pytanie zadane 14 lutego 2018 w Systemy operacyjne, programy przez dambyl Początkujący (250 p.)
0 głosów
1 odpowiedź 604 wizyt
pytanie zadane 21 marca 2017 w Matematyka, fizyka, logika przez Jiin Obywatel (1,390 p.)
0 głosów
2 odpowiedzi 247 wizyt
pytanie zadane 25 marca 2016 w Java przez Dieet Nowicjusz (180 p.)

92,553 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...