Programma con array
Scrivere una funzione C++ che, dati due array di
interi positivi a e b, restituisce l’array c che contiene i numeri positivi che
appaiono in entrambi gli array (si suppone che gli array a e b non contengano
elementi ripetuti).
Esempio: a={2,11,6,5,9}, e b={2,3,4,11,7,5}. La funzione restituisce
c={2,11,5}.
ecco il mio elaborato
a me stampa solo il primo valore cercato
perchè?
interi positivi a e b, restituisce l’array c che contiene i numeri positivi che
appaiono in entrambi gli array (si suppone che gli array a e b non contengano
elementi ripetuti).
Esempio: a={2,11,6,5,9}, e b={2,3,4,11,7,5}. La funzione restituisce
c={2,11,5}.
ecco il mio elaborato
a me stampa solo il primo valore cercato
perchè?
#include<iostream> using namespace std; const int N=4; bool funzione(int [5], int [3]); int main() { int a[5]={2,11,6,5,9}; int b[3]={2,11,5}; funzione(a,b); return 0; } bool funzione(int x[5], int y[3]) { int c[N]={}; int dc=0; int i,j; bool condizione=false; for(i=0;i<5 && !condizione;i++) { for(j=0;j<3 && !condizione; j++) { if(x[i]==y[j] && !condizione) { condizione=true; c[dc]=x[i]; dc++; } j++; } i++; } for(int k=0;k<dc;k++) cout<<c[k]<<" "; return condizione; }
Risposte
Utilizza il tag code per inserire il codice in modo da mantenere la formattazione e rendere leggibile il codice, questa volta l'ho fatto io per te. Ma dal testo del problema sembra che la funzione debba essere in grado di funzionare per qualsiasi array di ingresso, mentre tu hai limitato le due dimensioni in modo abbastanza strano. Quando ho più tempo provo a dare un occhiata all'algoritmo che hai usato.
Perché non dovrebbe stampare solo il primo valore? Appena trovi il primo valore, setti "condizione" a "true", e per come hai scritto il programma lo fai uscire da tutti i cicli. Quella variabile credo sia inutile, basta impostare i cicli for sulle dimensioni degli array e basta, il ciclo finisce quando gli array sono stati "parsati" per intero.
Concordo sulle le osservazioni di apatriarca. Se il testo ti chiede array di qualunque dimensione, l'array finale "c" va allocato dinamicamente, e la funzione deve prendere la dimensione degli array in input (a meno di altri metodi per capire dove finiscono). Ovviamente, visto che il testo richiede l'uso del c++, la classe std::vector ti semplificherebbe molto la vita. Credo che ci sia una funzione delle STL per chiamare una funzione per ogni valore di un array, ma non ne so di più (dovresti approfondire)
Concordo sulle le osservazioni di apatriarca. Se il testo ti chiede array di qualunque dimensione, l'array finale "c" va allocato dinamicamente, e la funzione deve prendere la dimensione degli array in input (a meno di altri metodi per capire dove finiscono). Ovviamente, visto che il testo richiede l'uso del c++, la classe std::vector ti semplificherebbe molto la vita. Credo che ci sia una funzione delle STL per chiamare una funzione per ogni valore di un array, ma non ne so di più (dovresti approfondire)
"me stesso":
Credo che ci sia una funzione delle STL per chiamare una funzione per ogni valore di un array, ma non ne so di più (dovresti approfondire)
Trovata!

http://www.cplusplus.com/reference/algorithm/for_each/
Utilizzerei il controllo di condizione solo e solamente sul ciclo piu' interno (quello della j ) (mi sembra anche giusto perchè se hai trovato un numero presente nel secondo vettore è inutile che continui a cercarlo).
Il ciclo esterno non dovrebbe avere questo controllo (quello della i ), ma termina fino alla fine.
Ovviamente cosi' facendo dovresti spostare la istruzione:
bool condizione=false;
internamente al primo ciclo (non esterna cosi dove l'hai messa)
Il ciclo esterno non dovrebbe avere questo controllo (quello della i ), ma termina fino alla fine.
Ovviamente cosi' facendo dovresti spostare la istruzione:
bool condizione=false;
internamente al primo ciclo (non esterna cosi dove l'hai messa)
potreste farmi vedere nel codice come lo modifichereste
io non ho ancora capito
vi dico solo che posso usare solo cicli e array
io non ho ancora capito
vi dico solo che posso usare solo cicli e array
ho capito grazie