jemartinsen81 Skrevet 8. september 2007 Skrevet 8. september 2007 (endret) Dette er en av de mange hjemmeøvelsene jeg arbeider med, og den eneste hvor jeg nå står bom fast. Dersom noen med gode matematiske kunnskaper kan gi meg et friskt perspektiv på dette vil jeg være veldig takknemlig, ettersom jeg ikke får fred før jeg finner ut hvor feilen ligger. Jeg er overbevist om at programmeringen skal fungere korrekt, men at det ligger en feil i utregningen et sted. Programmet skal ta utgangspunkt i en Romersk hær, trekke fra tapene den har tatt etter et angrep og legge til nye forsterkninger for neste angrep (mens den hele tiden deler opp i korrekte legioner, kohorter, osv). 200 soldiers = 1 centuria 3 centuria = 1 cohort 10 cohorts = 1 legion Jeg har prøvd å løse dette ved å gi hver type hærstyrke en verdi, og via dem utregnet hærens totale verdi etter angrepet, og deretter delt verdien inn i hærstyrkene som er igjen etter angrepet. Dette kan sammenlignes med å gjøre om dager, timer og minutter til sekunder, og deretter dele sekundene opp i dager, timer og minutter igjen. Problemet er altså at den siste utregningen kommer opp helt feil. import java.util.Scanner;public class RomanLegions { public static void main(String args[]) { Scanner input = new Scanner(System.in); System.out.printf("FORCES AVAILABLE FOR FIRST ASSAULT\n"); final int initialLegions = 4; System.out.printf("Number of initial legions: \t%d\n", initialLegions); final int initialCohorts = 7; System.out.printf("Number of initial cohorts: \t%d\n", initialCohorts); final int initialCenturia = 23; System.out.printf("Number of initial centuria: \t%d\n", initialCenturia); final int initialSoldiers = 158; System.out.printf("Number of initial soldiers: \t%d\n", initialSoldiers); final int firstArmyValue = initialSoldiers + (initialCenturia*6000) + (initialCohorts*30*6000) + (initialLegions*10*30*6000); // System.out.println(firstArmyValue); System.out.println(); System.out.println("CASUALTIES AFTER FIRST ASSAULT"); System.out.printf("Number of defeated legions: \t"); int initialLegionsDefeated = input.nextInt(); System.out.printf("Number of defeated cohorts: \t"); int initialCohortsDefeated = input.nextInt(); System.out.printf("Number of defeated centuria: \t"); int initialCenturiaDefeated = input.nextInt(); System.out.printf("Number of defeated soldiers: \t"); int initialSoldiersDefeated = input.nextInt(); System.out.println(); final int firstDefeatedArmyValue = initialSoldiersDefeated + (initialCenturiaDefeated*6000) + (initialCohortsDefeated*30*6000) + (initialLegionsDefeated*10*30*6000); System.out.print("Amount of reinforcements (soldiers) that have arrived from Rome: "); int firstReinforcements = input.nextInt(); System.out.println(); // System.out.println(firstDefeatedArmyValue); final int secondaryArmyValue = firstArmyValue - firstDefeatedArmyValue + firstReinforcements; final int solPerCen = 200; final int cenPerCoh = 3; final int cohPerLeg = 10; int secondarySoldiers = secondaryArmyValue; int secondaryCenturia = secondarySoldiers/solPerCen; int secondaryCohorts = secondaryCenturia/cenPerCoh; int secondaryLegions = initialCohorts/cohPerLeg; System.out.printf("FORCES AVAILABLE FOR SECOND ASSAULT\n"); System.out.printf("Number of regrouped legions: \t%d\n", secondaryLegions); System.out.printf("Number of regrouped cohorts: \t%d\n", secondaryCohorts%10); System.out.printf("Number of regrouped centuria: \t%d\n", secondaryCenturia%3); System.out.printf("Number of regrouped soldiers: \t%d\n", secondarySoldiers%200); } } Endret 8. september 2007 av jemartinsen81
HV Skrevet 9. september 2007 Skrevet 9. september 2007 System.out.printf("FORCES AVAILABLE FOR SECOND ASSAULT\n"); hmm, jeg tenker høyt: maxAntallSoldater = secondaryArmyValue legioner = maxAntallSoldater % (200*3*10) maxAntallSoldater = maxAntallSoldater / (200*3*10) cohorter = maxAntallSoldater % (200*3) maxAntallSoldater = maxAntallSodater / (200*3) centuria = maxAntallSoldater % 200 maxAntallSoldater = maxAntallSoldater /200 soldater = maxAntallSoldater
mar Skrevet 9. september 2007 Skrevet 9. september 2007 Nå er det tidlig på en søndagsmorgen, men jeg er temmelig sikker på at bruken av % blir litt feil her. maxAntallSoldater --> Dette er vel det totale antall soldater man har? antallCenturia = maxAntallSoldater / 200; antallCohort = antallCenturia / 3; antallLegion = antallCohort / 10; rest = maxAntallSoldater - (antallLegion *10*3*200);
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå