Oppure

Loading
13/11/09 15:27
microprocessore
se ti ho capito bene andrebbe cambiata la procedura in funzione, quindi prima del main ho fatto così:
        
//funzione
static esemplare fusione(esemplare[] v, esemplare[] v1)
{
    esemplare[] v2 = new esemplare[v.Length + v1.Length];
    return v2;
}

e nel main così:
//creo vettore unico
esemplare[]scheda=fusione(squadra1, squadra2);

esemplare è il tipo dello struct.

ma ho ancora dei problemi... mi compaiono questi errori:
Errore    1    Impossibile convertire implicitamente il tipo 'Equipe_ricercatori.Program.esemplare[]' in 'Equipe_ricercatori.Program.esemplare'

Errore    2    Impossibile convertire implicitamente il tipo 'Equipe_ricercatori.Program.esemplare' in 'Equipe_ricercatori.Program.esemplare[]'

Errore    3    'System.Array' non contiene una definizione di 'Lenght' e non è stato trovato alcun metodo di estensione 'Lenght'che accetta un primo argomento di tipo 'System.Array'. Probabilmente manca una direttiva using o un riferimento a un assembly.    

Errore    4    'System.Array' non contiene una definizione di 'Lenght' e non è stato trovato alcun metodo di estensione 'Lenght'che accetta un primo argomento di tipo 'System.Array'. Probabilmente manca una direttiva using o un riferimento a un assembly.

Errore    5    Impossibile applicare l'operatore '>' a operandi di tipo 'gruppo di metodi' e 'int'    

Errore    6    Impossibile convertire implicitamente il tipo 'string' in 'int'    

Errore    7    Impossibile convertire implicitamente il tipo 'int' in 'string'
Ultima modifica effettuata da microprocessore 13/11/09 15:28
aaa
13/11/09 15:32
Il Totem
Hai dimenticato le parentesi quadre definendo il tipo restituito dalla funzione.
aaa
13/11/09 15:40
microprocessore
intendi così?

static esemplare fusione(esemplare[] v, esemplare[] v1)
        {
            esemplare[] v2 = new esemplare[v.Length + v1.Length];
            return esemplare []v2;
        }

perchè anchè facendo così mi si presentano molti errori
Ultima modifica effettuata da microprocessore 13/11/09 15:41
aaa
13/11/09 17:48
Thejuster
potresti gentilmente postare un pò tutto quello che serve?

perchè mi sembra tutto confuso.
con questo esempio non riesco a darti aiuto.



static esemplare fusione(esemplare[] v, esemplare[] v1)
        {
            esemplare[] v2 = new esemplare[v.Length + v1.Length];
            return esemplare []v2;
        }



visto che la funzione che intendi fare in questo esempio
non è specificato di che tipo è.


esemplare[]scheda = fusione(squadra1, squadra2);

esemplare[] scheda di che tipo è?
poi è impostato male.

và prima il tipo, dopo le parentesi e dopo ancora il nome della var del tipo
int[] esemplare;

cmq se ti serve come eseguire la funzione sugli array

il metodo corretto e questo

private int[] funzione(int squadra1, int squadra2)
{

}

devi sempre specificare il tipo + l'array nella funzione
e dopo prendi il valore con il return.
Ultima modifica effettuata da Thejuster 13/11/09 17:51
mire.forumfree.it/ - Mire Engine
C# UI Designer
13/11/09 19:01
microprocessore
esemplare è il tipo del vettore...
ho creato una struttura chiamata esemplare e ho poi dichiarato un vettore di tipo esemplare.
quindi il tipo della funzione è esemplare
Ultima modifica effettuata da microprocessore 13/11/09 19:02
aaa
13/11/09 19:38
Gianluca87
Ciao, ti propongo di cambiare il vettore con una lista....
la cosa è molto semplice usi la tua struct scheda dentro una lista in questo modo:
public struct Scheda
{
  public int var1;
  public int var2;
}
List<Scheda> Schede = new List<Scheda>();

ovviamente va dichiarata nella classe del form esterna alle tue function se vuoi l'istanza sia comune per tutte le funzioni che hai nel tuo form
sucessivamente senza curarti dei puntatori puoi ciclare gli elementi Scheda della lista con un foreach in questo modo
foreach (Scheda iScheda in Schede)
{

}

senza aver bisogno di gestire un puntatore puoi usare iSchede per gestire operazioni sulla scheda puntata dal ciclo....
se hai bisogno ad esempio di fare un ciclo solo sulle schede che hanno ad esempio var1 = 5 basta che imposti una condizione Where sulla collection della foreach :
foreach (Scheda iScheda in Schede.Where(Scheda => Scheda.var1 == 5))
{

}

se vuoi usare questo metodo e hai dei dubbi sono a disposizione.
aaa
13/11/09 19:46
Thejuster
esemplare e appunto una struttura non un tipo quindi non puoi usarla come array.


ma a questo punto non fai prima a farti una lista?
risparmiando tempo.

cmq ti ho scritto questa piccola porzione di codice
spero possa tornarti utile.

non tentarla di usarla, ma piu che altro.
cerca di capire il procedimento. :k:


 public struct esemplare
        {

            public int larghezza;
            public int lunghezza;

        }


        public esemplare esemplares;
          
        private int[] fuzione(int e1,int e2)
        {
            int[] ret = new int[1];
            ret[0] = e1 + e2;
            return ret;
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            esemplare es = new esemplare();
            es.larghezza = 100;
            es.lunghezza = 100;

            int[] esemp = new int[2];
            esemp[0] = es.lunghezza;
            esemp[1] = es.larghezza;

            int[] risultato = fuzione(esemp[0], esemp[1]);

            MessageBox.Show(risultato[0].ToString());
        }

mire.forumfree.it/ - Mire Engine
C# UI Designer
13/11/09 20:00
Gianluca87
Postato originariamente da Thejuster:

esemplare e appunto una struttura non un tipo quindi non puoi usarla come array.

come no... certo che si può usare come vettore ....
Scheda[] Schede = new Scheda[10];
aaa