PDA

Visualizza la versione completa : [C++] Funzioni che accettano e restituiscono vettori


foraccio
21-03-2011, 18:39
ciao a tutti,

sto facendo un programma che necessita l'uso di funzioni che ammettano come argomento vettori e che diano come risultato vettori. dato che continuo ad avere errori in compilazione ho cominciato a fare programmi di prova sempre più semplici per capire cosa mi sfuggiva.
ma evidentemente c'è qualcosa a cui proprio non arrivano le mie rudimentali conoscenze del C++, perchè non riesco a far girare neanche un semplice programma come questo (moltiplicazione di un vettore per uno scalare):

#include<iostream>
#include<math.h>

using namespace std;

double multivector (double x, double vector[3]){

double result[3];

result[0] = x*vector[0];
result[1] = x*vector[1];
result[2] = x*vector[2];

return(result[3]);
}

int main()
{
double x;
double vector[3], risultato[3];

cout << "Questo programma calcola le componenti di un dato vettore moltiplicato per un dato scalare.\n";
cout << "Inserire la prima componente del vettore: ";
cin >> vector[0];
cout << "\nInserire la seconda componente del vettore: ";
cin >> vector[1];
cout << "\nInserire la terza componente del vettore: ";
cin >> vector[2];
cout << "\nInserire lo scalare: ";
cin >> x;

risultato[3] = multivector(x, vector[3]);

cout << "\nLe componenti del vettore risultante sono: " << risultato [0] << "\n" << risultato[1] << "\n" << risultato[2];
return(0);
}

sicuramente sarà una boiata, ma portate pazienza, ci ho perso ore e penso proprio di aver bisogno di una mano...

grazie!

Alex'87
21-03-2011, 19:32
Usa il tag CODE per postare del codice...


Originariamente inviato da foraccio

double multivector (double x, double vector[3]){

double result[3];

result[0] = x*vector[0];
result[1] = x*vector[1];
result[2] = x*vector[2];

return(result[3]);
}
multivector per come è dichiarata restituisce un double, non un vettore di double. Inoltre return (result[3]) restituirà un singolo elemento (il quarto), non tutto l'array.

foraccio
21-03-2011, 22:15
ma allora come si fa? così?


double multivector[3](double x, double vector[3]){
double result[3];
result[0] = x*vector[0];
result[1] = x*vector[1];
result[2] = x*vector[2];
return(result); }

a me non compila in ogni caso...

grazie

Celebron
21-03-2011, 22:41
la funzione deve restituire un double* (dualità puntatore-vettore)
quello che hai scritto tu come tipo di ritorno non ha alcun senso sintattico (leggiti un manuale di c/c++ e capirai perché)

nel main ovviamente devi mettere
risultato = funzioneblabla
non
risultato[3] = funzioneblabla

Loading