Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Abbiamo provato il nuovo HUAWEI Pura 80 Pro. Parliamo di uno smartphone che è un vero capolavoro di fotografia mobile, grazie ad un comparto completo in tutto e per tutto, In questa colorazione ci è piaciuto molto, ma i limiti hardware e software, seppur in netto miglioramento, ci sono ancora. Ma HUAWEI ha fatto davvero passi da gigante per questa nuova serie Pura 80. Buona anche l'autonomia e soprattutto la ricarica rapida sia cablata che wireless, velocissima.
Opera Neon: il browser AI agentico di nuova generazione
Opera Neon: il browser AI agentico di nuova generazione
Abbiamo provato il nuovo web browser con intelligenza artificiale della serie Opera accessibile tramite abbonamento. Ecco le nostre prime impressioni sulle funzionalità di Opera Neon basate su AI e come funzionano
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-12-2004, 11:08   #1
Ir0nM4id3n84
Bannato
 
Iscritto dal: Nov 2004
Messaggi: 124
[C]Funzione che alloca dinamicamente una matrice

Ciao,
ho un problema...non mi ricordo più come ha fatto il proff a lezione per creare una funzione che mi alloca dinamicamente una matrice...

vi spiego...il programma chiede nel main il numero di righe ed il numero di colonne e li mette in 2 variabili....poi viene chiamata una funzione che mi crea una matrice con quel numero di righe e quel numero di colonne?

Qualcuno mi potrebbe dare una mano a ricostruire il tutto?

Grazie
Ir0nM4id3n84 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 11:34   #2
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Ciao, con la premessa che io il C lo sto studiando proprio da poco, quindi potrei anche dire una fesseria....

Per l'allocazione dinamica dovresti usare la funzione malloc() che ha questo prototipo:

Codice:
void  *malloc(size_t  numero_di_byte);
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 11:48   #3
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
avrà usato malloc + calloc

~§~ Sempre E Solo Lei ~§~ ;
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 11:56   #4
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Forse intendi una roba tipo questa?

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned int **creamatrice(unsigned int, unsigned int);

unsigned int **creamatrice(unsigned int x, unsigned int y) {
  unsigned int **matrix, count;

  matrix = calloc(x, sizeof(unsigned int *));

  for (count = 0; count < x; count++) 

    matrix[count] = calloc(y, sizeof(unsigned int));
  
  return matrix;

}
int main(int argc, char *argv[]) {

  unsigned int x, y, **matrice;
  
  if (argc == 3) {
    
    x = atoi(argv[1]);
    y = atoi(argv[2]);

    matrice = creamatrice(x, y);

  }
  else
    return 1;

  return 0;
}
Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 12:47   #5
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
con solo malloc dovrebbe essere una cosa del genere se funzionasse

Codice:
#include <stdio.h>
#include <stdlib.h>

/* elemento della matrice */
struct ProxElem{
        int elem;
        ProxElem *ProxElem;
};

/* elemento dell'array contentente gli indirizzi delle righe dell'array */
struct ProxRiga{
        ProxElem *Riga;
        ProxRiga *Prox;
};

void Allocazione_Colonne (ProxRiga *TestaRiga, int c){
	ProxElem *TestaElem, *Prec, *App;
	int i;
	if (c>0){
		TestaElem = malloc (sizeof(ProxElem));
		TestaElem->ProxElem = NULL;
	    printf ("\nInserisci elemento:\t");
		scanf ("%d", TestaElem->elem);
		TestaRiga->Riga = TestaElem;
		Prec = TestaRiga->Riga;
		for (i=1;i<c;i++){
			App = malloc (sizeof(ProxElem));
			App->ProxElem = NULL;
			printf ("\nInserisci elemento:\t");
			scanf ("%d", App->elem);
			Prec->ProxElem = App;
			Prec = App;
		}
	}
}

