Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-10-2003, 15:04   #1
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
Allocazione c++

devo creare un vettore di tipo double di n elementi.
n = calcolo degli anni che occorrerà x raggiungere un certo valore da uno inziale con l'interessi del 3.5%.
Come posso scrivere questa funzione di allocazione?
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 07:21   #2
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
Leo ma che ti metti a fare, se ti vede il Calugi o la Lami, comunque interessa anche a me, anche se il prog è quasi terminato vorrei sapere come si alloca di volta in volta dinamicamente la memoria dentro un ciclo.
grazie
fate qualche esempio
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 09:36   #3
verloc
Senior Member
 
L'Avatar di verloc
 
Iscritto dal: Jan 2000
Messaggi: 551
Scusate ma voi,programmate senza uno straccio di guida?
Diamine queste sono le cose fondamentali.

si fa o con l'operatore new oppure con i vector della stl

Dovete imparare a cercare prima sulla guida altrimenti perdete un sacco di tempo.
Adesso però ve la procurate guida eh?

(intendo per guida un file help che descrive tutte le funzioni,non un tutorial)

Ultima modifica di verloc : 01-11-2003 alle 10:01.
verloc è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 10:08   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Mi sa che non usano la standard C++ library...altrimenti non l'avrebbetr chiesto...quindi niente vector...

Con il C++ c'è l'oepratore new che alloca la memoria...
Per aumentare le dimensioni via via che va avanti il programma in C++ non c'è una istruzione precisa come in C (in C c'è realloc)...ma si deve allocare un nuovo vettore più grande del precedente e copiarci dentro i nuovi risultati...
In teoria dovresti farlo all'inserimento di ogni nuovo elemento...ma per diminuire le operazioni di copia che sono solitamente lunghe si fa un preallocazione di N elementi...

Ad esempio questa può essere una classe che esegue queste operazioni... Non so a che punto siete in C++ quindi non uso i template (per poter generalizzare il tipo degli elementi del vettore)...
Codice:
class vettore_double {
   double *vett;
   int len;
   int maxlen;
   int prealloc;
public:
   vettore_double():prealloc(16);
   vettore_double(vettore_double &vd);
   void set_prealloc(int n);
   int get_length();
   double &operator[](int idx);
   ~vettore_double();
};

vettore_double::vettore_double()
{
    vett = new[maxlen = prealloc];
    len = 0;
}

vettore_double::vettore_double(vettore_double &vd)
{
    prealloc = vd.prealloc;
    len = vd.len;
    maxlen = vd.maxlen;
    vett = new[maxlen];
    for(int i=0; i<len; ++i)
        vett[i] = vd.vett[i];
}

double &vettore_double::operator[](int idx)
{
    if(idx > (maxlen-1))
    {
         double *vett2 = vett;
         maxlen = prealloc * (idx / prealloc + 1);
         vett = new double[maxlen];
         for(int i=0; i<len; ++i)
              vett[i] = vett2[i];
    }
    
    if((len-1) < idx)
        len = idx+1;
 
    return vett[idx];
}


void vettore_double::set_prealloc(int n)
{
     prealloc = n;
}

int vettore_double::get_length()
{
    return len;
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 11:44   #5
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
o grande alde,seeeee la lami..o dio bono su un programmino mi funziona il new su quello dell'esercitazione nn va..quindi ho chiesto consigli!

Quote:
Originariamente inviato da alderighi
Leo ma che ti metti a fare, se ti vede il Calugi o la Lami, comunque interessa anche a me, anche se il prog è quasi terminato vorrei sapere come si alloca di volta in volta dinamicamente la memoria dentro un ciclo.
grazie
fate qualche esempio
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 11:45   #6
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
Quote:
Originariamente inviato da cionci
Mi sa che non usano la standard C++ library...altrimenti non l'avrebbetr chiesto...quindi niente vector...

Con il C++ c'è l'oepratore new che alloca la memoria...
Per aumentare le dimensioni via via che va avanti il programma in C++ non c'è una istruzione precisa come in C (in C c'è realloc)...ma si deve allocare un nuovo vettore più grande del precedente e copiarci dentro i nuovi risultati...
In teoria dovresti farlo all'inserimento di ogni nuovo elemento...ma per diminuire le operazioni di copia che sono solitamente lunghe si fa un preallocazione di N elementi...

