|
|
|
![]() |
|
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: 03:04.