Funzione che ritorna un vettore:

di il
4 risposte

Funzione che ritorna un vettore:

Salve a tutti!

Mi sono approcciato da poco a C++ ed ho appena studiato le funzioni. Il problema che ho è il seguente:
Prima di tutto, ho dovuto definire due vettori, w e z, che contenessero un certo numero di bit.
Fatto ciò, devo costruire una funzione che, ricevuti in ingresso questi due vettori, fornisca in output un terzo vettore, costituito dall'AND bit a bit dei due vettori in ingresso. Infine, devo creare una funzione che stampi questo terzo vettore risultato. Il mio dubbio è che non riesco a capire come fare in modo che il terzo vettore passi dalla funzione che lo ha prodotto alla funzione che deve stamparlo. Prima di tutto, vi faccio vedere come ho scritto il programma:


#include <iostream>
using namespace std;



void AND_bit_a_bit (int w[], int z[], int n) {

int k[n];

for (int i=0; i<n; ++i)	{
 k[i]=w[i]*z[i];

  }  	

}

void stampa (int k[], int n) {
	
	cout << "Il vettore risultato è : " << endl;
	
	
	for (int i=0; i<n; ++i){
		
		cout << k[i] << endl;
	}
	

	
}


int main () {
	
	int n;
	
	cout << "Inserire n caratteri binari del primo vettore e n caratteri binari per il secondo vettore : ";
	cin >> n; 
	
	int w[n]; 
	int z[n];
	
	cout << "Caratteri primo vettore : " << endl;
	
	for (int i=0; i<n; ++i) {
		
		cin >> w[i];
	}
	
	cout << "Caratteri secondo vettore : " << endl;
	
	for (int i=0; i<n; ++i) {
	
	
		cin >> z[i];
		
     }



AND_bit_a_bit (w, z, n);

stampa  (k, n)


}


Ovviamente così non funziona, perché nella funzione stampa c'è un k che al di fuori della funzione che lo ha creato non viene definito.
Quel che mi chiedo appunto è: come faccio ad inserire nel main il terzo vettore se è stato prodotto nell'ambito circoscritto alla sua funzione? Non credo di poter dichiarare k[n] all'interno del main stesso, fare in modo che passi per la funzione che lo trasformi e poi passarlo alla funzione stampa, perché è stato espressamente richiesto che la funzione che compie la trasformazione deve ricevere in ingresso solo i vettori di partenza w e z. Un'altra cosa: qualsiasi sia la risposta, aggiungo che i puntatori non possono essere utilizzati per il semplice fatto che non rientravano nel nostro piano di studi. Grazie mille per l'attenzione!!

4 Risposte

  • Re: Funzione che ritorna un vettore:

  • Re: Funzione che ritorna un vettore:

    Grazie per la risposta! Però purtroppo non credo valga come soluzione : funzioni del tipo char*, int* (con l'asterisco intendo), con l'operatore new non le abbiamo contemplate. Dobbiamo solo usare gli elementi che ho mostrato nel programma che ho scritto, ma in una forma migliore. Chiedo veramente scusa se sto risultando tedioso...
  • Re: Funzione che ritorna un vettore:

    Dichiara l'array fuori e la tua funzione sarà

    void AND_bit_a_bit (int w[], int z[], int n, int risultato[])

    e comunque int w[] è un puntatore...
  • Re: Funzione che ritorna un vettore:

    Avevo scritto la funzione anche in questa forma infatti! A quanto pare è l'unica alternativa che posso avere. Comunque sì,è vero. int w[] è un puntatore, solo che la parola in questione nel nostro corso non era stata mai esplicitamente nominata così. Veniva detto che gli array, scritti nel prototipo della funzione in quella forma, venivano sostituiti per riferimento.
Devi accedere o registrarti per scrivere nel forum
4 risposte