Salve ragazzi sto cercando di risolvere il suddetto esercizio da qualche ora ma senza avere un esito favorevole. Vi allego il codice che ho sviluppato che però purtroppo non funziona.
#include <stdlib.h>
int P, M;
int p[10];
//(int *)malloc(1000*sizeof(int));
int mcd(int a, int b){
int r;
while(b){
r = a%b;
a=b;
b=r;
}
return a;
}
void inizializza(int current_P, int current_M) {
// Salviamo P e M in due variabili globali.
P = current_P;
M = current_M;
}
int controlla(int checksum) {
static int in=0;
p[in++]=checksum; //non funziona
for(int i=0; i<in; i++){
printf("p[in]: %d\n", p[in]);
printf("in: %d\n", in);
if(mcd(p[in],checksum)!=1){
return p[in];
}
}
return 0;
}
Ho pensato di salvare i vari checksum che vengono passati alla funzione in un array globale e di utilizzare una variabile statica per memorizzare la lunghezza occupata dell’array. Il problema è che l’array che uso per salvare i checksum, cioè p, rimane sempre vuoto cioè tutti i valori risultano essere uguali a 0. Qui in basso vi allego l’output in relazione ad un esempio di input.
4 10
3 2 6 4
p[in]: 0
in: 1
p[in]: 0
in: 2
p[in]: 0
in: 3
p[in]: 0
in: 4
0 0 0 0
Grazie per eventuali consigli su come risolvere il problema.