Problema di segmentation fault

di il
4 risposte

Problema di segmentation fault

Salve a tutti! ho scritto un programma su dev c++ sul mio compilatore windows, runna perfettamente senza intoppi. ho provato nei pc del laboratorio della mia università (linux) e va in segmentation fault.
ecco il codice (calcola il numero di partizioni in addendi appartenenti alla successione di fibonacci di un generico numero n):
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int hereYouAre(int);
int part(int , int, int);
int maxFib(int, int*, int*);
int main(){
int n, x, y;
scanf("%d",&n);
assert(n>=0);
printf("%d\n",hereYouAre(n));
return 1;
}


int hereYouAre(int n)
{
int x, y;
maxFib(n,&x,&y);
return part(n, x, y);
}

int part(int n, int x, int y)
{
if (n==0) return 1;
if (n<0) return 0;
if (x==1) return 1;
return part(n-x,x,y)+part(n,y,x-y);
}
int maxFib(int n, int *x, int *y)
{
int a=0;
int c=1;
int g;
while(g<=n)
{
g=c+a;
a=c;
c=g;
}
*x=a;
*y=g-a;
return 1;
}
grazie in anticipo!

4 Risposte

  • Re: Problema di segmentation fault

    Utilizza i tag code per postare il codice, e utilizza termini italiani ('runna' non vuol dire niente). Inoltre butta via dev-c, usa codeblocks o visualstudio.
    Per quanto riguarda il tuo problema ti suggerisco di inserire delle printf di debug con il contenuto delle variabili principali. Compila ed esegui il programma nei due ambienti e verifica se ci sono differenze e dove si blocca sotto linux.
  • Re: Problema di segmentation fault

    Ok scusa l'impreparazione, cambierò modo di rapportarmi al sito. grazie dell'aiuto
  • Re: Problema di segmentation fault

    Comunque attenzione alla variabile locale g, la usi senza averla inizializzata in maxFib(). Il compilatore dovrebbe averti dato un warning...
  • Re: Problema di segmentation fault

    Ok l'errore stava nell'inizializzazione delle variabili g, x, y. grazie infinite per l'aiuto!
Devi accedere o registrarti per scrivere nel forum
4 risposte