Nelle mie pagine invece l'oggetto Form, che ha un nome, in questo caso l'ho chiamato "f1" non è mai definito.
Il form "f1" è definito, ma non nel momento in cui cerchi di referenziarlo tu.
Nella logica a cascata degli elementi di una pagina HTML, il tuo codice javascript viene eseguito PRIMA che l'oggetto form "f1" sia referenziabile, perchè il codice si trova nell'HEAD.
Il codice javascript può interagire con il DOM solo dopo che la pagina è stata caricata.
In pratica tu stai raccogliendo il valore dei campi di input num1, num2 e num3 quando questi ancora non esistono.
Se vuoi che le variabili globali
a,
b,
c ed
array contengano i valori aggiornati dei campi di input, devi fare in modo che la lettura avvenga quando ti servono, ma soprattutto, quando esistono.
Per esempio, puoi farti una funzione tipo:
function LeggiValori()
{
window.a = f1.num1.value; //Prelevo gli input come stringhe
window.b = f1.num2.value;
window.c = f1.num3.value;
window.array = [];
array.push(a);
array.push(b);
array.push(c);
}
e chiamerai questa LeggiValori in cima a ogni tua funzione di calcolo, ad esempio:
function Dispari()
{
LeggiValori();
...
...
}