Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C#] operazioni con array

    salve a tutti...
    ho un array di interi ordinati in maniera crescente ogni volta variabile...

    ho bisogno di fare questa cosa...
    quando 2 valori dell'array sono relativamente contigui (uno scarto di circa 30 unità), il valore più piccolo devo impostarlo come iniziale e quello più grande come finale, ovviamente riducendo la dimensione dell'array

    avrei in mente il metodo, ma non riesco a buttare giu due linee di codice...

    vi faccio un esempio di come avevo in mente di fare...

    l'array principale è formato da 5 elementi... [1; 60; 125; 134; 255]

    prima di eseguire la lettura dell'array, creo 2 array (o liste) chiamate inizio e fine

    quando lo scarto tra 2 elementi è maggiore di 30, per esempio 1 e 60, al primo posto utile dei 2 array, l'algoritmo dovrebbe inserire sia in inizio che in fine lo stesso valore... nel caso in cui invece, la differenza è inferiore a 30, come tra 125 e 134, in inizio dovrebbe essere inserito 125 e a fine dovrebbe essere inserito 134

    praticamente inizio e fine dovrebbero essere così composti:

    inizio: [1; 60; 125; 255]
    fine: [1; 60; 134; 255]

    non so come fare... chi mi suggerisce qualcosa???

  2. #2
    fai due indici e li incrementi quando inserci un elemento in un vettore.
    Ad esempio i per il primo e j per il secondo.
    Intanto stai scorrendo quello base e se vengono verificate quelle condizioni li salvi nel primo o nel secondo o in entrambi, aumentando l'indice a seconda del caso.
    ChromeOS.eu tutto su Chrome OS!
    HTML5 Answer Il 3D nel browser è arrivato! Sviluppa la tua app 3D per il browser!

  3. #3
    forse così ho risolto...

    codice:
            private void inizio_fine(List<int> arr)
            {
                inizio = new List<int>();
                fine = new List<int>();
                int ind = 0;
                foreach (int num in arr)
                {
                    if (ind == 0)
                    {
                        inizio.Add(num);
                        fine.Add(num);
                    }
                    else
                    {
                        int fin = fine[fine.Count - 1];
                        if ((num - fin) <= (fps * 2))
                        {
                            fine.Remove(fine.Count - 1);
                            fine.Add(num);
                        }
                        else
                        {
                            inizio.Add(num);
                            fine.Add(num);
                        }
                    }
                    ind++;
                }
    
            }
    ditemi che ne pensate...

  4. #4
    mi sembra buono così ad occhio. Se lo hai provato e funziona sei apposto
    ChromeOS.eu tutto su Chrome OS!
    HTML5 Answer Il 3D nel browser è arrivato! Sviluppa la tua app 3D per il browser!

  5. #5
    Originariamente inviato da morocarlo
    mi sembra buono così ad occhio. Se lo hai provato e funziona sei apposto
    a parte qualche piccola stronzata, dovrebbe essere a posto

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 © 2026 vBulletin Solutions, Inc. All rights reserved.