Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI aggiorna la sua linea di droni ultraleggeri con Neo 2, un quadricottero da 160 grammi che mantiene la compattezza del predecessore ma introduce una stabilizzazione meccanica a due assi, sensori omnidirezionali e un sistema LiDAR
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone
Ad Appian Europe 2025, l'azienda parla molto della sua visione di cos'è e come dovrebbe essere usata l'intelligenza artificiale: è uno strumento che va sempre adoperato dalle persone, che devono rimanere responsabili dei processi all'interno dell'azienda. Non è un giocattolo con cui sperimentare, ma un aiuto per superare le sfide di business più importanti
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-11-2007, 17:30   #21
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
mmm, ho visto un po' il programma del corso e vector non si fa, mentre invece l'allocazione dinamica è in programma... potreste farmi un esempio semplice di allocazione di memoria di una variabile,messa poi in un array? tipo abbiamo una variabile k che viene immessa da tastiera con cin e successivamente la variabile k è usata come indice di un array: array[k]

ho googlato un po' e la cosa che piu si avvicina a quello che devo fare che ho trovato è questa http://www.disp.uniroma2.it/users/bu.../CPP3/CPP3.HTM

ma utilizza stdio.h

grazie ancora di tutto, dopo di questa mi tolgo dalle scatole
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 17:49   #22
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
int righe = 6;
int colonne = 3;


double *matrice = new double[righe * colonne];


Per accedere all'elemento (r,c): matrice[r * colonne + c]
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 18:32   #23
marko.fatto
Senior Member
 
L'Avatar di marko.fatto
 
Iscritto dal: Jul 2007
Messaggi: 499
Quote:
Originariamente inviato da cionci Guarda i messaggi
int righe = 6;
int colonne = 3;


double *matrice = new double[righe * colonne];


Per accedere all'elemento (r,c): matrice[r * colonne + c]
Scusa la nubbiaggine ma così non è un vettore!?
__________________
marko.fatto è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 18:38   #24
wizard1993
Senior Member
 
L'Avatar di wizard1993
 
Iscritto dal: Apr 2006
Messaggi: 22462
no, è un array ad allocazione tramite puntatore
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza
wizard1993 è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 18:46   #25
marko.fatto
Senior Member
 
L'Avatar di marko.fatto
 
Iscritto dal: Jul 2007
Messaggi: 499
Quote:
Originariamente inviato da wizard1993 Guarda i messaggi
no, è un array ad allocazione tramite puntatore
ma comunque un array monodimensionale... è possibile allocare dinamicamente un array multidimensionale senza ricorrere a quel "trucchetto"?

edit: sempre usando un puntatore...
__________________
marko.fatto è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 18:51   #26
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
Sì, ma c'è da lavorare un pochetto

Lo facevo per farglielo più semplice...

double **m = new double * [righe];

for(int i = 0; i < righe; ++i)
m[i] = new double[colonne];
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 19:10   #27
marko.fatto
Senior Member
 
L'Avatar di marko.fatto
 
Iscritto dal: Jul 2007
Messaggi: 499
Quote:
Originariamente inviato da cionci Guarda i messaggi
Sì, ma c'è da lavorare un pochetto

Lo facevo per farglielo più semplice...

double **m = new double * [righe];

for(int i = 0; i < righe; ++i)
m[i] = new double[colonne];
E per accederci?
__________________
marko.fatto è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 19:27   #28
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
m[i][j]
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 19:51   #29
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
grande! sono riuscito a fare il programma finalmente

Codice:
#include <iostream>
#include <vector>
using namespace std;

