Ciao a tutti!
Mi scuso per il disturbo. Ho un esercizio da proporvi.. Io l'ho provato a fare ma mi da un sacco di errori.. Propongo cmq la mia soluzione.
Il testo dell'esercizio è il seguente:
Creare i file array.h e array.c che consentano di utilizzare la seguente funzione :
extern void array_remove (double *arr, size_t *pn, size_t pos);
La funzione accetta come parametri un puntatore a un vettore di double arr, un puntatore a un dato di tipo size_t che punta ad una variabile che ne indica la dimensione pn, una posizione pos.
Se la posizione pos è all'interno dell'array, la funzione deve eliminare dall'array l'elemento alla posizione pos spostando indietro di una posizione tutti gli elementi successivi opportunamente. Se riesce ad eliminare un elemento, la funzione deve modificare la variabile contenente la dimensione decrementandola di uno, altrimenti deve lasciare la dimensione inalterata.
Arr e pn non saranno mai NULL. La dimensione dell'array può essere 0.
Allora la mia soluzione è la seguente :
Per il file array_h :
#if!defined ARRAY_H
#define ARRAY_H
#include <stdio.h>
extern void array_remove (double *arr, size_t *pn, size_t pos);
#endif
Per il file array.c invece
#include "array.h"
#include <stdio.h>
void array_remove (double *arr, size_t *pn, size_t pos)
{
if(pos<= *pn) {
size_t i;
for(i = pos; i < &pn; i++){
arr[i] = arr[i + 1];
}
pn = pn - 1;
}
}
Poi ho creato un main :
#include "array.h"
#include <stdio.h>
size_t DIMENSIONE (double *vett)
{
int i = 0;
for( i = 0; vett[i] != NULL ; i++);
return i;
}
Int main(void)
{
double vettore[] = {1.2 , 7.9 , 4.6 , 8.0 , 5.7 , 10.3 };
size_t DIM = DIMENSIONE(vettore);
size_t posizione = 4;
array_remove (vettore, &DIM, posizione);
}
Il compilatore mi da un errore nel main, in specifico mi dice che non posso convertire void a double nella funzione DIMENSIONE .. Ma se voglio sapere quanti elementi contiene il mio array come faccio a fermare il ciclo for ?! Si ferma di contare quando il mio array è vuoto.. Cioè NULL.. Non so..
Poi mi da un altro errore nel file array.c
Quando faccio il ciclo for mi dice che size_t differisce di livello da size_t ** ?!
Vi prego di scusarmi ma solo alle prime armi con il C.. Non me ne vogliate..
Nell'attesa di una risposta vi ringrazio anticipatamente .