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;
}