Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] Verifica ricorsiva di un array ordinato

    Salve, mnemonicamente mi sono fatto lo schema dello stack per questo esercizio, e non risco a capire perchè non funziona!!

    Si tratta di verificare con una bool ricorsiva se un array è ordinato in ordine crescente.

    codice:
    #include <iostream>
    #include <cstdlib>
    
    
    
    using namespace std;
    
    bool m(int, int);
    
    bool verifica(int a[],int n)
    { if (n==1)  return true;
    
    
     if(a[n]>a[n-1])
     return verifica(a,n--);
    
     else return false;
    
        }
    
    
    int main()
    {
    int n=5;
    
    int aa[]={4,5,6,7,8};
    
    if(verifica(aa,n)) cout<<"si è ordinato "<<'\n';
    
    
    return 0;
    }
    non ci sono errori ma mi va in crash!

    l'idea mia è che se l'array ha dimensione 1 è ordianto, poi gli passo sempre lo stesso array, e verifico ogni volta se l'elemento successivo è maggiore del precedente.
    Ovviamnte scalo n, fino alla via di guga

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    codice:
    #include <iostream>
    #include <cstdlib>
    
    
    
    using namespace std;
    
    bool m(int, int);
    
    bool verifica(int a[],int n)
    { if (n==1)  return true;
    
    /* se l'ordine deve essere strettamente crescente lascia così,
       altrimenti sostituisci > con >= */
     if(a[n]>a[n-1])
     return verifica(a,--n);
    
     else return false;
    
        }
    
    
    int main()
    {
    int n=5;
    
    int aa[]={4,5,6,7,8};
    
    if(verifica(aa,n-1)) cout<<"si è ordinato "<<'\n';
    
    
    return 0;
    }
    every day above ground is a good one

  3. #3
    GRANDE

    quindi il mio ragionamento(algoritmo) era giusto


    che differenza c'è tra --n e n--

  4. #4
    Originariamente inviato da Johnny_Firpo
    che differenza c'è tra --n e n--
    --n: decrementa e restituisce il valore di n già decrementato
    n--: decrementa e restituisce il valore di n prima che sia decrementato
    Per cui
    codice:
    int n=1;
    cout<<n--<<endl;
    cout<<n<<endl;
    stamperà
    codice:
    1
    0
    , mentre
    codice:
    int n=1;
    cout<<--n<<endl;
    cout<<n<<endl;
    stamperà
    codice:
    0
    0
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.