Ciao a tutti, sono nuovo. Sto rispolverando le mie nozioni di programmazione e al contempo cercare di imparare Java (ai miei tempi a scuola si studiava ancora il Turbo Pascal, quindi per me Java è un mondo totalmente nuovo, così come la programmazione ad oggetti).
Come esercizio da fare mi sono auto-assegnato il compito di scrivere un programma che calcola la combinazione vincente del Totogol, ricevendo in input i gol delle 14 partite della schedina.
Per chi non lo sapesse, il calcolo della combinazione avviene in questo modo:
-fra le 14 partite si prendono, in rigoroso ordine decrescente, le 7 che hanno segnato il maggior numero di gol;
-a parità di numero di gol prevale quella in cui la squadra in trasferta ha segnato più gol;
-in caso di ulteriore parità prevale la partita in schedina col numero di posizione più basso.
Ad esempio queste sono le partite e i risultati dell'ultima schedina (fra parentesi la posizione nella combinazione vincente.. che quindi è
14 - 3 - 7 - 9 - 11 - 5 - 8):
1 Udinese - Napoli 1-2
2 Juventus - Pescara 3-0
3 Sampdoria - Sassuolo 3-2
(2°)
4 Atalanta - Roma 2-1
5 Bologna - Palermo 3-1
(6°)
6 Crotone - Torino 0-2
7 Empoli - Fiorentina 0-4
(3°)
8 Lazio - Genoa 3-1
(7°)
9 Milan - Inter 2-2
(4°)
10 Novara - Frosinone 1-2
11 Como - Cremonese 2-2
(5°)
12 Akragas - Messina 0-0
13 Cosenza - Monopoli 2-1
14 Juve Stabia - Lecce 2-3
(1°)
Ho quindi scritto un programma che, presi in input i numeri di gol di ogni squadra, mi dà la combinazione vincente. Però non capisco perché non funziona bene.. i 7 numeri della combinazione li ottengo giusti, ma la loro posizione è sbagliata! Qualcuno riesce a individuare l'errore? Questo è il codice:
import java.io.*;
import java.util.*;
public class Totogol {
public static void main(String[] args) {
final int numero_match = 14;
int i,j,temp,temp2,temp3,temp4;
int[] pos,golcasa,golfuori;
int[] totalegol;
golcasa=new int[numero_match];
golfuori=new int[numero_match];
totalegol=new int[numero_match];
pos=new int[numero_match];
Scanner leggi=new Scanner (System.in);
for (i=0;i<numero_match;i++) {pos[i]=i+1;
System.out.println("Inserisci numero di gol della squadra di casa del "+(i+1)+"° incontro: ");
golcasa[i]=leggi.nextInt();
System.out.println("Inserisci numero di gol della squadra in trasferta del "+(i+1)+"° incontro: ");
golfuori[i]=leggi.nextInt();
leggi.nextLine();
}
for (i=0;i<numero_match;i++) totalegol[i]=(golcasa[i]+golfuori[i]);
for (i=0;i<numero_match;i++) {for (j=i;j<numero_match-1;j++) {
if (totalegol[i]<totalegol[j+1]) {temp=totalegol[i]; temp2=pos[i]; temp3=golcasa[i];
temp4=golfuori[i]; pos[i]=pos[j+1]; golcasa[i]=golcasa[j+1]; golfuori[i]=golfuori[j+1];
totalegol[i]=totalegol[j+1]; pos[j+1]=temp2; golcasa[j+1]=temp3; golfuori[j+1]=temp4;
totalegol[j+1]=temp;}
else if ((totalegol[i]==totalegol[j+1]) && (golfuori[i]<golfuori[j+1])) {temp2=pos[i]; temp3=golcasa[i]; temp4=golfuori[i]; pos[i]=pos[j+1]; golcasa[i]=golcasa[j+1]; golfuori[i]=golfuori[j+1]; pos[j+1]=temp2; golcasa[j+1]=temp3; golfuori[j+1]=temp4;} //(CODICE NON FUNZIONANTE)
}
}
System.out.print ("La combinazione vincente è: ");
for (i=0;i<7;i++) System.out.print(pos[i]+" ");
}
}
In particolare, il codice che non mi funziona (o meglio funziona ma non come dovrebbe) è il secondo IF. Senza quel codice ottengo solo i 7 numeri della combinazione vincente senza che il programma effettui le opportune verifiche nel caso di parità di reti. Come mai non mi funziona? Grazie.
Andrea