Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    87

    [C] numeri di Padovan (verificare appartenenza)

    Ciao a tutti,rieccomi, stavo provando a fare un programmino che chiede di determinare se un valore inserito da tastiera appartiene o meno alla successione di padovan,per chi non sapesse cos'è eccola:

    http://it.wikipedia.org/wiki/Successione_di_Padovan
    (in pratica dati 111224... il secondo 2 è dato da 1+1 e il 4 da 2+2, i vari addendi non sono altro che il precedente e il precedente del precedente)

    il professore ci ha suggerito di inserire "manualmente" i primi 3 valori,cioè 1,1,1.
    Il problema è che,innanzitutto, è infinita,quindi spero di aver fatto bene a limitare il for a 50,seconda cosa,appena il programma si addentra nel for impazzisce e mi restituisce errore.
    Mi pare che succeda quando con il ciclo for si finisce in zone della memoria "non previste".

    codice:
    #include <stdio.h>#include <stdlib.h>
    
    
    int main()
    {
        int pdv[50]={1,1,1};
        int a,i,j;
        
        
        do
        {
            printf("inserire un numero >0 per verifica appartenenza a serie padovan");
            scanf("%d",&a);
        }
        while(a<=0);
        
    
    
        for(i=3;i++;i<50)
        {
               pdv[i]=pdv[i-3]+pdv[i-2];           
        }
        for(j=0;j++;j<50)
        {
                          if(a==pdv[j])
                          {
                                       printf("ok appartiene ai primi 50 valori della serie di padovan");
                          }
                          else
                          {
                              printf("non appartiene ai primi 50 valori della serie di padovan");
                          }
        }
        
        system("pause");
        return 0;
    }
    il valore di i l'ho fatto partire da 3 anzichè da zero perchè mi serviva proprio il 3 come valore di partenza,altrimenti non sarei riuscito a calcolare gli elementi della successione.So che c'è qualcosa che mi sfugge di imbarazzante ma non riesco a vederlo :|

    Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    codice:
    for(i=3;i++;i<50)
    Il for è:
    for( inizializzazione; condizione; incremento )
    Cioè
    codice:
    for(i=3;i<50;i++)
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    87
    Grazie!! non me ne ero accorto assolutamente,imbarazzante......
    Vi posto il mio codice,magari a qualcuno può servire

    codice:
    #include <stdio.h>#include <stdlib.h>
    
    
    int main()
    {
        int pdv[50]={1,1,1};
        int a,c,i,j;
        
        do
        {
            printf("\n\n inserire un numero positivo per verificarne l'appartenenza alla serie di padovan\n");
            scanf("%d",&a);
        }
        while(a<=0);
        
    
    
        for(i=3;i<50;i++)
        {
               pdv[i]=pdv[i-3]+pdv[i-2];             
        }
        for(j=0;j<50;j++)
        {
                          if(a==pdv[j])
                          {
                                       printf("\n\n ok appartiene ai primi 50 valori della serie di padovan\n");
                                       c=0;
                                       for(i=0;i<j;i++)
                                       {
                                                       printf("\n %d \n ",pdv[i]);
                                       }
                                       printf("\n %d <<- \n",pdv[j]);
                                       for(i=j+1;i<50;i++)
                                       {
                                                        printf("\n %d \n ",pdv[i]);
                                       }
                          }
        }
        if(c!=0)
        {
              printf("\n\n il numero non appartiene alla sequenza di padovan\n\n");
        }
        system("pause");
        return 0;
    }
    A un certo punto ho messo un pò di for apparentemente senza motivo ma dovrebbero permettere di indicare all'interno della sequenza il numero che abbiamo scelto per mostrare che effettivamente è li dentro XD

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.