Ciao a tutti! Oggi ho provato a fare questo programma, volevo sapere se per voi era giusto dato che ho trovato una soluzione completamente diversa dalla mia
ESERCIZIO: definire la funzione sonosuperato con parametri:
a di tipo vettore di 500 int;
b di tipo vettore di 499 int;
c di tipo puntatore/riferimento ad un int
La funzione per ogni posto i del vettore a, il valore a
deve essere copiato nel vettore b solo se esiste almeno una posizione di j maggiore di i tale che a<a[j]. La funzione deve inoltre scrivere in c il numero di valori copiati.
Nella funzione main invece, dichiarare un vettore m di 500 int , n di 499 int e una variabile p di tipo int.
Ripetere le seguenti operazioni fino a quando la chiamata della funzione sonosuperato() scrive in tutti i posti del vettore n dei valori:
a- riempire il vettore m con valori letti da standard input
b- eseguire la funzione sonosuperato() applicata al vettore m inserendo i risultati nel vettore n e nella variabile p.
#include <iostream>
using namespace std;
void sonosuperato(int a[500], int b[499], int &c)
{
int i, j, conta, k=0, copia = 0;
for (i = 0; i < 500; i++)
{
conta = 0;
for (j = 0; j < 500; j++)
{
if (a[i] < a[j])
{
conta++;
}
if (conta == 1)
{
b[k] = a[i];
k++;
copia++;
}
}
}
c = copia;
}
int main()
{
int m[500], n[499], p, i;
do{
for (i = 0; i < 500; i++)
{
cin >> m[i];
}
sonosuperato(m, n, p);
} while (!(p == 499));
return 0;
}