void Allocazione_Righe (ProxRiga *Testa, int r, int c){
	ProxRiga *App, *Precedente;
	int i;
	if (r>0){
		Testa = malloc (sizeof(ProxRiga));
		Testa->Prox = NULL;
		Allocazione_Colonne (Testa, c); 
		Precedente = Testa;
		for (i=1; i<r;i++){
			App = malloc (sizeof(ProxRiga));
			App->Prox = NULL;
			Allocazione_Colonne (App, c);
			Precedente->Prox = App;
			Precedente = App;
		}
	}
}

/* visualizzazione delle matrice */
void Visualizza (ProxRiga *TestaRiga){
	ProxElem *App;
	printf ("\nMatrice\n");
	if (TestaRiga != NULL){
		printf ("\t%d",TestaRiga->Riga->elem);
		App = TestaRiga->Riga->ProxElem;
		while (App != NULL){
			printf ("\t%d", App->elem);
			App = App->ProxElem;
		}
	}
}

/* main */
int main (){
        int Righe, Colon;
        ProxRiga *TestaRiga = NULL;
		ProxRiga *App;
		Allocazione_Righe (TestaRiga,Righe,Colon);
		App=TestaRiga;
		while (App != NULL){
			Visualizza (TestaRiga);
			App = App->Prox;
		}
		return 1;
}
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 13:11   #6
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Beh , con solo malloc dovrebbe funzionare anche così :

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned int **creamatrice(unsigned int, unsigned int);
void printmatrix(unsigned int **, int, int);

unsigned int **creamatrice(unsigned int x, unsigned int y) {
  unsigned int **matrix, count;

  matrix = malloc(x*sizeof(unsigned int *));

  for (count = 0; count < x; count++) 

    matrix[count] = malloc(y*sizeof(unsigned int));
  
  return matrix;

}

void printmatrix(unsigned int **matrix, int x, int y) {
  
  int a,b;
  for (b=0; b<y; b++) {
    for (a=0; a<x; a++) {
      printf("%4u ", matrix[a][b]);
      if ( a == x-1 )
	putchar('\n');
    }
  }

  putchar('\n');
  putchar('\n');
}


int main(int argc, char *argv[]) {

  unsigned int x, y, **matrice;
  
  if (argc == 3) {
    
    x = atoi(argv[1]);
    y = atoi(argv[2]);

    matrice = creamatrice(x, y);
    
    printmatrix(matrice, x, y);
  }
  else
    return 1;

  return 0;
}
Ci ho anche messo una funzione che printa i valori della matrice dopo averla creata.

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 13:29   #7
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Anonimo che cavolo sbaglio nel program?

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 13:38   #8
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Ero andato a magnare .

Perchè, il tuo prog non va? Non l'ho ancora provato , ma non crea la matrice o non si compila?

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 13:41   #9
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
non si compila

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 13:44   #10
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da Fenomeno85
non si compila

~§~ Sempre E Solo Lei ~§~

Hai dimenticato "struct" davanti alla dichiarazione di tutte le strutture .

Se aspetti un attimo provo a correggertelo e poi te lo riposto

Ciao
__________________
GPU Compiler Engineer

Ultima modifica di AnonimoVeneziano : 05-12-2004 alle 13:51.
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 13:50   #11
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Ecco la versione corretta
Codice:
#include <stdio.h>
#include <stdlib.h>

/* elemento della matrice */
struct ProxElem{
        int elem;
        struct ProxElem *ProxElem;
};

/* elemento dell'array contentente gli indirizzi delle righe dell'array */
struct ProxRiga{
        struct ProxElem *Riga;
        struct ProxRiga *Prox;
};

