Traccia : restituisci 0 se l'ordine non e' crescente, viceversa 1.
#include <stdio.h>
#include <stdlib.h>
int Num_vettore(int * );
int Ordinatore(int *,int *);
int main()
{
int vettore[]={1,2,3,4,5,6,7,0},risultato=0,dim=0,*puntatore_vettore=&vettore[0],*puntatore_dim=&dim;
dim=Num_vettore(puntatore_vettore);
printf("%d\n",dim);
risultato=Ordinatore(puntatore_vettore,puntatore_dim);
printf("%d\n",risultato);
return 0;
}
int Num_vettore(int *vettore)
{
int dim=0;
for (int i=0;i<1;)
{
if(vettore[dim]!='\0')
{
dim++;
}
else
{
i++;
}
}
return dim;
}
int Ordinatore(int *vettore,int *dim)
{
for(int i=0;i<(dim-1);i++)
{
if(vettore[i]<=vettore[i+1])
{
if(i==(dim-2))
{
return 1;
}
}
else
{
if(vettore[i]>vettore[i+1])
{
return 0;
break;
}
}
}
}
1)Posso dichiarare un puntatore vettore cosi:
int Num_vettore(int * );//si
int Ordinatore(int *,int *);//si
oppure
int Num_vettore(int *[] );//no
int Ordinatore(int *[],int *)//no
2)Ho le stesse prestazioni se uso la variabile al posto del puntatore ? - ottenendo lo stesso risultato ?
dim=Num_vettore(puntatore_vettore);
risultato=Ordinatore(puntatore_vettore,puntatore_dim);
3)Si dichiara cosi' il puntatore di un vettore.
int vettore[]={1,2,3,4,5,6,7,0},risultato=0,dim=0,*puntatore_vettore=&vettore[0],*puntatore_dim=&dim;
3)la dichiarazione e' corretta.
4)Qui posso usarlo cosi' oppure devo utilizzarlo come *(vettore +i)
if(vettore[dim]!='\0')
5)Poi perche' sono costretto a mettere lo 0 per terminare? - non dovrebbe assegnare 0 ai prossimi valori ?
int vettore[]={1,2,3,4,5,6,7,0}
5)[forse risolto] il vettore assegna soltanto i valori, per azzerarlo bisogna dichiararlo con
int vettore[]={}
per poi assegnarci un valore.
e' un po' ostico come argomento, ma mi ci devo soffermare per apprendere al meglio il suo potenziale.
Il libro lo tratta come un argomento un po' di nicchia, quindi non si sofferma molto.