Ho modificato un po la tua funzione, ho aggiunto una variabile bool flag, e un altra variabile int contatore j.
Il programma funziona cosi, per ogni elemento dell'array a[] scorre gli elementi inseriti nell'array b[], se a[i] è maggiore di uno degli elementi di b[] flag diviene false, e non esegue l'inserimento in b[], altrimenti viene inserito in b[].
Ho commentato un po la funzione dovresti riuscire a capire come funziona
codice:#include<stdlib.h> #include<iostream> using namespace std; void InParte(int a[], int b[], int &c) { int i = 0, j = 0, k = 1, min, conta = 0; bool flag = true; b[0] = a[0]; min = b[0]; for (i = 1; i<5; i++) { // Per tutti gli elementi dell'array a[] flag = true; // Scorro tutti gli elementi dell'array b[] for (j = 0; j<k; j++) {// Per gli elementi inseriti nell'array b[] di volta in volta crescente if (a[i]>b[j]) {//Se l'elemento di a[] è maggiore degli elementi di b[] flag = false; // disabilito l'inserimento break; } } if (flag) {// Se l'elemento è minore di tutti gli elementi di b[] b[k++] = a[i]; min = a[i]; } } c = min; } int main() { int x[5] = { 0 }, y[5] = { 0 }, n, i = 0, ris, k = 0; do { cout << "carica vettore x: \n" ; for (i = 0; i < 5; i++) { cout<< "-> "; cin >> x[i]; } InParte(x, y, ris); n = ris; cout << "n: " << n << endl; for (k = 0; k<5; k++) { cout << y[k] << endl; } } while (n != 0); system("pause"); return 0; }


Rispondi quotando
