la funzione inserisci chiama allunga:
codice:
void inserisci(int elemento, int elem[], int* x[]){
int posizione = elemento/100;
int i = elemento - (posizione * 100);
if (elem[posizione] == -1){
x[posizione] = new int[1];
elem[posizione] = 1;
}
if (elem[posizione] < i){
x[posizione] = allunga(x,elem[posizione],i)
inizializza(x[posizione]);
elem[posizione]=i;
}
x[posizione][i] = elemento;
}
il main non è particolarmente interessante, si limita a chiamare inserisci. cmq il codice è il seguente:
codice:
main(){
int n_elem[10];
int* x[10]={NULL};
int opz;
int elemento;
for (int i=0; i<10; i++){
n_elem[i] = -1;
}
do{
cout << "Inserisci un elemento \n";
cin >> elemento;
inserisci(elemento, n_elem, x);
cout << "Vuoi inserire ancora? 0-->no 1-->si" << endl;
cin >> opz;
}while(opz);
}
Vi posto anche la richiesta dell'esercizio a questo punto altrimenti non si capisce come deve essere la struttura:
Vogliamo gestire valori da 0 a 999 con dieci array, allocati dinamicamente, di massimo 100 elementi.
L’idea e’ che il primo array deve contenere gli elementi tra 0 e 99 (se ce ne sono), il secondo contiene gli elementi tra 100 e 199, e cosi via.
Quindi ogni valore da 0 a 999 ha un suo posto nella struttura,
ad esempio il valore 103 e’ l’elemento di indice 3 del secondo array.
La struttura dati che utilizziamo e’ un array X di puntatori ad interi,
inizializzati a NULL. Durante l’esecuzione del programma, gli elementi di X saranno degli array allocati dinamicamente.
Si chiede di realizzare le operazioni di inserimento, ricerca e cancellazione, per gestire questa struttura dati.
Inserimento. Vogliamo inserire il valore N, nell’array appropriato, alla posizione che gli compete (vedi esempio sopra).
Allocando solo il numero di locazioni strettamente necessarie
Ricerca. La funzione ricerca testa se un certo valore N e’ presente in X.
Cancellazione. La funzione cancella elimina il valore dato N, se presente in X. Nella cancellazione puo’ capitare che uno degli array si svuoti, in questo caso l’array va deallocato.
grazie