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!
