Hirdetés
- [K2]: Synology NAS és a felhő
- Brogyi: CTEK akkumulátor töltő és másolatai
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- eBay-es kütyük kis pénzért
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- gban: Ingyen kellene, de tegnapra
- weiss: Lakodalom van a mi utcánkban...
- droidic: Windows 11 önállóság nélküli világ: a kontroll új korszaka
-
LOGOUT

Ú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!
- Samsung Galaxy A56 5G / 8/256GB / Kártyafüggetlen / 12Hó Garancia / BONTATLAN
- Bomba ár! Dell Latitude E5450 - i5-5GEN I 4GB I 320GB I 14" HD I HDMI I Cam I W10 I Gari!
- GYÖNYÖRŰ iPhone 12 Pro Max 256GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS2927, 100% Akkumulátor
- AKCIÓ! Apple MacBook Pro 16 2024 M4 Max 48GB 1TB SSD macbook garanciával hibátlan működéssel
- AKCIÓS! Microsoft Surface Pro 9 i5-1245U 16GB 512GB Kijelzőrepedt!
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

++;

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