Ad esempio questa può essere una classe che esegue queste operazioni... Non so a che punto siete in C++ quindi non uso i template (per poter generalizzare il tipo degli elementi del vettore)...
Codice:
class vettore_double {
   double *vett;
   int len;
   int maxlen;
   int prealloc;
public:
   vettore_double():prealloc(16);
   vettore_double(vettore_double &vd);
   void set_prealloc(int n);
   int get_length();
   double &operator[](int idx);
   ~vettore_double();
};

vettore_double::vettore_double()
{
    vett = new[maxlen = prealloc];
    len = 0;
}

vettore_double::vettore_double(vettore_double &vd)
{
    prealloc = vd.prealloc;
    len = vd.len;
    maxlen = vd.maxlen;
    vett = new[maxlen];
    for(int i=0; i<len; ++i)
        vett[i] = vd.vett[i];
}

double &vettore_double::operator[](int idx)
{
    if(idx > (maxlen-1))
    {
         double *vett2 = vett;
         maxlen = prealloc * (idx / prealloc + 1);
         vett = new double[maxlen];
         for(int i=0; i<len; ++i)
              vett[i] = vett2[i];
    }
    
    if((len-1) < idx)
        len = idx+1;
 
    return vett[idx];
}


void vettore_double::set_prealloc(int n)
{
     prealloc = n;
}

int vettore_double::get_length()
{
    return len;
}
ci sono troppe cose che nn conosco in questo frammento di codice..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 11:46   #7
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
io credevo che fosse una funzione semplice del tipo..
mi faccio passare gli anni che sarebbero quante celle deve contenere il vettore.
creo un puntatore *p[3] x esempio..
poi faccio p = new(int*anni_passati)
la logica è questa..xò nn va..!!
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 11:49   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Tra l'altro avevo sbagliato il codice per l'allocazione Che testa...

Comunque la new si usa così:

int *p = new int[numero di anni];
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 11:51   #9
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
faccio qualche prova e poi ti faccio sapere ok?
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 11:51   #10
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
alde te copiami il programma e ti uccido,ovvia l'idea di usare la new w nn la malloc l'ho avuta io e se il calugi mi dice che l'ho fatto uguale a te ti uccido!!
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 12:04   #11
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
cosa c'è che nn va?
Codice:
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <string.h>
#include <stdio.h>

void main()
{
	int *p;
   int dim,i,n;
   cout << "dimmi dimensione vettore";
   cin >> dim;
   p = new int[dim];
   for(i=0;i<dim;i++)
   {
   	cout << "\ndimmi numero";
      cin >> n;
      *p[i]=n;
   }
    for(i=0;i<dim;i++)
   {
   	cout << *p[i];
   }
}
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 12:09   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Questo: *p[i]

p[i] e quivale già a fare *(p+i)...

Comunque io avevo capito che ti serviva ridimensionare un vettore allocato con new... Se ti serve una allocazione semplice a lora va bene come hia fatto te...

p a quel punto lo puoi trattare, quasi, come un normale vettore...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 12:21   #13
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
perfetto ora funziona..ho solo qualche piccolo problema non con il codice ma con il programma stesso..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 12:43   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ah...mi raccomando..quando non ti serve più devi fare la delete...

