Chi può aiutarmi ? Il codice di accensione PC da compilazione fallita
#include<fstream>
#include<iostream>
using namespace std;
void Accendi (int N, int acceso[], int pulsante [])
{ for (int i=N; i>=1; i--)
{
//se il computer i è spento premiamo il pulsante i,
// e cambiamo lo stato dei computer di conseguenza
if (!acceso[i]) { pulsante [i]=1;
// cerchiamo tutti i j che dividono i ma solo fino
// a j <= sqrt(i)
for (int j=1; j*j<=i; j++)
// se j è un divisore di i allora i/j è un divisore di i
if (i%j==0)
{ //cambia lo stato del computer j
acceso [j]=1;
// Cambia lo stato del computer i/j, ma solo se questo non
// coincide con j. Questo è per evitare ad esempio il caso
// i = 4, j = 2, in cui altrimenti lo stato del computer 2
// verrebbe cambiato due volte invece di una sola
if (j * j != i)
acceso[i/j]= 1;
}
}
}
for (int i=1;i<=N;i++) cout<<pulsante[i];
}
int main ()
{ freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int N;
cin>>N;
int acceso[100]={0};
for ( int i=1;i<=N; i++) cin>>acceso[i];
int pulsanti[100]={0};
Accendi (N, acceso,pulsanti);
return 0;
}
il codice in locale mi dà l’output corretto il correttore mi dà compilazione fallita
#include<fstream>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void Accendi (int N, int acceso[], int pulsante [])
{ for (int i=N; i>=1; i--)
{
//se il computer i è spento premiamo il pulsante i,
// e cambiamo lo stato dei computer di conseguenza
if (!acceso[i]) { pulsante [i]=1;
// cerchiamo tutti i j che dividono i ma solo fino
// a j <= sqrt(i)
for (int j=1; j*j<=i; j++)
// se j è un divisore di i allora i/j è un divisore di i
if (i%j==0)
{ //cambia lo stato del computer j
acceso [j]^=1;
// Cambia lo stato del computer i/j, ma solo se questo non
// coincide con j. Questo è per evitare ad esempio il caso
// i = 4, j = 2, in cui altrimenti lo stato del computer 2
// verrebbe cambiato due volte invece di una sola
if (j * j != i)
acceso[i/j]^= 1;
}
}
}
for (int i=1;i<=N;i++) cout<<pulsante[i];
}
int main() {
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int N;
cin>>N;
//cout<<N;
int acceso[100]={0};
for ( int i=1;i<=N; i++) {
cin>>acceso[i];
}
//for ( int i=1;i<=N; i++) cout<<acceso[i];
int pulsanti[100]={0};
Accendi (N, acceso,pulsanti);
return 0;
}
Sinceramente non capisco cosa intendi. Quello che voglio dire è che per questo problema il main è già implementato nel grader e che quindi, come dice nel testo, tu devi mandare solo la funzione Accendi, che verrà chiamata dal grader. Volendo sei comunque libera di scrivere e usare altre funzioni, purché non siano il main.