# Quando carico il mio programma per testarlo, non funziona mai

**URL:** <https://forum.olinfo.it/t/quando-carico-il-mio-programma-per-testarlo-non-funziona-mai/6071>\
**Category:** Aiuto\
**Created:** [23 Febbraio 2020, 6:21pm UTC](https://forum.olinfo.it/t/quando-carico-il-mio-programma-per-testarlo-non-funziona-mai/6071 "2020-02-23T18:21:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![System64](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/s/9e8a1a/32.png) [@System64](https://forum.olinfo.it/u/System64)\
**Post date:** [23 Febbraio 2020, 6:21pm UTC](https://forum.olinfo.it/t/quando-carico-il-mio-programma-per-testarlo-non-funziona-mai/6071/1 "2020-02-23T18:21:30Z")

</div>

Buongiorno,  
ho provato alcuni esercizi, ma quando carico il programma e lo verifico, mi restituisce sempre 0 punti su 100. Ho provato diversi esercizi, anche i più semplici, che funzionano con gli esempi e con altri input creati da me; eppure, quando carico, mi dà sempre 0 punti. Sto sbagliando il programma? Alle territoriali verrà controllato solo il file output, giusto? Ecco due esempi:  
“Late for work”

```auto
    #include <iostream>
    #include <stdio.h>
    #include <assert.h>

    // constraints

       // input data
       int H0 = 0;
       int M0 = 0; 
       int H1 = 0;
    int M1 = 0;
    int HF = 0;
    int MF = 0;

    using namespace std;

    int main() {
    // uncomment the following lines if you want to read/write from files
      //freopen("input.txt", "r", stdin);
      //freopen("output.txt", "w", stdout);

    assert(4 == scanf("%d%d%d%d", &H0, &M0, &H1, &M1));

    if(H0>H1) {
    	HF = (24-H0) + H1;
    	} else {
    		HF = H1 - H0;
    	}
    	if(M0>M1) {
    		MF = (60-M0) + M1;
    		HF = HF - 1;
    	} else {
    		MF = M1 - M0;
    	}
    printf("%d\n", 42); // print the result
    return 0;
    }

```

“A Tantrum With Consequences”

```auto
    #include<iostream>

    using namespace std;

    int main() {
    	freopen("input2.txt", "r", stdin);
    	freopen("output20.txt", "w", stdout);
    	int P; //planes
    	
    	int check = 0; //did we drop a bomb?
    	int j = 0; //position of house to check if to bomb
    	int k = 0; //pos for burn queue
    	int N; //number of houses
    	int burn = 0; //number of burned houses
    	cin >> N;
    	cin >> P;
    	int tb[N]; // houses to burn at end of raid
    	int H[N]; //height of house i
    	for(int i = 0; i < N; i++) {
    		cin >> H[i];
    		tb[i] = H[i];
    		//cout << tb[i] << endl;
    	}
    	for(int i = 0; i < P; i++) {
    		for(j = 0; j < N; j++) {
    			if(j <= 0) {
    				if(H[j+1] < H[j]) {
    					tb[j] = 0;
    					burn = burn + 1;
    				}
    			} else if (j >= N-1) {
    				if(H[j-1] < H[j]) {
    					tb[j] = 0;
    					burn = burn + 1;
    				}
    			} else if (0<j<N-1) {
    				if(H[j-1] < H[j] && H[j+1] < H[j]) {
    					tb[j] = 0;
    					burn = burn + 1;
    				}
    			}
    		}
    		for(int f = 0; f < N; f++) {
    			H[f] = tb[f];
    		}
    	}
    	cout << burn;
    	return 0;
    }

```

---

<div class="post-metadata">

**Author:** ![IonuT\_Cicio\_328](https://forum.olinfo.it/user_avatar/forum.olinfo.it/ionut_cicio_328/32/1267_2.png) [@IonuT\_Cicio\_328](https://forum.olinfo.it/u/IonuT_Cicio_328)\
**Post date:** [23 Febbraio 2020, 6:51pm UTC](https://forum.olinfo.it/t/quando-carico-il-mio-programma-per-testarlo-non-funziona-mai/6071/2 "2020-02-23T18:51:28Z")

</div>

Piccolo consiglio: formatta il codice in maniera opportuna, e’ quasi illeggibile (per formattazione intendo: tutti gli spazi ed i tab vanno messi bene, le parentesi graffe devono seguire un certo ordine etc…)

Comunque: a prima vista, nella soluzione di late for work hai un `printf("%d\n", 42); // print the result` alla fine, il che vorrebbe dire che alla fine l’output sara’ sempre 42 (non hai messo il tuo di risultato)

Il problema “tantrum with consequences” ti fa 35/100, il problema e’ che per aprire i file hai messo: `freopen("input2.txt", "r", stdin);` e `freopen("output20.txt", "w", stdout);`, invece dovrebbe essere `freopen("input.txt", "r", stdin);` e `freopen("output.txt", "w", stdout);`, quei numeri vanno levati.

Un altro problema del tuo codice, che si nota nella soluzioe di “tantrum with consequences” e’ questo:  
`int P; //planes` oppure `int burn = 0; //number of burned houses`. Fidati, e’ di gran lunga meglio chiamare quelle variabili `int planes_count` e `int burned_houses` piuttosto che abbreviare il nome e scrivere il commento accanto. I commenti servono fino ad un certo limite, il codice deve essere leggibile e chiaro senza commenti: nel mio caso, preferisco non abbreviare MAI le variabili, anche se lunghe (preferisco usare `index` piuttosto che `i` o `idx` in un `for`). (Provo a tenermi breve sull’argomento per non allungare la risposta, pero’ se hai domande a riguardo, saro’ felice di risponderti).

---

<div class="post-metadata">

**Author:** ![System64](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/s/9e8a1a/32.png) [@System64](https://forum.olinfo.it/u/System64)\
**Post date:** [23 Febbraio 2020, 7:10pm UTC](https://forum.olinfo.it/t/quando-carico-il-mio-programma-per-testarlo-non-funziona-mai/6071/3 "2020-02-23T19:10:46Z")

</div>

Ho usato i tuoi suggerimenti ma non cambia niente: 35 punti su Tantrum with Consequences e 0 su Late for Work. Grazie per i suggerimenti, io preferisco mettere le parentesi graffe così:

```
int main() {
    for(int index = 0; index < n; index++) {
        //example
    }
}
```

---

<div class="post-metadata">

**Author:** ![zJack1342](https://forum.olinfo.it/user_avatar/forum.olinfo.it/zjack1342/32/711_2.png) [@zJack1342](https://forum.olinfo.it/u/zJack1342)\
**Post date:** [23 Febbraio 2020, 7:18pm UTC](https://forum.olinfo.it/t/quando-carico-il-mio-programma-per-testarlo-non-funziona-mai/6071/4 "2020-02-23T19:18:18Z")

</div>

Salve, per late for work devi stampare sia le ore che i minuti per cui il tuo codice diventa:

```auto
#include <iostream>
#include <stdio.h>
#include <assert.h>

// constraints

   // input data
   int H0 = 0;
   int M0 = 0; 
   int H1 = 0;
int M1 = 0;
int HF = 0;
int MF = 0;

using namespace std;

int main() {

assert(4 == scanf("%d%d%d%d", &H0, &M0, &H1, &M1));

if(H0>H1) {
	HF = (24-H0) + H1;
	} else {
		HF = H1 - H0;
	}
	if(M0>M1) {
		MF = (60-M0) + M1;
		HF = HF - 1;
	} else {
		MF = M1 - M0;
	}
printf("%d %d\n", HF, MF); // print the result
return 0;
}

```

Mentre per raid devi trovare una soluzione più veloce di O(N \* P). Se clicchi sul id della sub puoi vedere l’esito della tua soluzione.
