-
Fototrend

Új hozzászólás Aktív témák
-
focker
csendes tag
Hali!
Java-s segítség kellene.
Van egy n*n-es int tömb, amiben távolságok vannak tárolva (1-100ig).
Ebben kellene megkeresni legközelebbi pontokat úhy, hogy megkeressük a két legközelebbit, legyen ez a,b ezeket eltároljuk egy tömbben (ezek távolságát mondjuk 10000-re állítjuk). Majd ezekhez a pontokhoz keresünk egy legközelebbit, tehát a-hoz legközelebbi, b-hez legközelebbi, és ezek közül azt vesszük hozzá, amelyiknek kisebb az értéke. Ezután a,b,c-hez keressük a legközelebbit, ugyanilyen módon, és mindezt addig, amíg mind az n pont nincs a megoldás tömbben. -
focker
csendes tag
BufferedReader Train = new BufferedReader(new FileReader(''be''));
BufferedReader Test = new BufferedReader(new FileReader(''be2''));
BufferedWriter Eredmeny = new BufferedWriter(new FileWriter(''ki''));
int c=0;
double p1,p2;
ArrayList al1 = new ArrayList();
ArrayList al2 = new ArrayList();
while (true) {
c=Train.read();
if (c==-1) break;
if (c==(char)'1') {
String s = new String();
while (true){
c=Train.read();
if (c==-1||c==(char)'>') break;
if (c==13||c==10) continue;
s+=(char)c;
}
al1.add(s);
}
if (c==(char)'2'){
String s = new String();
while (true){
c=Train.read();
if (c==-1||c==(char)'>') break;
if (c==13||c==10) continue;
s+=(char)c;
}
al2.add(s);
}
} //beolvasás vége
Test.close();
while (true){
c=Test.read();
if (c==-1) break;
String s = new String();
while (true){
c=Test.read();
if (c==-1||c==(char)'>') break;
if (c==13||c==10) continue;
s+=(char)c;
}
}
kb. egy hónapja már írtam hasonlót, most kicsit változott a kód, de a kérdés ugyanaz: hogy lehetne átírni a beolvasást, h ugyanezt csinálja, de ne ilyen kacifántosan. -
focker
csendes tag
Most már csak egy a gond, ugyanezt megcsinálom egy tesztre is, így
while (in.available() !=0) {
String input = in.readLine();
if (input.equals('''')) continue;
else if (input.equals(''>'')){
teszt=0;
darab++;
}
else {
for (int i=0;i<input.length();i++)
betukteszt[teszt][input.charAt(i)-'A'
++;
}
for(int i=0; i<26; i++){
atlagteszt=betuk[0]/darab;
}
for (int i=0;i<26;i++){
if (atlagteszt==0) continue;
if (atlag1!=0)
T1db_1*=(atlag1<atlagteszt)?atlag1/atlagteszt:atlagteszt/atlag1;
if (atlag2!=0)
T2db_1*=(atlag2<atlagteszt)?atlag2/atlagteszt:atlagteszt/atlag2;
}
atlagteszt = new int[26];
Eredmeny.write((T1db_1>T2db_1)?''1'':''2'');
Eredmeny.newLine();
Eredmeny.flush();
és az Eredmeny file-ba kb. 7x annyi 1-es vagy 2-es kerül. Miért szalad ennyivel túl? -
focker
csendes tag
válasz
gabesz82
#2237
üzenetére
Hát igen, én mindig megszívom az ilyeneket

while (true){
c=br.read();
if (c==-1) break;
//1-es osztályláncok feldolgozása
if (c==(char)'1'){
int n=0;
n1++;
while (true){
c=br.read();
if (c==-1||c==(char)'>') break;
if (c==13||c==10) continue;
betuszamlalo(bszam,(char)c);
}
bszam=new int[26];
}
//2-es osztályláncok feldolgozása
...
}
Ezt hogy lehetne máshogy megcsinálni, hogy egyáltalán ne hasonlítson erre, és mégis ugyanezt csinálja? -
focker
csendes tag
Na igen, kissé kacifántos voltam. Láttam a hasonló kérdést, a feladat ugyanaz egyébként, csak választ nem kapott az illető. Nekem csak annyi kellene, hogy a fájlból beolvassa az összes ilyen
>2
ABCGDJGIT...
szekvenciát, és megszámolja, hogy az 1-es és 2-es külön-külön hány darab A betűt, hány darab B betűt..., tartalmaz. Tehát mondjuk egy szekvencia1[] tömbbe tároljuk 0-25 indexig, hogy az egyes betűkből mennyi fordul elő az összes 1-es szekvenciában (ugyanígy szekvencia2[]). Utána ezekkel a tömbökkel kellene dolgozni, ami már menne, csak a beolvasás nem
Az a baj,h már csak konkrét kód tud rajtam segíteni, mert szorít az idő. -
focker
csendes tag
Lenne egy olyan kérdésem, hogy van egy ilyen tartalmú textfile:
>2
MYEEEIKKIALLNAYQHNGKAE
>1
MEVERIALKYALINAIEHGG
>1
MLRETIYKYALQNA
>2
MIKTRFAPSPTGYLHVGG
Erre kellene egy olyan java kód, ami megszámolja, hogy az 1-es és 2-es sorozatban melyik beűből hány van (az 1-es és 2-es sorozatokból tetszőleges mennyiségű lehet). Tehát pl. 1-es: A-5 B-0 C-0..., ugyanígy a 2-esre A-4...
Addig ok, hogy
BufferedReader br = new BufferedReader(new FileReader(''file''));
és mondjuk egy
public static void betuszamlalo(int[] betu,char C) {
switch (C) {
case (char)'A': betu[0]++; break;
....
}
amit meghívunk, amikor a karakterekhez érünk a beolvasáskor.
Karakterenként olvasom be a file tartalmát, tehát először '>', aztán a szám, hogy hanyas sorozathoz tartozik, és ahhoz a sorozathoz elkezdi számolni a cuccot, aztán jön a következő sorozat, ami ha ugyanolyan sorszámú, akkor az eddigiekhez adódik hozzá a számlálás, ha pedig másik sorszámú, akkor ahhoz.
Tudom kicsit kacifántos a negfogalmazás, de már eléggé fáradt vok
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Revolut
- Samsung kuponkunyeráló
- Milyen notebookot vegyek?
- HiFi műszaki szemmel - sztereó hangrendszerek
- Fejhallgató erősítő és DAC topik
- Elektromos rásegítésű kerékpárok
- Racoon City árnyékában: Teszteltük a Resident Evil Requiemet
- Meghozta a régóta várt asztali Ryzen APU-kat az AMD
- Cyberpunk 2077
- Gumi és felni topik
- További aktív témák...
- BESZÁMÍTÁS! Asus H310M i7 9700F 16GB DDR4 512GB SSD STRIX RTX 2070 Super 8GB Corsair Crystal 550W
- HIBÁTLAN iPhone 15 Pro 128GB Black Titanium-1 ÉV GARANCIA - Kártyafüggetlen, MS4653
- Samsung Galaxy Tab S6 lite 64GB,Átlagos,Adatkabel,12 hónap garanciával
- Dell Latitude 5300 13,3" FHD IPS touch, i5 - i7 8665U, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- AKCIÓ!!! Sosemhasznált! HP OmniBook 5 i7-1355U 16GB 1TB 16" FHD+ Gar.: 1 év
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

++;

Az a baj,h már csak konkrét kód tud rajtam segíteni, mert szorít az idő.