Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
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


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...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Le immagini nell'occhio dell'uragano Mel...
Anche gli USA inseguono l'indipendenza: ...
TikTok: i content creator guadagneranno ...
Nothing Phone (3a) Lite disponibile, ma ...
Emissioni globali per la prima volta in ...
Bancomat lancia Eur-Bank: la stablecoin ...
NVIDIA supera i 5.000 miliardi di dollar...
I ransomware fanno meno paura: solo un'a...
Pixel 10a si mostra nei primi rendering:...
Intel Nova Lake-S: i dissipatori delle p...
1X Technologies apre i preordini per NEO...
Tesla Cybercab cambia rotta: nel taxi de...
L'industria dell'auto europea a pochi gi...
VMware tra cloud privato e nuovi modelli...
Amazon Haul lancia il colpo di genio: pr...
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: 00:06.


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