int main() {
	int righe,
		colonne,
		diagsize;
	
	cout << "Inserire il numero di vettori della matrice quadrata" << endl;
	cin >> righe;
	
	colonne = righe;
		
	diagsize = ( ( 2 * righe ) - 1 );
	
	double **matrice = new double * [righe];
	
	vector< double > diagonale( diagsize );
	
	for(int i = 0; i < righe; ++i)
	   matrice[i] = new double[colonne];
		 
	
	for(int i = 0; i < righe; i++)
		for(int j = 0; j < colonne; j++) {
			cout << "Inserisci Elemento" << (i+1) <<" " << (j+1) << endl;
			cin >> matrice[i][j];	
		}
	
	
	
	for(int i = 0; i < righe; i++)
			for(int j = 0; j < colonne; j++)
				diagonale[righe-i+j] += matrice[i][j];
	
	for(int i = 1; i <= diagsize; i++)
		cout << "La somma della " << (i+1) << " diagonale e': " << diagonale[i] << endl;
	
	system("PAUSE");
	return 0;
		
}
funziona

solo l'array monodimensionale per le somme delle diagonali non lo riuscivo a fare con l'allocazione, quindi ho fatto un vector...

potresti spiegarmi questo codice
Codice:
double **m = new double * [righe];

for(int i = 0; i < righe; ++i)
m[i] = new double[colonne];
funziona benissimo, ma non ho capito bene il ragionamento che c'è sotto
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 21:47   #30
Maverick18
Senior Member
 
L'Avatar di Maverick18
 
Iscritto dal: Aug 2005
Messaggi: 2020
Quote:
Originariamente inviato da -Slash Guarda i messaggi
double **m = new double * [righe];

for(int i = 0; i < righe; ++i)
m[i] = new double[colonne];
[/code]
funziona benissimo, ma non ho capito bene il ragionamento che c'è sotto
Se non sbaglio alloca un vettore di puntatori double e lo fa puntare da m.
Poi alloca un vettore double per ogni puntatore double puntato da m.
Maverick18 è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2007, 09:00   #31
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
Non sbagli.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2007, 13:40   #32
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Anche se cionci e Maverick18 ti hanno già risposto ho pensato che poteva esserti di ulteriore aiuto uno schema visivo:

Codice:
double **m = new double * [righe];

for(int i = 0; i < righe; ++i)
m[i] = new double[colonne];
a) double **m = new double * [righe];

l'dentificatore "m" viene definito come una variabile di tipo "Puntatore a puntatore a double", quindi viene inizializzato con l'allocazione dinamica di un array contenente un numero pari a "righe" di "Puntatori a double".

-----------------------------------------------------------------
Puntatore a puntatore a double.....Puntatore a double..........Double
-----------------------------------------------------------------
double **m ..............................double *(unnamed)..........double
-----------------------------------------------------------------
m ------------------------------> righe1 -------------> (double)
|
| -------------------------------> righe2 -------------> (double)
|
| -------------------------------> righeN -------------> (double)


b) m[i] = new double[colonne];

Sappiamo che "m" (Puntatore di puntatore a double) adesso punta ad un array di elementi Puntatore a double
Viene quindi utilizzato un ciclo per assegnare ad ognuno di quei Puntatori a double un array di double.

m----->righe1..........righe2........righeN
...........|................|..............|.
...........|................|..............|.
...........V................V.............V.
..............................................
...........double[]......double[]......double[]


Spero ti sia utile,
Ciao

Ultima modifica di banryu79 : 01-12-2007 alle 13:57.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2007, 23:15   #33
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
Grazie per la spiegazione esaustiva

ho trovato anche il modo per farlo con vector di vector

Codice:
vector<int> m( matsize );
vector<vector<int> >  matrice( matsize,m );
per accederci basta il solito matrice[i][j]

potrebbe essere utile a qualcuno
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2007, 01:55   #34
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
Quote:
Originariamente inviato da -Slash Guarda i messaggi
Grazie per la spiegazione esaustiva

ho trovato anche il modo per farlo con vector di vector

Codice:
vector<int> m( matsize );
vector<vector<int> >  matrice( matsize,m );
per accederci basta il solito matrice[i][j]

potrebbe essere utile a qualcuno
Non ci sono quei costruttori In ogni caso dopo vanno ridimensionati i singoli vector.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2007, 21:22   #35
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
Quote:
Originariamente inviato da cionci Guarda i messaggi
Non ci sono quei costruttori In ogni caso dopo vanno ridimensionati i singoli vector.
cioè?

