Visualizzazione stampabile
-
Programmare in C++
ma qualcuno sa spiegarmi cosa c'è che non va qui sotto per favore???
codice:
#include <iostream>
#include <vector>
#include "complesso.cpp"
using namespace std;
main () {
vector <complesso> a(10);
for (int i=0;i<a.size();i++) {
cout<<a[i]<<endl;
};
}
:cry::cry::cry::cry::cry:
-
il compilatore che errore ti restituisce?
da quel che ricordo il ; alla fine del ciclo for non serve... ma a livello di c++ sono un po arrugginito
edit: ma poi.. ora che riguardo, fai una stampa di un vettore non inizializzato?
-
le parentesi dopo il for puoi evitarle visto che fa una sola operazione e come dice il papero il ";" non dev'essere presente dopo una parentesi di chiusura.
fai copia e incolla dell'errore che ti dice che errore è, e scrivici anche la RIGA a cui si verifica l'errore...
comunque per capire dove sbagli dovresti fare un fantastico STEP OVER(f7 f8 mi pare) che passo per passo ti esamina le istruzioni..dove si blocca devi capire perchè...
-
il ; dopo uno statement non mi ha mai dato problemi.. infatti se lo tolgo e compilo non cambia nulla. L'errore è segnalato alla riga 11 dentro il ciclo for, precisamente:
cout<<a[i]<<endl;
il mio sospetto però è che il problema sia legato all'uso di vector. Il messaggio d'errore recita infatti:
no match for 'operator<<' in 'std::cout << (&a)->std::vector<_Tp, _Alloc>:: operator[] [with _Tp = complesso, _Alloc = std::allocator<complesso>](((unsigned int)i))'
Ma poi... con questa sintassi... vector<complesso> a(10).. io sto inizializzando un vettore chiamato a di 10 elementi di tipo complesso..giusto?? o sbaglio??:roll: :roll:
Grazie mille per l'aiuto
-
a mio avviso lo dichiari e basta, non è inizializzato, quindi fai il cout di una variabile non inizializzata, probabilmente l'errore è li... :roll:
-
Ho trovato questa reference
vector - C++ Reference
in particolare le dichiarazioni
codice:
// empty vector of ints
vector<int> first;
// four ints with value 100
vector<int> second (4,100);
// iterating through second
vector<int> third (second.begin(),second.end());
// a copy of third
vector<int> fourth (third);
da ciò posso intuire che la dichiarazione
codice:
vector <complesso> a(10);
dichiara un vettore di 10 elementi non inizializzati di tipo complesso, a meno che in complesso.cpp tu abbia implementato il costruttore in modo che inizializzi l'oggetto di tipo complesso ad un valore di dafault :roll:
correggimi se sbaglio eh, sono arrugginito col c++ :lol: pensa che vector non l'ho quasi mai usato, se non per i compiti in classe, i vettori li ho sempre trattati normalmente con il vecchio e caro
int vett[10]; :lol:
-
Scusami.. ma continuo a non capire il problema.. come faccio ad inizializzare a(10) quindi???
In complesso.cpp io ho solo specificato cosa deve fare il costruttore.. ( in sostanza crea lo zero complesso )..
Grazie per l'avermi dedicato il tuo tempo
-
scusatemi, non ho mai usato cpp quindi potrei dire una castroneria.
Per analogia a quanto riportato da paperoga:
codice:
// four ints with value 100
vector<int> second (4,100);
forse dovresti fare:
codice:
vector <complesso> a(10,0,0);
dove 0 e 0 sono una la parte reale del complesso e la seconda la parte immaginaria. Cioè, mi sembra di capire che la sintassi sia:
vector <tipo> var(n,value);
siccome un numero complesso ha parte reale e parte immaginare, value non è altro che un "vettore" nel senso di due parametri. Ovviamente il costruttore di compless dev'essere implementato in modo tale da inizializzare n numeri complessi in quel modo...
-
Concordo con preiser, tutto sta nel costruttore...
anche se non mi convince molto la scrittura
codice:
vector <complesso> a(10,0,0);
cioè intendi che un vettori di complessi sia, in sostanza, una matrice?
-
Un numero complesso è un vettore:
c = (a, b)
ossia
c = a + i*b
dove i è l'unità immaginaria, tale che i^2 = -1.
Esprimi un complesso come vettore perché così lo puoi rappresentare sul piano di gauss molto comodamente, e diventa quindi una classica rappresentazione cartesiana dove il modulo del vettore, ossia r = sqrt(a^2 + b^2), è la lunghezza del vettore e arg(c) è l'angolo che il vettore forma con l'asse dei numeri reali. Tradotto cartesianamente r è la lunghezza del segmento centrato nell'origine e arg(c) è l'angolo che il segmento forma con l'asse delle x.
Dunque, un array di vettori è, come dici tu, una matrice. Spesso in informatica si fa confusione tra vettore, array, matrice etc.. un numero complesso è un vettore, un array di vettori è una matrice. Ma è anche vero che un vettore a n componenti è una matrice 1xn, ossia un array unidimensionale.