OoregonSuper FamosoIscritto danov, 2011Messaggi2191725 gen 2021, 16:52No, non credo sia il compilatore. Sicuro di avere ricompilato il codice dopo le modifiche e non ci siano errori? Se vuoi posta un file zippato del tuo progetto completo e lo provo.
/Anonimizzato29959Utente anonimizzato26 gen 2021, 15:45Http://www.filedropper.com/esercizio43-funzionenumeroprimoenumeroarmstrong Ecco il file
OoregonSuper FamosoIscritto danov, 2011Messaggi2191726 gen 2021, 16:04Nel tuo file, alla fine della funzione c'è ancora if (sum == numA) Perché non fai attenzione?
OoregonSuper FamosoIscritto danov, 2011Messaggi2191726 gen 2021, 16:36Ma che vuoi dire? Quella if è sbagliata, correggila
/Anonimizzato29959Utente anonimizzato26 gen 2021, 16:38L'ho corretta con copia_num ma nemmeno funziona
OoregonSuper FamosoIscritto danov, 2011Messaggi2191726 gen 2021, 16:50E no così deve funzionare. Cosa hai scritto esattamente? Hai ricompilato?
/Anonimizzato29959Utente anonimizzato26 gen 2021, 20:19#include <stdio.h> #include <stdlib.h> #include <math.h> /*Definizione dei prototipi*/ int check_primo(int numP); int check_Armstrong (int numA); int main(){ int N; printf("Inserire un valore intero: "); scanf("%d",&N); printf("Verificare se il valore intero sia un numero primo\n"); int cont= check_primo(N); if(cont==1){ printf("Il numero e' primo\n"); } else printf("Il numero non e' primo\n"); printf("Verificare se il valore intero sia un numero di Armstrong\n"); int ris=check_Armstrong(N); if(ris==1){ printf("%d e' un numero di Armstrong\n",N); } else printf("%d non e' un numero di Armstrong\n",N); return 0; } int check_primo(int numP){ int div=1,cont=0; while((div<numP) && !cont){ if((numP%div)==0){ cont++; } else div++; } return cont; } int check_Armstrong(int numA){ int copia_num=numA,sum=0,rem; int cifre=1+(int)(log(numA)/log(10)); while(numA){ rem=numA%10; sum+=(int)pow(rem,cifre); numA/=10; } if(sum==copia_num) return 1; else return 0; }
OoregonSuper FamosoIscritto danov, 2011Messaggi2191726 gen 2021, 20:33E questo ultimo codice funziona Allegati: 9500_c6c60723c66658fe5d6f43cd44da6e5a.png
/Anonimizzato29959Utente anonimizzato26 gen 2021, 20:40L'importante che il codice sia corretto... Ti ringrazio nuovamente per il tuo magnifico aiuto Allegati: 29959_ab54f9c82e9695f514298ea42cf85111.jpg
OoregonSuper FamosoIscritto danov, 2011Messaggi2191726 gen 2021, 20:45Ma tu che compilatore utilizzi? Per curiosità, prova a scrivere printf("%d %d\n", sum, copia_num); prima della if e mostra quali valori sono visualizzati
/Anonimizzato29959Utente anonimizzato26 gen 2021, 20:53Sto usando Mingw anche se dovrei convertirmi Cygwin... Adesso provo
/Anonimizzato29959Utente anonimizzato26 gen 2021, 20:55Compilatore obsoleto e mal funzionante Allegati: 29959_8a073cd09c0f984fdb4346e7f82cd5f4.jpg
OoregonSuper FamosoIscritto danov, 2011Messaggi2191726 gen 2021, 21:32Quindi è un problema di calcolo delle librerie del compilatore che usi. E se aggiungi printf("%d\n", (int)pow(rem, cifre)); prima di sum += (int)pow(rem, cifre); quali valori vedi?