Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Generator 10 liczb losowych bez powtórzeń



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> ECMAScript
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
wisnia80



Dołączył: 27 Gru 2006
Posty: 177

PostWysłany: Nie Lut 21, 2016 5:21 pm  OP    Temat postu: Generator 10 liczb losowych bez powtórzeń Odpowiedz z cytatem Pisownia

Witam,

Niestety musze przyznac ze z JS nie mialem za wiele doczynienia ale musze cos w koncu wykonac i sie nauczyc.
Chciałbym wygenerować 10 liczb losowych bedacymi pytaniami w quizie.

Kombinuje coś w stylu:
Kod:
function randomize_question() {
    var rndquest;
    
    for(k=0;k<10;k++){
        Do(rndquest=Math.random()*11;)
        while ( for(j=0; j<questionNumber.length;j++){
            questionNumber[j]==rndquest;
            }
        );
        questionNumber[k]=rndquest;
        }
    }
}


Jezeli mozecie pomoc z algorytmem...

_________________
---------------------------------------------------------------
Nigdy nie mów ze czegoś nie da sie zrobić, bo ktoś tego nie wie i to zrobi.....
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
marcin_an



Dołączył: 26 Maj 2005
Posty: 18814

PostWysłany: Wto Lut 23, 2016 9:52 pm      Temat postu: Odpowiedz z cytatem Pisownia

Czego nie potrafisz? Stworzyć algorytmu czy zapisać go w ECMAScripcie? Patrząc na kod: jest to jakiś zupełnie bezensowny zbitek przypadkowych literek, które czasami układają się w słowa kluczowe z ES. Nie to, żeby ich wystąpienie w danym miejscu miało większy sens.

Zatem albo nie potrafisz stworzyć algorytmu i dostajesz pomoc dotyczącą algorytmu, albo nie wiesz, jak go przełożyć na kod (ale sam algorytm potrafisz pokazać i to robisz), albo to będzie traktowane jako rozwiązanie za ciebie zadania, czego nikt nie będzie robił. Wybieraj.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
wisnia80



Dołączył: 27 Gru 2006
Posty: 177

PostWysłany: Sob Lut 27, 2016 3:28 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Algorytm wiem jak powinien wygladać natomiast slabo poruszam sie w javascripcie wiec stad moj post...

Własnie zaczałem sie go uczyć.... wiec pomoc czasami jest nieodzowna. Natomiast szkoda sie rozwlekać w powyższy sposob już kiedyś byłem na forum gdzie moderator lubiał sie w podobny sposób wypowiadac a forum z merytorycznego zzamieniło sie w wywnetrzanie sie moderatora...co nie prowadzi w dobra strone.....

_________________
---------------------------------------------------------------
Nigdy nie mów ze czegoś nie da sie zrobić, bo ktoś tego nie wie i to zrobi.....
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
lethern



Dołączył: 09 Paź 2007
Posty: 1097

PostWysłany: Sob Lut 27, 2016 5:17 pm      Temat postu: Odpowiedz z cytatem Pisownia

ten kod przekłada się mniej więcej na coś takiego

powtórz 10 razy{
powtarzaj {
rndquest = losowa liczba z przedziału 0 do 11
} dopóki warunek (dalej jest błąd składni, ponieważ "for" nie jest warunkiem którego spodziewa się "while")
(nawet gdyby próbować rozszyfrować zawartość tego fora, to jest to pętla która wykonuje operację porównania dwóch liczb, tylko nic nie robiąc z efektem tego porównania)
zapisz rndquest
}


żeby przełożyć algorytm z języka naturalnego na język zrozumiały dla kompilatora, musisz używać mechanizmów które język (javascript) udostępnia, czyli np. pętle i warunki. Z tym że warunkiem pętli nie może być inna pętla... Musi to być coś, co oblicza się i zwraca wartość. Problem lezy dokładnie w miejscu, gdzie "while" oczekuje warunku/wartości... Jeżeli obliczenie tej wartości wymaga pętli - zrób to w odpowiednim miejscu, krok wcześniej przed warunkiem, oblicz wartość, a później umieścić ją w warunku - przynajmniej rozwiąże to problem błędu składni

