Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76

    Elemento di rango in un vettore

    MI sono imbattuto in questo esercizio da volgere in linguaggio C, è da ore che ci ragiono ma non ne vengo a capo qualcuno mi può aiutare? Grazie in anticipo

    Dato un vettore v di n (>0) interi distinti, definire una funzione ricorsiva rango che dato il vettore, un numero positivo r (1 <= r <= n), restituisce l'elemento di rango r di v, senza ordinare gli elementi.

    Un elemento k ha rango r in v se v contiene r elementi minori o uguali a k.

    Il prototipo della funzione è:
    int rango(int v[], int r, int inf, int sup)

    Esempio:
    Sia v = [10, -3, -9, 7, -2, 15, -14, 3] e r = 5 allora la chiamata di rango(v, 5, 0, 7) restituirà 3.

  2. #2

    Re: Elemento di rango in un vettore

    Originariamente inviato da Tallid
    MI sono imbattuto in questo esercizio da volgere in linguaggio C, è da ore che ci ragiono ma non ne vengo a capo qualcuno mi può aiutare? Grazie in anticipo
    Cosa non riesci a fare esattamente?
    Riesci a trovare almeno una soluzione iterativa al problema rispettando il prototipo?

  3. #3
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76
    si una soluzione iterattiva la trovo basta fare 2 cicli for annidati, uno che scorre il vettore e l'altro che setta il prossimo elemento da analizzare, però ricorsivamente non riesco a scorrere gli elementi perchè avrei bisogno di un ulteriore parametro...

  4. #4
    Originariamente inviato da Tallid
    avrei bisogno di un ulteriore parametro...
    E quale sarebbe?

  5. #5
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76
    beh un prototipo potrebbe essere questo:

    int rango(int v[],int r, int inf, int sup,int cursor){

    //scorro il vettore partendo dall elemento inferiore
    int count=0;
    for(int i;i<=sup;i++){
    if(v[cursor]>=v[i])count++;
    }
    if(count=r)return v[cursor];//l' elmento è del rango dato
    else {
    if(cursor==sup)return 0;//nessun elemento di rango dato
    cursor++;
    return rango(v,r,inf,sup,cursor);//passo al prossimo elmento

    }
    }
    con la variabile cursor riesco a tenere traccia dell' elemento da valutare

  6. #6
    Originariamente inviato da Tallid
    beh un prototipo potrebbe essere questo:

    int rango(int v[],int r, int inf, int sup){
    }
    Questo prototipo te lo fornisce la fonte dell'esercizio? Se così non è, allora potresti anche definirla diversamente..

  7. #7
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76
    scusa ho appena modificato

  8. #8
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76
    Originariamente inviato da VincenzoTheBest
    Questo prototipo te lo fornisce la fonte dell'esercizio? Se così non è, allora potresti anche definirla diversamente..
    Si la funzione deve avere quella firma

  9. #9
    Originariamente inviato da Tallid
    Si la funzione deve avere quella firma
    Allora devi incrementare inf.
    Quando inf > sup allora il vettore non ha il rango. Ciò ti garantisce di uscire dalla funzione anche nel caso in cui non dovrebbe esserci un elemento rango.

  10. #10
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76
    Originariamente inviato da VincenzoTheBest
    Allora devi incrementare inf.
    Quando inf > sup allora il vettore non ha il rango. Ciò ti garantisce di uscire dalla funzione anche nel caso in cui non dovrebbe esserci un elemento rango.
    incrementando inf perdo il riferimento al primo elemento

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.