Gia',non avevo tenuto conto del fatto che vengono fatti a-1 paragoni tra gli elementi del vettore.
Ovviamente vet[b-1] non esiste e allora quando fa il paragone tra vet[b-1] e qualsiasi condizione,questa viene data per vera (infatti se faccio cosi' alla prima iterazione mi stampa k e i entrambe uguali a 1).Era banale,ho risolto ponendo cambiando l' ultima parte del ciclo,che diventa:
codice:
printf("Positivi: %d nulli: %d negativi: %d pari: %d dispari %d ",positivi, nulli, negativi,pari,dispari);
for(b=0;b<(a-1);++b){
if(vet[b]<vet[b+1])
++k;}
for(b=0;b<a;++b){
if(vet[b]>vet[b+1])
++i;
}
if((a-1)==k)
printf("La sequenza e' crescente");
else if((a-1)==i)
printf("La sequenza e' decrescente");
else
printf("La sequenza e' in ordine sparso");
return 0;
}
E stavolta mi viene giusta.
Grazie per i suggerimenti,ho risolto.
EDIT:
Originariamente inviato da simo_85
Invece di k & i puoi anche usare una sola variabile in questa maniera
codice:
...
b = i = 0;
while(b < (a - 1))
{
if(vet[b] < vet[b + 1])
i++;
b++;
}
if(i == 0)
printf("La sequenza e' decrescente\n");
else if(i == (a - 1))
printf("La sequenza e' crescente\n");
else if(i != (a-1) && i != 0)
printf("La sequenza e' in ordine sparso\n");
return 0;
}
Come idea mi piace,pero' il problema e' che la condizione che vet[b]<vet[b+1] non implica che vet[b]>vet[b+1],perche' non consideri il caso che vet[b]=vet[b+1].
Se lo scrivo cosi' e per esempio inserisco a=3,poi digito 2,2,2 mi stampa che il vettore e' decrescente.Comunque ho risolto,grazie per le idee.