void Allocazione_Colonne (struct ProxRiga *TestaRiga, int c){
	struct ProxElem *TestaElem, *Prec, *App;
	int i;
	if (c>0){
		TestaElem = malloc (sizeof(struct ProxElem));
		TestaElem->ProxElem = NULL;
	    printf ("\nInserisci elemento:\t");
		scanf ("%d", TestaElem->elem);
		TestaRiga->Riga = TestaElem;
		Prec = TestaRiga->Riga;
		for (i=1;i<c;i++){
			App = malloc (sizeof(struct ProxElem));
			App->ProxElem = NULL;
			printf ("\nInserisci elemento:\t");
			scanf ("%d", App->elem);
			Prec->ProxElem = App;
			Prec = App;
		}
	}
}

void Allocazione_Righe (struct ProxRiga *Testa, int r, int c){
	struct ProxRiga *App, *Precedente;
	int i;
	if (r>0){
		Testa = malloc (sizeof(struct ProxRiga));
		Testa->Prox = NULL;
		Allocazione_Colonne (Testa, c); 
		Precedente = Testa;
		for (i=1; i<r;i++){
			App = malloc (sizeof(struct ProxRiga));
			App->Prox = NULL;
			Allocazione_Colonne (App, c);
			Precedente->Prox = App;
			Precedente = App;
		}
	}
}

/* visualizzazione delle matrice */
void Visualizza (struct ProxRiga *TestaRiga){
	struct ProxElem *App;
	printf ("\nMatrice\n");
	if (TestaRiga != NULL){
		printf ("\t%d",TestaRiga->Riga->elem);
		App = TestaRiga->Riga->ProxElem;
		while (App != NULL){
			printf ("\t%d", App->elem);
			App = App->ProxElem;
		}
	}
}

/* main */
int main (){
        int Righe, Colon;
        struct ProxRiga *TestaRiga = NULL;
		struct ProxRiga *App;
		Allocazione_Righe (TestaRiga,Righe,Colon);
		App=TestaRiga;
		while (App != NULL){
			Visualizza (TestaRiga);
			App = App->Prox;
		}
		return 1;
}
Ti faccio solo una domanda: Come fai a prendere in input le righe e le colonne della matrice?

Non vedo nessuna parte del programma dedicata a quello

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 14:01   #12
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da AnonimoVeneziano
Ecco la versione corretta
Codice:
#include <stdio.h>
#include <stdlib.h>

/* elemento della matrice */
struct ProxElem{
        int elem;
        struct ProxElem *ProxElem;
};

/* elemento dell'array contentente gli indirizzi delle righe dell'array */
struct ProxRiga{
        struct ProxElem *Riga;
        struct ProxRiga *Prox;
};

void Allocazione_Colonne (struct ProxRiga *TestaRiga, int c){
	struct ProxElem *TestaElem, *Prec, *App;
	int i;
	if (c>0){
		TestaElem = malloc (sizeof(struct ProxElem));
		TestaElem->ProxElem = NULL;
	    printf ("\nInserisci elemento:\t");
		scanf ("%d", TestaElem->elem);
		TestaRiga->Riga = TestaElem;
		Prec = TestaRiga->Riga;
		for (i=1;i<c;i++){
			App = malloc (sizeof(struct ProxElem));
			App->ProxElem = NULL;
			printf ("\nInserisci elemento:\t");
			scanf ("%d", App->elem);
			Prec->ProxElem = App;
			Prec = App;
		}
	}
}

void Allocazione_Righe (struct ProxRiga *Testa, int r, int c){
	struct ProxRiga *App, *Precedente;
	int i;
	if (r>0){
		Testa = malloc (sizeof(struct ProxRiga));
		Testa->Prox = NULL;
		Allocazione_Colonne (Testa, c); 
		Precedente = Testa;
		for (i=1; i<r;i++){
			App = malloc (sizeof(struct ProxRiga));
			App->Prox = NULL;
			Allocazione_Colonne (App, c);
			Precedente->Prox = App;
			Precedente = App;
		}
	}
}

