Pourquoi est-ce que je reçois “les fonctions nestedes sont désactivées…” Erreur dans mon code?

Fondamentalement, un programme pour trouver le plus grand facteur premier d’un nombre . Je ne sais pas si la logique est correcte car je ne peux pas l’exécuter pour la tester. Je sais que c’est long. Mais s’il te plaît, pardonne-moi.

//largest_prime.c #include  int main() { int num,large; int prime(int); int lprime(int); printf("Enter number: "); scanf("%d",&num); large = lprime(num); printf("Largest Prime = %d\n",large); return 0; } int lprime(int num) { int i=num-1,large; while (i!=-1) { if (num%i==0) { if (prime(i)==1) { large=i; i=-1; } i--; } return large; } int prime(int num) { int prime,i=num-1; while (i!=-1) { if(num%i==0) { if(i!=1) { i=-1; return 0; } else return 1; } i--; } } 

Je reçois ceci en sortie au terminal (j’utilise Mac) en utilisant GCC:

 largest_prime.c: In function 'lprime': largest_prime.c:26: error: nested functions are disabled, use -fnested-functions to re-enable largest_prime.c:39: error: syntax error at end of input 

J’ai essayé de -fnested-fonctions pour réactiver. Je reçois:

 largest_prime.c: In function 'lprime': largest_prime.c:39: error: syntax error at end of input 

S’il vous plaît aider!

lprime manque la fin ‘}’ (en fait, je crois que vous avez perdu pendant que vous traînez ‘}’)

il vous manque un après le return large;

le compilateur en déduit que vous commencez une nouvelle déclaration de fonction dans lprime où l’erreur de fonction nestede

Les fonctions ne peuvent pas être nestedes dans ISO C; permettre à une extension du compilateur de permettre alors n’est pas la solution; juste rendre votre code valide C. Votre style d’indentation ne vous aide pas ici; mais le fait que la dernière ligne de chaque fonction ne se trouve pas à la marge de gauche doit faire sonner l’alarme. Les compilations suivantes sont compilées mais pas sans avertissements (lignes ajoutées marquées):

 //largest_prime.c #include  // Forward declarations int lprime(int num) ; //******************** int prime(int num) ; //******************** int main() { int num,large; printf("Enter number: "); scanf("%d",&num); large = lprime(num); printf("Largest Prime = %d\n",large); return 0; } int lprime(int num) { int i=num-1,large; while (i!=-1) { if (num%i==0) { if (prime(i)==1) { large=i; i=-1; } i--; } //******************** } return large; } int prime(int num) { int prime,i=num-1; while (i!=-1) { if(num%i==0) { if(i!=1) { i=-1; return 0; } else return 1; } i--; } } 

Les avertissements sont:

 main.cpp(34) : warning C4101: 'prime' : unreferenced local variable main.cpp(46) : warning C4715: 'prime' : not all control paths return a value 

Je n’ai pas exécuté le code, donc si cela fonctionne correctement, c’est à vous de le déterminer.