|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Problemi su strutture
Ciao a tutti!
Devo creare una funzione che esegue operazioni su vettori complessi (poi dovrò farlo anche per matrici). Io ho fatto così (supponendo che io passi dei valori a questi vettori dal main): #define N 4 typedef struct{ float re; float im; } complex; complex b[N],c[N]; complex addvect(complex b[], complex b[]); complex addvect(complex b[], complex b[]){ int i complex a[N]; for(i=0; i<N; i++){ a[i]=0.0; for(i=0; i<N; i++){ a[i].re+=b[i].re+c[i].re; a[i].im+=b[i].im+c[i].im; } } return a; } A questo punto mi da errore in fase di compilazione, due messaggi sono significativi: Subscripted value is neither array nor pointer Incompatible types in return Perché? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Aug 2004
Messaggi: 156
|
nella tua funzione hai definito 2 volte lo stasso parametro b[], poi dovrebbe restituire un complex invece restituisce un complex*.
Prova così Codice:
void addvect(complex *a,complex *b, complex *c){
int i;
for(i=0; i<N; i++){
a[i].re=b[i].re+c[i].re;
a[i].im=b[i].im+c[i].im;
}
}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Ok grazie. Cmq mi sono sbalgiato a scrivere complex b[] l'ho dichiarato una sola volta (lì doveva esserci c[]). Cmq se volessi ritornare un complex e non un complex * come avrei dovuto scrivere la return?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Più o meno doveva essere cosi :
Codice:
complex * addvect(complex *b, complex *c){
int i;
complex a[N];
for(i=0; i<N; i++){
a[i].re=b[i].re+c[i].re;
a[i].im=b[i].im+c[i].im;
}
return a;
}
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Grazie mi sei stato di aiuto! Ciao!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:05.


