comunque ho fatto vedere oggi il programma al professore, mi ha quasi insultato dicendo che devo risolvere i problemi con gli strumenti che abbiamo

bah, ma che modi

mi ha detto che lo stesso programma si poteva fare senza allocazione o vector, dichiarando i valori delle diagonali come const int. tralasciando la sua ignoranza(e soprattutto quella del suo assistente, un ingegnere che non sa come imporre l'esistenza di un triangolo e non conosce getchar) sul fatto che non posso dichiarare(almeno con i nostri strumenti) un const int senza inizializzarlo e peggio ancora poi inserirlo da cin tutto sommato poi dichiarando la dimensione della matrice come int funziona senza allocazione dinamica...

Codice:
#include <iostream>
#include <cstdlib>

using namespace std;

int main() {
    int matsize, // Dimensione della Matrice quadrata
	    diagsize; // Numero di diagonali della matrice

	cout << "Inserire il numero di vettori della matrice quadrata" << endl;
	cin >> matsize;

	diagsize = ( 2 * matsize )-1;

	double matrice[matsize] [matsize];
	double diagonale[diagsize];

	// Inserisce gli elementi
	for(int i = 0; i < matsize; i++)
		for(int j = 0; j < matsize; j++) {
			cout << "Inserisci Elemento " << (i+1) <<" " << (j+1) << endl;
			cin >> matrice[i][j];
		}


	// Calcola le Somme della matrice
	for(int i = 0; i < matsize; i++)
			for(int j = 0; j < matsize; j++)
				diagonale[matsize-i+j] += matrice[i][j];

	// Stampa il risultato
	for(int i = 1; i <= diagsize; i++)
		cout << "La somma della " << (i+1) << " diagonale e': " << diagonale[i] << endl;

	system("PAUSE");
    return 0;

}
mi ha detto anche che non posso calcolare il numero di diagonali algebricamente perchè non funziona poi, ma funziona lo stesso
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2007, 00:20   #36
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
Quote:
Originariamente inviato da -Slash Guarda i messaggi
cioè?
Cioè il codice che hai scritto non funziona perché non esistono costruttori di vector che prendono in ingresso quei parametri.
Puoi fare però così per creare una matrice R x C:
Codice:
vector< vector<int> > m;

m.resize(R);
for(int i = 0; i < R; ++i)
   m[i].resize(C, 0);
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2007, 15:07   #37
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
Quote:
Originariamente inviato da cionci Guarda i messaggi
Cioè il codice che hai scritto non funziona perché non esistono costruttori di vector che prendono in ingresso quei parametri.
Puoi fare però così per creare una matrice R x C:
Codice:
vector< vector<int> > m;

m.resize(R);
for(int i = 0; i < R; ++i)
   m[i].resize(C, 0);
nono, con i vector come l'avevo fatto io funziona bene

ho letto la guida qui su come creare vector di vector

http://www.dcs.bbk.ac.uk/~roger/cpp/week7.htm
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2007, 15:48   #38
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
Azzz...avevo letto male...non avevo visto che m era il vettore sopra.
in effetti così va bene.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone L'IA "seria" di Appian è divers...
Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ESA ha proposto un aumento del budget da...
Piratare Battlefield 6? Davvero una pess...
Arriva Veeam Data Platform v13. Pi&ugrav...
Framework interrompe la vendita di RAM: ...
Tachyum inventa le memorie TDIMM: una nu...
Roborock Q7 TF+, il robot economico cost...
Osca rinasce: le auto dei fratelli Maser...
Hlpy, la tecnologia al servizio dell’ass...
Ericsson rilancia sul 5G Standalone: l’I...
Black Friday Amazon: arrivano i super-sc...
Seagate raggiunge 6,9 TB per piatto con ...
Samsung lancia la One Shot Challenge: co...
Dell: il passaggio da Windows 10 a Windo...
Black Friday Speaker: JBL, Bose, Sony, M...
Hai un router ASUS? La nuova falla in Ai...
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: 21:54.


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