Trudno coś więcej poradzić bez samego rozwiązywania problemu (sorry, ale ja nie potrzebuję rozwiązania tego problemu), trochę orientacji z pętlami i warunkami i powinieneś sobie poradzić

_________________
używasz Dev-Cpp? tools->editor options -> use tab character (włącz), smart tabs (wyłącz)... albo ściągnij np. Visual Studio C++ free.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
wisnia80



Dołączył: 27 Gru 2006
Posty: 177

PostWysłany: Nie Lut 28, 2016 1:23 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

POsiedzialem i narazie troche zmieniłem podejscie po twojej informacji lethern jednakże zastanawiam sie czy w dobra stroną idę z ta pętla....
Kod:

<script>
    var questionNumber=new Array();

function randomize_question() {
    var rndquestion;

    var k,j,exit;
    exit = 0;
    for (k = 0; k < 10; k++){
        do {
        exit = 0;
        rndquestion = Math.floor((Math.random() * 11));
        for (j = 0; j <= questionNumber.lenght ; j++) {
                if (questionNumber[j] == rndquestion) {
                exit = 1;
                } else {
                
                }            
            }    
        }
        while (exit == 1);
        questionNumber[k] = rndquestion;
    }
}

function pokaz() {
var i;
for (i= 0; i<10; i++) {
      document.write(questionNumber[i] + "<br />");
}
}
randomize_question();
pokaz();


</script>


Od moderatora: interpunkcja! marcin_an

_________________
---------------------------------------------------------------
Nigdy nie mów ze czegoś nie da sie zrobić, bo ktoś tego nie wie i to zrobi.....
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
marcin_an



Dołączył: 26 Maj 2005
Posty: 18814

PostWysłany: Nie Lut 28, 2016 10:44 pm      Temat postu: Odpowiedz z cytatem Pisownia

wisnia80 napisał:
Algorytm wiem jak powinien wygladać
... i do chwili obecnej go nie pokazałeś.

wisnia80 napisał:
natomiast slabo poruszam sie w javascripcie wiec stad moj post...
I od tego jest forum, żeby ci w tym pomóc. Ale sam też musisz coś z siebie dać, a jedyne, co pokazałeś, to kod, który świadczy o jednym: zerowym wkładzie własnym. Gdybyś zadał sobie trud próby przeczytania i zrozumienia tego kodu, to mocno wątpię, byś coś takiego umieścił na forum. Ten kod jest kompletnym nonsensem. Nie dlatego, że gdzieś popełniłeś jakiś błąd wynikający z nieznajomości ECMAScriptu, tylko dlatego, że stanowi zbitek liter bez większego ładu i składu, o jakimkolwiek znaczeniu nie mówiąc. Typowy przykład działania analogicznego do shotgun debuggingu: zamiast pomyśleć i zrozumieć, powrzucać co się da w nadziei, że może samo zacznie działać. Przekładając to na VB6, który znasz, napisałeś coś w tym stylu:
Kod:
Do (rndquest = Rnd() * 11 End)
Loop While (For j = 0 To questionNumber)
    x = (questionNumber(j) = rndquest)
    Next
)
Jakiej innej reakcji się spodziewałeś?

No chyba, że chcesz komuś wmówić, że wiedząc, że składnia pętli while to while (warunek) polecenie, czyli mając gotowy szablon, do którego musisz wstawić dwa pasujące klocki, jako warunek wstawiłeś coś, co warunkiem nie jest. Jeżeli to próbujesz powiedzieć, to obrażasz sam siebie.

wisnia80 napisał:
Własnie zaczałem sie go uczyć.... wiec pomoc czasami jest nieodzowna. Natomiast szkoda sie rozwlekać w powyższy sposob już kiedyś byłem na forum gdzie moderator lubiał sie w podobny sposób wypowiadac a forum z merytorycznego zzamieniło sie w wywnetrzanie sie moderatora...co nie prowadzi w dobra strone.....
Najmocniej przepraszam za szczerość i odezwanie się. Rozumiem, że jest to dla mnie sugestia, żebym następnym razem bez słowa wywalił wątek zamiast komentować i wskazać, co masz zrobić.

