|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2010
Messaggi: 71
|
[C]utilizzo realloc
ciao a tutti ho un po di difficolta con la funzione realloc e vorrei iniziare da un caso base.
Dato un vettore creato in maniera dinamica in una funzione voglio reallocarlo da n*n elementi a n+1*n+1 elementi e azzerarlo tutto. Codice:
void RIEMPI(int n,int **vt)
{
int i;
*vt=(int*)malloc(sizeof(int)*n*n);
for (i=0; i<n*n; i++)
{
printf("dammi l elemento %d : ",i);
scanf("%d",&((*vt)[i]));
}
}
void INSERISCI_NODO(int n, int **vt)/*inseriamo un nodo isolato al grafo*/
{
int i;
*vt=(int*)realloc(*vt,(n+1*n+1));
for (i=0; i<((n+1)*(n+1)); i++)
(*vt)[i]=0;
}
int main()
{
int nodi,i;
int *vet=NULL;
printf("dammi il numero di nodi : \n");
scanf("%d",&nodi);
RIEMPI(nodi,&vet);
INSERISCI_NODO(nodi,&vet);
printf("valore del vettore e' : \n");
for (i=0; i<(nodi+1)*(nodi+1); i++)
printf("%d valore %d \n",i,vet[i]);
printf("\n");
system("PAUSE");
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
Codice:
*vt=(int*)realloc(*vt,(n+1*n+1)); E per azzerare più efficientemente la memoria puoi usare memset: LINK |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Nov 2010
Messaggi: 71
|
Quote:
Codice:
void INSERISCI_NODO(int n, int **vt)/*inseriamo un nodo isolato al grafo*/
{
int i;
int nuovi=(n+1)*(n+1);
printf("valore nuovi %d \n",nuovi);
*vt=(int*)realloc(*vt,nuovi*sizeof(int));
for (i=0; i<((n+1)*(n+1)); i++)
(*vt)[i]=0;
}
|
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 168
|
Perchè a te serve un'area di memoria in grado di contenere 9 elementi di tipo int, quindi 9 moltiplicato per la grandezza di un intero.
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2010
Messaggi: 71
|
ok grazie ancora per la soluzione
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:02.




















