Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-06-2011, 18:16   #1
mame83
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");
}
se ad esempio n =2 in output mi azzera fino al elemento 8 ((n+1)*(n+1)-1)dopo va in loop. spero mi aiutate grazie in anticipo .
mame83 è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2011, 19:05   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2790
Codice:
*vt=(int*)realloc(*vt,(n+1*n+1));
n+1*n+1 è uguale a n+n+1, devi mettere delle parentesi. Inoltre devi anche moltiplicare per sizeof(int), come hai fatto per la malloc.
E per azzerare più efficientemente la memoria puoi usare memset: LINK
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2011, 10:27   #3
mame83
Member
 
Iscritto dal: Nov 2010
Messaggi: 71
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Codice:
*vt=(int*)realloc(*vt,(n+1*n+1));
n+1*n+1 è uguale a n+n+1, devi mettere delle parentesi. Inoltre devi anche moltiplicare per sizeof(int), come hai fatto per la malloc.
E per azzerare più efficientemente la memoria puoi usare memset: LINK
allora ho provato a mettere una variabile NUOVO=n+1*n+1 che mi restituisce 9 risultato esatto. funziona solo che non capisco perche bisogna moltiplicarlo per sizeof int
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; 
     
}
mame83 è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2011, 11:21   #4
Kenger
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.
Kenger è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2011, 11:40   #5
mame83
Member
 
Iscritto dal: Nov 2010
Messaggi: 71
ok grazie ancora per la soluzione
mame83 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
NVIDIA mostra una comunità di rob...
Sony annuncia LYTIA L910, arriva il sens...
Ericsson, il 5G è l’infrastruttur...
Marvell punta tutto su TSMC A14: sar&agr...
Hyundai a un passo dal controllo totale ...
Questo SSD vecchio 16 anni ha resistito ...
Monopattino elettrico Xiaomi in offerta:...
Microsoft usa le capre di Age of Empires...
Microsoft conferma bug nel Cestino in tu...
Accenture crolla del 20% in borsa, il pe...
ASUS Pro WS W890E-SAGE SE: sette PCIe 5....
Attenzione al prezzo di questa TV Hisens...
Chrome sbeffeggiato da Ballmer nel 2009:...
Un gioco Mac compatibile con Apple Silic...
La batteria allo stato solido di Honda s...
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: 23:02.


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