/* visualizzazione delle matrice */
void Visualizza (struct ProxRiga *TestaRiga){
	struct ProxElem *App;
	printf ("\nMatrice\n");
	if (TestaRiga != NULL){
		printf ("\t%d",TestaRiga->Riga->elem);
		App = TestaRiga->Riga->ProxElem;
		while (App != NULL){
			printf ("\t%d", App->elem);
			App = App->ProxElem;
		}
	}
}

/* main */
int main (){
        int Righe, Colon;
        struct ProxRiga *TestaRiga = NULL;
		struct ProxRiga *App;
		Allocazione_Righe (TestaRiga,Righe,Colon);
		App=TestaRiga;
		while (App != NULL){
			Visualizza (TestaRiga);
			App = App->Prox;
		}
		return 1;
}
Ti faccio solo una domanda: Come fai a prendere in input le righe e le colonne della matrice?

Non vedo nessuna parte del programma dedicata a quello

Ciao
dimenticate

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 14:06   #13
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
scusa ma a te te lo compila?

a me no

Compiling...
lista.cpp
lista.cpp: In function `void Allocazione_Colonne(ProxRiga*, int)':
lista.cpp:20: error: invalid conversion from `void*' to `ProxElem*'
lista.cpp:27: error: invalid conversion from `void*' to `ProxElem*'
lista.cpp: In function `void Allocazione_Righe(ProxRiga*, int, int)':
lista.cpp:41: error: invalid conversion from `void*' to `ProxRiga*'
lista.cpp:46: error: invalid conversion from `void*' to `ProxRiga*'

ma sono obbligatori ridifinire le struct io non le avevo mai messe almeno mi ricordo così

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 14:16   #14
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
melchior@melchior:~/Cprograms$ gcc -g fenom.c -o fenom
melchior@melchior:~/Cprograms$

Si a me lo compila .

In C devi sempre mettere "struct" davanti alle dichiarazione , non so in C++ , a meno di aver definito un tipo con TypeDef , a quel punto puoi usare il nome del tipo .

Comunque il tuo programma ha altri problemi oltre a quello , come ad esempio quello che la funzione "Allocazione_Righe" non fa ritornare alcun valore lasciando TestaRiga sempre NULL nella "main" , e non soddisfando mai la condizione "while ( App != NULL ) " . In questo modo perdi il puntatore alla struttura una volta uscito dalla funzione.


Inoltre mi sembra ci siano altri problemi, riguardatelo bene

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 14:22   #15
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da AnonimoVeneziano
melchior@melchior:~/Cprograms$ gcc -g fenom.c -o fenom
melchior@melchior:~/Cprograms$

Si a me lo compila .

In C devi sempre mettere "struct" davanti alle dichiarazione , non so in C++ , a meno di aver definito un tipo con TypeDef , a quel punto puoi usare il nome del tipo .

Comunque il tuo programma ha altri problemi oltre a quello , come ad esempio quello che la funzione "Allocazione_Righe" non fa ritornare alcun valore lasciando TestaRiga sempre NULL nella "main" , e non soddisfando mai la condizione "while ( App != NULL ) " . In questo modo perdi il puntatore alla struttura una volta uscito dalla funzione.


Inoltre mi sembra ci siano altri problemi, riguardatelo bene

Ciao
io in Allocazione_Righe modifico la testa direttamente infatti è un passaggio per indirizzo quindi si modifica.
Mi piacerebbe riuscire a compilare ma MinGW non me lo compila.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 14:30   #16
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da Fenomeno85
io in Allocazione_Righe modifico la testa direttamente infatti è un passaggio per indirizzo quindi si modifica.
Mi piacerebbe riuscire a compilare ma MinGW non me lo compila.

~§~ Sempre E Solo Lei ~§~

Non passi alla funzione una struttura, ma un PUNTATORE a struttura che è esattamente identico ad una variabile qualsiasi, perciò anch'esso è passato per valore .