delete[] p;
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 12:56   #15
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
ok grazie.
Ecco il nuovo problema.
Il vettore dovrà prendere la dimensione di quanti anni occorreranno x raggiungere un certo capitale da uno inziale con un tot di interessi annui.
Gli anni che occorrono verrano calcolati tramite una funzione ricorsiva..quindi io dovrei tutte le volte riallocare il puntatore e ricopiarci i dati dentro?
all'interno del vettore puntatore dovranno finirci i valori intermedi raggiunti anno anno dal capitale iniziale..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2003, 13:13   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
De allocarne uno nuovo, cancellare quello vecchio e ricopiare i valori in quello nuovo...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2003, 06:54   #17
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
Non ti proccupare leo mi sa che lascio il file temporaneo, almeno che l'Orsi non allochi dinamicamente la memoria, e allora sarei io l'unico bischero che non lo fa (visto che l'Orsi passa il programma a mezza classe).
Grande cionci ma sei un programmatore o un insegnante?
PS=noi usiamo il vecchio c/c++ della borland in modalità ms-dos
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2003, 09:43   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Il file che contiene i valori è una soluzione buona per questo tipo di problemi...

Altrimenti usa questa funzione per reallocare:
Codice:
#include <string.h> 

int *realloca(int *src, int dim_src, int new_dim)
{
   if(new_dim < 0 && dim_src < 0) //controllo se i parametri sono buoni
      return NULL;
   int *dst = NULL;
   if(new_dim > 0)
      dst = new int[new_dim];
   if(src != NULL && dim_src > 0 && new_dim > 0)
      memcpy(dst, src, sizeof(double)*(dim_src > new_dim)?new_dim:dim_src);
   if(dim_src > 0)
      delete[] src;
   return dst;
}

//esempi di utilizzo
//prima allocazione
vett = realloca(NULL, 0, 10); //alloca un vettore di 10 elementi
//modifica della diemensione
vett = realloca(vett, 10, 20); //modifica la dimensione a 20 e copia i valori
//deallocazione
vett = realloca(vett, 20, 0); //dealloca vett e ritorna NULL
A meno di errori dovrebbe andare bene... Vale sempre il discorso di fare l'allocazione a blocchi (ad esempio 10 a 10)... Quando hai finito lo spazio a disposizione allochi un altro blocco...
Quote:
Originariamente inviato da alderighi
Grande cionci ma sei un programmatore o un insegnante?
Programatore...
Quote:
Originariamente inviato da alderighi
PS=noi usiamo il vecchio c/c++ della borland in modalità ms-dos
Male...oltre a essere per DOS (non crea eseguibili a 32 bit) è anche uno dei copilatori fra quelli che conosco che rispetta meno los tandard sia del C che del C++...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2003, 12:46   #19
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
mi sembra un pò troppo complicato x i nostri livelli,eppure deve esistere un modo + semplice..
Io devo solo allocare un vettore d n elementi!
la cosa difficile che mi resta a me è che quel n viene calcolato da una funzione ricorsiva..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2003, 15:50   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Allora devi o no modificare dinamicamente la dimensione del vettore ? Oppure la dimensione la conosci prima di allocarlo ?

Se la conosci prima di allocarlo:

n = calcola_n();

vett = new int[n];

e lo allochi...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Volkswagen Zukunftsplan 2030: il nuovo p...
'Non ci interessano i segreti di Apple':...
Genitori troppo connessi: uno studio riv...
Motorola conferma l'arrivo del nuovo Edg...
Smascherata la truffa dei finti SSD da 1...
Xiaomi 18 Pro: chip a 2 nm, Privacy Disp...
Il 71% degli autovelox italiani era fuor...
La Cina svela descrive la sua arma a mic...
Le 12 offerte Amazon TOP del weekend: ai...
Mini proiettore portatile a 36,99€: otti...
RTX 5070 a 599€ e RTX 5060 Ti a 357€, do...
In Cina il mega-impianto solare a sali f...
Xiaomi Air Fryer Essential 6L: ha tutto ...
Apple riduce la produzione di iPhone 17:...
Lancio del razzo spaziale cinese Lunga M...
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: 12:12.


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