Il problema è piuttosto semplice, perciò ti do un consiglio: prova di nuovo a trovarlo da solo, è veramente facile. Per aiutarti, metti un bel
subito dopo i due cicli for con cui conti k e i. Dovrebbe fartelo capire subito. Comunque se non ci arrivi sotto c'è la soluzione.codice:printf("DEBUG: k = %d, i = %d\n", k , i);
-----------------------------------------------
Tu decidi di inserire 3 numeri, quindi a viene inizializzato a 3. Ok?
Nei due cicli for, b assume i valori da 0 ad (a - 1). Questo significa che quando fai il confrontostai facendo il confrontocodice:vec[b] > vec[b + 1], e ovviamente vec[a] non esiste: è il primo elemento *fuori* dall'array.codice:vec[a - 1] > vec[a]
Quando vuoi fare un confronto tra gli elementi consecutivi di un array dovrai quindi fermarti un elemento prima, il che significa
E poi ancora: alla fine fai il controllocodice:for (b = 0; b < (a - 1); ++b).codice:if (a == k)
Immagina che il vettore abbia 3 elementi. Una volta sistemato il ciclo come detto sopra, otterrai sempre che la sequenza è in ordine sparso. Questo perchè con 3 elementi puoi fare al massimo 2 confronti, quindi se i 3 numeri fossero crescenti k sarebbe uguale a 2, e non 3.
Ciao![]()

Rispondi quotando