Quindi TestaRiga (che è una qualsiasi variabile) viene copiata e passata alla funzione che la modifica e poi all' uscita la cancella .

Inoltre anche le strutture vengono passate per definizione per valore e non per riferimento , quindi in ogni caso avresti comunque sbagliato

Ciao

PS= Non so perchè non ti si compili su MiniGW . Hai provato a compilare la mia correzione?
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2004, 14:39   #17
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da AnonimoVeneziano
Non passi alla funzione una struttura, ma un PUNTATORE a struttura che è esattamente identico ad una variabile qualsiasi, perciò anch'esso è passato per valore .

Quindi TestaRiga (che è una qualsiasi variabile) viene copiata e passata alla funzione che la modifica e poi all' uscita la cancella .

Inoltre anche le strutture vengono passate per definizione per valore e non per riferimento , quindi in ogni caso avresti comunque sbagliato

Ciao

PS= Non so perchè non ti si compili su MiniGW . Hai provato a compilare la mia correzione?
bho aspe che sto installando visual studio ... cmq forse ho capito quello che dici ma cmq dovrei riuscirci a lavorare su quei dati dato che sono nella zona heap ... però mi sa che così ho qualche problemino.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2004, 12:16   #18
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
caiser ... l'ho rifatto e cavolo perdo tutto, eppure io mi ricordavo che doveva funzionare, con le classi avevo sempre fatto così

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2004, 13:35   #19
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
premesso che io a scuola avevo studiato le liste solo con le classi .. ho provato a vedere e infatti funziona con le classi

ma allora senza ste classi come faccio a non perdere i valori volendo utilizzare le funzioni?

Codice:
/* lista con classe */

#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>

struct dati {
	int valore;
};

struct nodo {
	dati val;
	nodo *succ;
};

class lista{
private:
	nodo *testa;
public:
	void visualizza();
	void carica (dati valori);
	lista();
	~lista();
};

/* distruttore */
lista::~lista(){
	nodo *supp;
	supp = new(nodo);
	if (testa == NULL){
		printf ("\nLa lista e' vuota. Nessun elemento cancellato.\n\n\n");
	}
	else {
		while (testa != NULL){
			supp = testa;
			testa = testa->succ;
			delete(supp);
		}
		printf ("\nTutta la lista e' stata deallocata.\n\n");
	}
	system ("PAUSE");
}
			
/* inserimento sempre in testa */
void lista::carica(dati valori){
	nodo *supp;
	supp = new (nodo);
	supp->val = valori;
	supp->succ = testa;
	testa = supp;
}

void lista::visualizza(){
	nodo *supp;
	supp = testa;
	while (supp!=NULL){
		printf ("%d", supp->val.valore);
		supp= supp->succ;
	}
}

/* costruttore */
lista::lista(){
	testa = NULL;
}

int main (){
	dati valori;
	lista list;
	printf ("\nInserisci il valore:\t");
	scanf ("%d",&valori.valore);
	list.carica(valori);
	list.visualizza ();
	return 1;
}
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2004, 13:52   #20
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Comunque si parlava di C , non di C++

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
1.200 CV e drift a 213 km/h: la supercar...
Shenzhou-21: esperimenti sui topi in orb...
Cloudera punta su cloud privato e intell...
Il mistero del Ryzen 7 9700X3D: prezzo p...
Posticipato il rientro dell'equipaggio c...
Propaganda russa e hactivism fra le prin...
Superluna del Castoro: stasera il satell...
NVIDIA regala una GeForce RTX 5090 Found...
Snowflake punta su Intelligence, l'IA pe...
Volkswagen realizzerà i propri chip per ...
Formula E GEN4 svelata: 600 kW di potenz...
PC Desktop HP Victus con RTX 4060 e Ryze...
Fastnet, il 'mega-cavo' di AWS che pu&og...
Offerte Amazon da non perdere: GeForce R...
Clima, l'UE trova l'accordo sul taglio d...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v