ACCEDI

Password dimenticata?

×
Seguici su Instagram Feed RSS Seguici su YouTube
Pagina 1 di 2 12 UltimaUltima
Visualizzazione risultati da 1 a 10 su 16

[Programmazione C] - Uguaglianze tra vettori

  1. #1
    Tyler Durden
    Uomo 37 anni
    Iscrizione: 6/10/2007
    Messaggi: 16,094
    Piaciuto: 523 volte

    Predefinito [Programmazione C] - Uguaglianze tra vettori

    scusate, c'ho un problema e non ne vado fuori.. l'ho fatto mezzo miliardo di volte in passato, ne sono sicuro ma ora tra assembler e java mi so scordato praticamente pure le basi del C



    a una certa passo alla funzione void Func(int []) il vettore vett[5].. tanto per dire eh..
    quindi:
    Func(vett);

    il vettore è passato automaticamente per riferiemento.. quindi se faccio ad esempio
    vett[0] = 5;
    all'interno di Func() assegno 5 alla prima posizione di vett e la modifica ha ripercussioni anche sul main..

    ok

    in Func() creo un nuovo vettore newvett[10]
    ora voglio semplicemente che il vettore vett[] venga sostituito da newvett[]..

    a memoria direi che devo semplicemente far puntare vett a newvett cosicchè al rientro nell'ambiente chiamante il main utilizzi il nuovo vettore..
    spero di essermi spiegato..

    in breve:
    nel main chiamo una funzione e le passo un vettore
    nella funzione il vettore viene sostituito con un altro di dimensione diversa
    al ritorno il main usa il nuovo vettore creato


    inutile dire che non mi serve tutto il codice ma solo la parte dell'uguaglianza..
    ho provato a fare un po di casini con operatore * e operatore & ma tiro fuori solo qualche warning.. una combinazione mi da l'effetto desiderato finchè resto nell'ambiente chiamato ma poi l'effetto svanisce quando il controllo torna al main

  2. #2
    Overdose da FdT Dade
    Uomo 35 anni da Torino
    Iscrizione: 21/11/2010
    Messaggi: 9,895
    Piaciuto: 4039 volte

    Predefinito

    Oddio!c++ e assembler sono le mie bestie nere....non ci capisco una mazza!meno male che ho deciso di fare l'elettronico e non il programmatore....Non ti so aiutare anche se li ho stud! :-(

  3. #3
    Vivevo lo stesso ronin.engineer
    Uomo 40 anni da Torino
    Iscrizione: 18/3/2008
    Messaggi: 2,875
    Piaciuto: 27 volte

    Predefinito

    ricordo più un *****, ma:

    &vett = &newvett

    non funge?
    o dichiarare globale vett (ok, è orribile)?

  4. #4
    Tyler Durden
    Uomo 37 anni
    Iscrizione: 6/10/2007
    Messaggi: 16,094
    Piaciuto: 523 volte

    Predefinito

    assegnare qualcosa ad &vett credo sia proprio semanticamente sbagliato perchè è assegnare qualcosa ad un indirizzo non a ciò che c'è in quell'indirizzo..

    la variabile globale no ti prego.. devo spiegarlo non farlo io e spiegare che devi dichiarare un vettore globale non mi va..
    potrei risolverla fissando precedentemente la dimensione del vettore con un valore abbondante oltre il quale non si potrebbe andare..
    però pure in questo caso significa insegnare che lo spreco di memoria è cosa buona e giusta..

    dal canto mio risolverei semplicemente il problema con una lista concatenata ma purtroppo non posso perchè il ricevente della spiegazione non ha il background necessario..

  5. #5
    Vivevo lo stesso ronin.engineer
    Uomo 40 anni da Torino
    Iscrizione: 18/3/2008
    Messaggi: 2,875
    Piaciuto: 27 volte

    Predefinito

    te l'ho detto che non mi ricordo quasi più nulla la mia idea era semplicemente quella di far puntare il primo vettore all'indirizzo del secondo (che è quello che volevi, se non ho capito, no? sono a lavoro e vado di fretta...)
    se invece vuoi perseguire la strada della memoria "abbondante" non ti conviene andare di malloc e realloc? almeno in teoria non hai sprechi, no?
    ps: belle le liste, mi manca non averle in autoit...

  6. #6
    Tyler Durden
    Uomo 37 anni
    Iscrizione: 6/10/2007
    Messaggi: 16,094
    Piaciuto: 523 volte

    Predefinito

    eh il problema è proprio quello.. l'allocazione esplicita non posso toccarla.. sennò due malloc e una free e avevo risolto.. l'allocazione del vettore è solo implicita con una dichiarazione classica..
    poi vorrei proprio sostituire l'indirizzo puntato dal primo vettore .. e, ti dirò.. con un semplicissimo
    vett = newvett
    la modifica avviene.. ma è locale porca zozza.. al ritorno nell'ambiente chiamante il vettore è di nuovo il vecchio vett.. solo che ora in tutti i processi viene trattato con la nuova dimensione (che è diversa dalla sua) quindi puoi immaginare i casini

    ti ringrazio comunque.. probabilmente per il momento seguirò la strada dello spreco di memoria.. alla fine è la più praticabile.. facendo ben presente che non è così che si programma xD
    ma tanto, figurati.. si allocano vettori di dimensioni prese dallo standard input con
    int dim;
    scanf("%d",&dim);
    int vett[dim];
    quindi direi che quello sarebbe il minor problema..

  7. #7
    pls Paperoga
    36 anni
    Iscrizione: 27/3/2007
    Messaggi: 10,322
    Piaciuto: 2197 volte

    Predefinito

    pure io non ricordo una fava, ma puoi postarmi per favore il prototipo e la chiamata della funzione esattamente com'è sul sorgente? Se il prototipo è quello del primo post credo umilmente che non sia corretto

  8. #8
    Tyler Durden
    Uomo 37 anni
    Iscrizione: 6/10/2007
    Messaggi: 16,094
    Piaciuto: 523 volte

    Predefinito

    ora non ce l'ho sotto mano.. comunque è la regola generale che mi interessa..
    il prototipo è del tipo

    int Func(int [], int);
    dove magari la funzione restituisce la nuova dimensione, il primo parametro è il vettore e il secondo la dimensione al momento del passaggio.

    o magari
    int Func(int *, int);
    che poi è la stessa cosa

  9. #9
    pls Paperoga
    36 anni
    Iscrizione: 27/3/2007
    Messaggi: 10,322
    Piaciuto: 2197 volte

    Predefinito

    premetto ancora che non ricordo una fava, ma a me verrebbe da far così

    void Func(int* v, int c);


    dim = Func(&v, d);



    meglio se continuo col php và

  10. #10
    Vivevo lo stesso ronin.engineer
    Uomo 40 anni da Torino
    Iscrizione: 18/3/2008
    Messaggi: 2,875
    Piaciuto: 27 volte

    Predefinito

    e fare un:
    int Func(&int[], int); (ho detto una porcheria, vero? )
    per la programmazione coi piedi non preoccuparti, ho visto in programmi aziendali cose come while(1){
    ...
    codice;
    ...
    break}
    quindi non ti preoccupare, i tuoi consigli saranno vani

Pagina 1 di 2 12 UltimaUltima

Discussioni simili

  1. Programmazione
    Da dragoberto nel forum Internet e computer
    Risposte: 38
    Ultimo messaggio: 15/7/2009, 13:14
  2. programmazione televisiva talebana
    Da Scottish nel forum Barzellette e testi divertenti
    Risposte: 14
    Ultimo messaggio: 27/11/2008, 22:24
  3. Problema coi vettori
    Da lower nel forum Scuola, università, lavoro
    Risposte: 10
    Ultimo messaggio: 2/11/2008, 14:23
  4. problema in programmazione
    Da Zero-Point nel forum Scuola, università, lavoro
    Risposte: 15
    Ultimo messaggio: 21/12/2006, 14:25