Salve a tutti,
io sto provando a risolvere qualche esercizio di algobadge, in particolare il problema Biglietti a Milano. Ho scritto un pezzo di codice in C++ che fornisce il risultato giusto nei 3 casi di test forniti, ma ogni volta che provo a sottoporlo la piattaforma mi dà 0/100, quindi probabilmente sto sbagliando qualcosa nelle modalità di invio. Questo è esattamente quello che invio:
#include <stdio.h> #include <assert.h>
int compra(int N, int M, int A, int B) {
int cent;
if(N>=M&&AM>B){
while(N>M){
N-=M;
cent+=B;
}
if(NA<B)
cent+=NA;
else
cent+=B;
}
else if(N>=M&&AM<=B)
cent=AN;
else if (N<M&&AN>B)
cent=B;
else if (N<M&&AN<=B)
cent=AN;
return cent;
}
Ciao, la tua soluzione non viene compilata perchè usi variabili non dichiarate, in particolare AM, AN e NA. Poi per quanto riguarda la soluzione, qui trovi informazioni utili per risolvere il problema descritto nel testo.
Si scusami, nel fare copia-incolla del codice ha cancellato gli asterischi… dove c’è scritto AM sarebbe A*M e così via.
Il problema non è l’algoritmo o la sua compilazione (su due diversi computer con compilatori diversi fornisce il risultato corretto) ma proprio il fatto che non riesco a fare la sottoposizione, perchè ogni volta mi ritorna 0/100.
#include <stdio.h>
#include <assert.h>
int compra(int N, int M, int A, int B) {
int cent;
if(N>=M&&A*M>B){
while(N>M){
N-=M;
cent+=B;
}
if(N*A<B)
cent+=N*A;
else
cent+=B;
}
else if(N>=M&&A*M<=B)
cent=A*N;
else if (N<M&&A*N>B)
cent=B;
else if (N<M&&A*N<=B)
cent=A*N;
return cent;
}
int main() {
FILE *fr, *fw;
int N, M, A, B;
fr = fopen("biglietti.input25.txt", "r");
fw = fopen("output.txt", "w");
assert(4 == fscanf(fr, "%d%d%d%d", &N, &M, &A, &B));
fprintf(fw, "%d\n", compra(N, M, A, B));
fclose(fr);
fclose(fw);
return 0;
}
eccolo, così da pc compila e tutto, ma il problema mi da 0/100
Il problema è con: fr = fopen("biglietti.input25.txt", "r");
che dovrebbe essere: fr = fopen("input.txt", "r");
in questo modo non da più execution killed e da 20/100, l’altro piccolo errore da sistemare per il 100/100 è che non hai inizializzato cent=0.