Javaban tanulok programozni, viszont nem ertem, hogy miert nem mukodik ez a megoldas. (? )
Feladat: Adott T tantárgyból versenyt rendeznek és meg kell keresni az első 5 helyezettet minden versenyből, melyet át kell tölteni egy másik tömbbe.
A legjobbat meg tudom határozni, de amikor kinulláznám azt az értéket, hogy a következő vizsgálatnál a legtöbb a 2. legyen, akkor valamiért nem működik.
package Szunet;
import extra.Console;
public class Harom305 {
public static void main (String[] args){
int t = Console.readInt("Hány tantárgy? ");
int[][] tanulo = new int[t][10];
int[] kirand = new int[t*5];
int max, index = 0, szamol = 0, a = 0;
//MÁTRIX FELTÖLTÉSE
for (int i = 0; i < t; i ++)
{
for (int j = 0; j < tanulo[i].length; j++)
{
tanulo[i][j] = (int)(Math.random()*101)+1;
System.out.print(tanulo[i][j]+" ");
}
System.out.println();
}
for (int i = 0; i < t; i ++)
{
max = tanulo[i][0];
a = 0;
do
{
for (int j = 0; j < tanulo[i].length; j++)
{
//MAXIMUM MEGHATÁROZÁSA
if (max < tanulo[i][j])
{
max = tanulo[i][j];
index = j;
}
}
//A MAXIMUM ÉRTÉK KINULLÁZÁSA
tanulo[i][index] = 0;
//AZ MAXIMUM HELYÉNEK FELTÖLTÉSE EGY ÚGY TÖMBBE
kirand[szamol] = index;
//'KIRAND' TÖMB LÉPTETÉSE
szamol++;
a++;
}
//5-SZÖR FUSSON VÉGIG
while (a < 5);
System.out.println();
}
//'KIRAND' TÖMB KIÍRATÁSA
for (int i = 0; i < kirand.length; i++)
{
System.out.print(kirand[i] + " ");
}
}
}
Az a baj hogy a
max = tanulo[i][0];
sornak a do-n belül kell lennie és nem kívül, mert anélkül az előző max értéke (amit kinulláztál, de a max változó ugye még tartalmazza) megmarad, és semmi sem lesz nála nagyobb.
És még ezután is baj lesz akkor ha a legelső szám a legnagyobb, mert akkor nem teljesül az if (max < tanulo[i][j]), és az index-et nem update-eled (mert az if-en belül van) Két lehetséges megoldás:
1. a do elejére beteszed hogy
index = 0;
2. if (max < tanulo[i][j]) helyett if (max <= tanulo[i][j])
A két megoldás különböző sorrendbe fogja tenni a döntetlen eredményt elérőeket, az 1. balról jobbra, a 2. jobbról balra.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!