Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Array

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371

    Array

    ragazzi js lo mastico poco ma sto iniziando a lavorare con array
    ho realizzato questo
    una serie di cicli annidati che ultimo di questi è....

    for (l = p + 1; l <= (totnum); l++) {
    alert(numero[i] + numero[y] + numero[k] + numero[j] + numero[p] + numero[l] + "|");
    Col = parseInt(Col) + 1;
    comb[Col]=(numero[i],numero[y],numero[k],numero[j],numero[p],numero[l]);
    }

    la parte evidenzia in rosso funziona correttamente percio in quel punto ho i valori che mi aspetto ossia 1,2,3,4,5,6 etc.....
    che pero adesso dovrei mettere in un array bidimensionale -comb- per poi manipolarli diversamente.....
    ho provato a stamparli e non va dove sbaglio??

    for (g = 1; g <= Col; g++) {
    document.getElementById('101').value = document.getElementById('101').value + comb[g]+ "|";
    }

    successivamente vorrei confrontare il primo valore della matrice con il secondo valore come posso fare???
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    sinceramente non ci ho capito niente... tutte quelle variabili da dove escono? spiegati meglio...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    ti posto il codice completo
    <script language="javascript">
    numero = new Array();
    comb = new Array();
    function clc() {
    var Col = 0;
    numero[1] = 1;
    numero[2] = 2;
    numero[3] = 3;
    numero[4] = 4;
    numero[5] = 5;
    numero[6] = 6;
    numero[7] = 7;
    numero[8] = 8;
    numero[9] = 9;
    numero[10] = 10;
    var totnum = 10;
    for (i = 1; i <= (totnum-5); i++) {
    for (y = i+1; y <= (totnum - 4); y++) {
    for (k = y+1; k <= (totnum - 3); k++) {
    for (j = k + 1; j <= (totnum - 2); j++) {
    for (p = j + 1; p <= (totnum - 1); p++) {
    for (l = p + 1; l <= (totnum); l++) {
    document.getElementById('100').value = document.getElementById('100').value + numero[i] + numero[y] + numero[k] + numero[j] + numero[p] + numero[l] + "|";
    Col = parseInt(Col) + 1;
    comb[Col] = (numero[i], numero[y], numero[k], numero[j], numero[p], numero[l]);
    }
    }
    }
    }
    }
    }
    for (g = 1; g <= Col; g++) {
    document.getElementById('101').value = document.getElementById('101').value + comb[g]+ "|";
    }
    alert("Colonne Elaborate = "+parseInt(Col));
    }
    </script>

    <button id="1" onclick="javascript:clc();">1</button>

    <textarea name="numeri" id="100" rows="20" cols="100"></textarea>
    <textarea name="numeri" id="101" rows="20" cols="100"></textarea>


    Grazie

  4. #4
    6 cicli annidati? Ho visto bene?

    Non vorrei suonare frettoloso, ma qualsiasi cosa sia e per quanto ogni ciclo effettui pochi passaggi, sarebbe da ripensare radicalmente. 6 cicli annidati sono una enormità logaritmica.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    anche se lavorano su pochissimi dati ma hai una alternativa???

  6. #6
    Ma guarda non mi è chiaro cosa fa la funzione (ti dico la veritàm sono anche assonnato in questo momento), il fatto è che 6 cicli annidati sono proprio da evitarsi come opzione concettuale, anche se fanno pochi cicli.
    Inoltre ci sono delle stranezze:

    numero = new Array();
    numero[1] = 1;

    E' una cosa legittima, ma perchè non indicizzi a partire da zero? Di solito si fa così. Ora, non è che io sia un programmatore ligio alla ortodossia, anzi. Ma non vorrei che in questo caso più che originalità eterodossa del tuo codice si tratti invece di sviste.
    Peraltro, sarebbe più semplice:

    numero = new Array(1,2,3,4,5,6,7,8,9,10);
    in talcaso alert(numero[0]) resitituisce ovviamente 1. Ho capito che tu cerchi la simmetria fra chiave e valore, ma in javascript e in programmazione in generale questi isomorfismi (scusa il parolone) non hanno senso: il programmatore sa che il numero ad esempio 7 si trova all' indice 7-1

    Il problema, come ti diceva Vindav, è che non si capisce l'obbiettivo del tuo codice. Forse se provi a riformulare - magari non rispondo io ma aiuterà qualcun altro.
    ciao!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    l'obbiettivo del codice è quello di sviluppare sistemi per super enalotto prima integrali e poi ridotti....accetto qualsissi consiglio....
    grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    hai centrato la cosa cercavo simmetria fra chiave e valore, almeno per le prove poi cambiare e partire da 0 era semplice....
    non era una svista ma voluto

  9. #9
    Sì con obbiettivo intendo dire che non è chiaro cosa dovrebbe fare quella cosa:

    for (i = 1; i <= (totnum-5); i++) {
    for (y = i+1; y <= (totnum - 4); y++) {
    for (k = y+1; k <= (totnum - 3); k++) {
    for (j = k + 1; j <= (totnum - 2); j++) {
    for (p = j + 1; p <= (totnum - 1); p++) {
    for (l = p + 1; l <= (totnum); l++) {

    Non si capisce, sinceramente.
    Comunque se come dici mastichi da poco javascript, la applicazione che ti riproponi è ambiziosissima. Anche perchè non credo che si possano creare sistemi di "lottomatica" senza ricorrere alla ricorsione - nella oscurità dello scopo di quei cicli annidati probabilmente sta proprio il tentativo di implementare una qualche forma di ricorsione senza la ricorsione.

    E in effetti, in caso di computazioni intensive, la ricorsione va evitata per scongiurare lo stack overflow. ma guarda che sono cosine che metterebbero in difficoltà chiunque. Non chiedi poco.

    Per me, è ancora oscuro l'obbiettivo di quei cicli - con obbiettivo non intendo dire il proposito del progetto, ma cosa dovrebbero fare proprio quei cicli lì con quelle variabili. Chiarendolo quanto più puoi, se non ti aiuto io quantomeno aumenti le tue possibilità ti aiuti qualcun altro.
    ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Grazie per tutti i suggerimenti
    Cmq tornando al nostro discorso......io chiedevo

    document.getElementById('100').value = document.getElementById('100').value + numero[i] + numero[y] + numero[k] + numero[j] + numero[p] + numero[l] + "|";

    restituisce i seguenti valori
    123456|123457|123458|123459|123467|123468|........ ......
    che io vorrei passare a comb
    ossia vorrei che
    comb [1][0]=restituisse 1;
    comb [1][1]=restituisse 2;
    comb [1][2]=restituisse 3;
    comb [1][3]=restituisse 4;
    comb [1][4]=restituisse 5;
    comb [1][5]=restituisse 6;

    comb [2][0]=restituisse 1;
    comb [2][1]=restituisse 2;
    comb [2][2]=restituisse 3;
    comb [2][3]=restituisse 4;
    comb [2][4]=restituisse 5;
    comb [2][5]=restituisse 7;

    comb [3][0]=restituisse 1;
    comb [3][1]=restituisse 2;
    comb [3][2]=restituisse 3;
    comb [3][3]=restituisse 4;
    comb [3][4]=restituisse 5;
    comb [3][5]=restituisse 8;.......................etc........

    la mia domanda è io sto caricando comb in questo modo è giusto ??????
    Col = parseInt(Col) + 1;
    comb[Col] = (numero[i], numero[y], numero[k], numero[j], numero[p], numero[l]);

    poi per leggere i valori faccio

    alerte(comb[1][0]);
    alerte(comb[1][1]);
    alerte(comb[1][2]);
    alerte(comb[1][3]);
    alerte(comb[1][4]);..........

    ma la risposta è "undefined" dove sbaglio ????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.