Verifica di una sequenza (crescenza)

di il
3 risposte

Verifica di una sequenza (crescenza)

Ciao a tutti,
ho un problema con il mio codice, e non so come andare avanti. Devo verificare se la sequenza inserita è crescente, decrescente o nè crescente nè decrescente. Io ho provato così, ma non funziona.
while (cont < sn)
    {
      printf ("Inserisci un numero: ");
      scanf ("%d", &n);
      if (n == 0)
	{
	  contnull++;
	}
      else
	{
	  if (n > 0)
	    {
	      contpos++;
	    }
	  else
	    {
	      contneg++;
	    }
	}
	    if(n%2 == 0)
	    {
	        contpari++;
	    }else
	    {
	        contdispari++;
	    }

        if(n > b)
        {
            contcresc++;
        }else
        {
            if(n < b){
                contdecresc++;
            }else
            {
                contuguali++;
            }
        }
	    b = n;
        cont++;
    }

    if(contcresc == sn - contuguali)
    {
        printf("Sequenza crescente.");
    }else
    {
        if(contdecresc == sn - contuguali)
        {
            printf("Sequenza crescente.");
        }else
        {
            printf("La sequenza non è nè crescente nè decrescente.");
        }
    }
Sapreste aiutarmi? Grazie!

3 Risposte

  • Re: Verifica di una sequenza (crescenza)

    Potresti inviare il programma per intero ? Inoltre ti chiedo se potresti descrivermi il tipo di errore.
  • Re: Verifica di una sequenza (crescenza)

    Inizia con il ""pseudocodice"" e SCOMPONI il problema in TRE parti:

    1) COME fai a sapere se una sequenza e' crescente
    2) COME fai a sapere se una sequenza e' DEcrescente
    3) SE una sequenza NON E' crescente, NE descresnte, CHE COSA ALTRO puo' essere?

    SUDDIVIDI il problema in altre DUE parti:

    1) il caricamento della sequenza da parte dell'utente
    2) l'ANALISI della sequenza.

    QUESTO ti permette di concentrarti su come analizzare la sequenza, SENZA ogni volta doverla inserire da tastiera, ma ne puoi usare una che prepari tu a mano.
  • Re: Verifica di una sequenza (crescenza)

    Innanzitutto usa un for per la variabile cont: va bene che è equivalente al while ma non ha senso spezzettare così il codice.

    Puoi farlo in modo banalissimo con il principio di induzione. Usa due variabili booleane "crescente" e decrescente" inizializzate a true. Per ogni cont > 0, se il nuovo numero immesso è maggiore o uguale a quello precedente allora decrescente viene forzata a false; procedura speculare su crescente.

    Fuori dal for vai a vedere se almeno una delle due variabili è rimasta a true
Devi accedere o registrarti per scrivere nel forum
3 risposte