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.