Na marginesie: ja tego nie pisałem jako moderator, tylko jako użytkownik. Wiadomości wysyłane w ramach działań moderatorów są jako takie oznaczane. Tę wiadomość też piszę jako zwykły członek forum.

wisnia80 napisał:
czy w dobra stroną idę z ta pętla....
Średnio. Przede wszystkim próbujesz użyć niedziałającego algorytmu. Do wykonania losowej permutacji użyj algorytmu Fishera:
Kod:
DLA i OD 0 DO n-2:
    r := losowy indeks z przedziału [i; n)
    zamień  tab[i]  z  tab[r]
Gdzie tab to tablica n elementów do przemieszania. W twoim przypadku będzie to lista pytań.

Wersja alternatywna, trochę mniej wydajna, ale czasam prostsza do zrozumienia:
Kod:
DLA KAŻDEGO ELEMENTU tab:
    r1 := losowy indeks z przedziału [0; n)
    r2 := losowy indeks z przedziału [0; n)
    zamień  tab[r1]  z  tab[r2]


W przeglądarce do operowania na stronie służy DOM i jego metody. Nie wiem, skąd wziąłeś document.write, ale zapomnij na wieki o tym syfie. Proponuję też od razu zapoznać się z JQuery - sporo ci ułatwi. Tzn. pracować na gołym DOMie też musisz umieć, ale do praktycznych zastosowań JQuery jest lepszym pomysłem.

Gdy już to napiszesz, popatrz na lodash lub underscore.js: masz tam gotową metodę shuffle realizującą to, czego potrzebujesz. I dziesiątki innych użytecznych rzeczy.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
wisnia80



Dołączył: 27 Gru 2006
Posty: 177

PostWysłany: Pon Lut 29, 2016 9:12 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzieki zrobiłem juz i działa.

PS: pytanie czy mozna za pomocą JS wysłąć maila o dowolnej tersci tekstowej...

_________________
---------------------------------------------------------------
Nigdy nie mów ze czegoś nie da sie zrobić, bo ktoś tego nie wie i to zrobi.....
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
marcin_an



Dołączył: 26 Maj 2005
Posty: 18814

PostWysłany: Pon Lut 29, 2016 9:22 pm      Temat postu: Odpowiedz z cytatem Pisownia

Oczywiście, że tak. Kwestia środowiska, w którym uruchomisz skrypt, i udostępnianych przezeń interfejsów. Możesz nawet wystrzelić pocisk balistyczny z głowicą nuklearną.

Zanim zapytasz "jak?", cofnij się do swojego pytania i zauważ, że zapomniałeś napisać, jakiego środowiska owe pytanie dotyczy. Biorąc pod uwagę, że wcześniej zdawałeś się mówić o przeglądarce WWW i jest to jedno z najpopularniejszych zastosowań ECMAScriptu, to - przyjmując, że nadal mówisz o tym środowisku - odpowiedź brzmi "oczywiście, że nie". Przynajmniej nie bezpośrednio.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
wisnia80



Dołączył: 27 Gru 2006
Posty: 177

PostWysłany: Pon Lut 29, 2016 9:39 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Tak z poziomu przegladraki. powiedzmy ze udalo mi sie wygenerować te 10 liczb do tablicy, nastepnie wyswietlić na stronie www a teraz zastanawiam sie jak je wysłać na maila ...
czyli np JS nie obsluguje strony klienta czyli mtrzeba skorzysac pwenie z php... i zrobić wirtualne pole tekstowe ktore wypenie danymi z tablicy a php to wysle....

_________________
---------------------------------------------------------------
Nigdy nie mów ze czegoś nie da sie zrobić, bo ktoś tego nie wie i to zrobi.....
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> ECMAScript Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.06863 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |