A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás listával dolgozik. Az utolsó feladatra két megoldást adtam. Talán a for ciklusos jutna többeknek eszébe, de ez do-while ciklussal tipikusan elegánsabb.
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_17maj_tesztverseny_v2; public class Versenyzo { private String kod; private String valaszok; private int pontszam; public Versenyzo( String[] tomb ) { kod = tomb[0]; valaszok = tomb[1]; } public String getKod() { return kod; } public String getValaszok() { return valaszok; } public int getPontszam() { return pontszam; } public void setPontszam(int pontszam) { this.pontszam = pontszam; } @Override public String toString() { return "Versenyzo{" + "kod=" + kod + ", valaszok=" + valaszok + ", pontszam=" + pontszam + '}'; } }
A feladat megoldásai:
/** * * @author https://webotlet.hu */ package webotlet_17maj_tesztverseny_v2; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Scanner; public class Webotlet_17maj_tesztverseny_v2 { public static void main(String[] args) { ArrayList<Versenyzo> versenyzok = new ArrayList<>(); String helyes = null; try { RandomAccessFile raf = new RandomAccessFile("valaszok.txt", "r"); String sor; helyes = raf.readLine(); for( sor = raf.readLine(); sor != null; sor = raf.readLine() ) { versenyzok.add(new Versenyzo(sor.split(" "))); } raf.close(); } catch( IOException e ) { System.out.println("HIBA"); } // for( int i = 0; i < versenyzok.length; i++ ) // { // System.out.println(versenyzok.get(i).toString()); // } System.out.println("2. feladat: A vetelkedon " + versenyzok.size() + " versenyzo indult.\n"); System.out.print("3. feladat: A versenyzo azonositoja = "); Scanner sc = new Scanner(System.in); String azon = sc.nextLine(); Versenyzo v = null; for( Versenyzo versenyzo : versenyzok) { if( versenyzo.getKod().equals(azon) ) { v = versenyzo; break; } } System.out.println(v.getValaszok() + " (a versenyzo valasza)\n"); System.out.println("4. feladat:"); System.out.println(helyes + " (helyes megoldas)"); for( int i = 0; i < helyes.length(); i++ ) { if( v.getValaszok().charAt(i) == helyes.charAt(i) ) { System.out.print("+"); } else { System.out.print(" "); } } System.out.println(" (a versenyzo helyes valaszai)\n"); System.out.print("5. feladat: A feladat sorszama = "); int szam = sc.nextInt() - 1; // a tombindex 1-gyel kisebb a sorszamtol int jo = 0; for( Versenyzo versenyzo : versenyzok) { if( versenyzo.getValaszok().charAt(szam) == helyes.charAt(szam) ) { jo++; } } double szazalek = (double)jo / versenyzok.size() * 100; System.out.println(String.format("A feladatra %d fo, a " + "versenyzok %.2f%%-a adott helyes valaszt.%n", versenyzok.size(), szazalek)); // 6. feladat int[] pontok = {3,3,3,3,3,4,4,4,4,4,5,5,5,6}; for( Versenyzo versenyzo : versenyzok) { int pontszam = 0; for( int j = 0; j < versenyzo.getValaszok().length(); j++ ) { if( versenyzo.getValaszok().charAt(j) == helyes.charAt(j) ) { pontszam += pontok[j]; } } versenyzo.setPontszam(pontszam); } try { RandomAccessFile ki = new RandomAccessFile("pontok.txt", "rw"); ki.setLength(0); for( Versenyzo versenyzo : versenyzok) { ki.writeBytes(versenyzo.getKod() + " " + versenyzo.getPontszam() + "\n"); } ki.close(); } catch( IOException e ) { System.out.println("HIBA"); } System.out.println("7. feladat: A verseny legjobbjai:"); for( int i = 0; i < versenyzok.size() - 1; i++ ) { for( int j = i + 1; j < versenyzok.size(); j++ ) { if( versenyzok.get(i).getPontszam() < versenyzok.get(j).getPontszam() ) { Versenyzo csere = versenyzok.get(i); versenyzok.set(i, versenyzok.get(j)); versenyzok.set(j, csere); } } } // 7. feladat egyik valtozat int helyezes = 1; System.out.println("1. dij (" + versenyzok.get(0).getPontszam() + " pont): " + versenyzok.get(0).getKod()); for( int i = 1; i < versenyzok.size(); i++ ) { if( versenyzok.get(i).getPontszam() != versenyzok.get(i - 1).getPontszam() ) { helyezes++; } if( helyezes <= 3 ) { System.out.println(helyezes + ". dij (" + versenyzok.get(i).getPontszam() + " pont): " + versenyzok.get(i).getKod()); } else { break; } } System.out.println(); // 7. feladat maskepp System.out.println("7. feladat maskepp:"); helyezes = 1; int i = 0; do { System.out.println(helyezes + ". dij (" + versenyzok.get(i).getPontszam() + " pont): " + versenyzok.get(i).getKod()); i++; if( versenyzok.get(i).getPontszam() != versenyzok.get(i - 1).getPontszam() ) { helyezes++; } } while( helyezes != 4); } }
Ha hibát találsz benne, kérlek jelezd!