Pereiti prie turinio

...žodžiai, kuriuose balsių skaičius vienodas


Rekomenduojami pranešimai

Turiu užduotį, kuri skamba taip:

(Iš nuskaityto failo) Į vieną grupę rašomi žodžiai, kuriuose balsių skaičius vienodas (pvz., roma ir stalas yra vienoje grupėje).

 

Kol kas esu parašęs tiek, kad nuskaito failą ir išrenka žodžius po vieną. Ima juos po vieną ir skaičiuoja kiek jame yra balsių. Tada turiu skaičius kiek kokia balsė pasikartoja kartų žodyje. Kaip padaryti tikrinimą, kad visų balsių, esančių tame žodyje, kiekis sutaptų?

Nuoroda į pranešimą
Dalintis kituose puslapiuose
package kolekcijos;

/* Į vieną grupę rašomi žodžiai, kuriuose balsių
skaičius vienodas (pvz., roma ir stalas yra
vienoje grupėje). */

import java.io.*;
import java.util.*;

public class Kolekcijos {
   public static void main(String[] args){
       ArrayList<Character> balses = new ArrayList<Character>();
       String filtras = new String("aeiouy");
       String BR = System.getProperty("line.separator");
       char[] balsiuMas = filtras.toCharArray();
       for(int i = 0; i<balsiuMas.length; i++){
           balses.add(balsiuMas[i]);
       }

       try{
           Scanner scan = new Scanner(new File("C:\\Users\\Edve\\Desktop\\java\\NETBEANS\\kolekcijos\\src\\kolekcijos\\zod.txt"));
           BufferedWriter out = new BufferedWriter(new FileWriter("C:\\Users\\Edve\\Desktop\\java\\NETBEANS\\kolekcijos\\src\\kolekcijos\\rez.txt"));
           while(scan.hasNext()){
               String currentWord = new String(scan.next());
               char[] word = currentWord.toCharArray();
               int a=0, e=0, i=0, o=0, u=0, y=0, kiekis=0;
               char[] pagalbinis = null;
               for(int j = 0; j < word.length; j++) {
                   if(balses.contains(word[j])) {
                       switch (word[j]) {
                           case 'a': a++; break;
                           case 'e': e++; break;
                           case 'i': i++; break;
                           case 'o': o++; break;
                           case 'u': u++; break;
                           case 'y': y++; break;
                           default: break;
                       }
                   }
               }


           }
 //          out.close();
       }
       catch (IOException e){
           System.err.println("Klaida " + e);
       }
       finally {
           System.out.println("Baigta");
       }
   }
}

Redagavo Syllex
Nuoroda į pranešimą
Dalintis kituose puslapiuose

kodui įterpti naudok tagus code

 

kodėl tu skaičiuoji kiekvieną balsę atskirai, jeigu tau nesvarbu, kokia balsė, svarbiausia, kad toks pats balsių skaičius eitų į tą pačią grupę?

 

 

aš problemą spręsčiau taip: deklaruočiau ArrayList<Set<String> > grupės = new ArrayList<Set<String> >();

 

turėtume struktūrą grupės, kur įrašo numeris būtų balsių skaičius, o Set'e saugotume žodžius.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nesu su Java daug susidūręs, bet struktūrą galima pasidaryt maždaug tokią: associative array (berods Javoje tai vadinasi Map?), kurio raktas yra balsių skaičius (1,2,3 ir t.t.), o value - ArrayList (ar kitas panašus array) su žodžiais, kurie turi tiek balsių :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

kodui įterpti naudok tagus code

 

kodėl tu skaičiuoji kiekvieną balsę atskirai, jeigu tau nesvarbu, kokia balsė, svarbiausia, kad toks pats balsių skaičius eitų į tą pačią grupę?

 

 

aš problemą spręsčiau taip: deklaruočiau ArrayList<Set<String> > grupės = new ArrayList<Set<String> >();

 

turėtume struktūrą grupės, kur įrašo numeris būtų balsių skaičius, o Set'e saugotume žodžius.

 

 

Galėtum truputi smulkiau apie ArrayList<Set<String>> struktūrą, nelabai suprantu kokiu principu ji turėtų veikti.

Set<String> saugotų žodžius, teisingai? O tada ArrayList<Set<String>> jau saugotų ką? Visus žodžius, kuriuose būtų vienodas bendras balsių skaičius?

 

Nesu su Java daug susidūręs, bet struktūrą galima pasidaryt maždaug tokią: associative array (berods Javoje tai vadinasi Map?), kurio raktas yra balsių skaičius (1,2,3 ir t.t.), o value - ArrayList (ar kitas panašus array) su žodžiais, kurie turi tiek balsių :)

 

Aš dabar susimasčiau dėl užduoties apibrėžimo... Ar vienoje grupėje turi būti visi žodžiai, kurie turėtų vienodą balsių skaičių (bendras balsių skaičius būtų vienodas) ar kad kiekviename žodyje būtų vienodas balsių skaičius (t.y. jeigu yra 3 balsės, tai kad būtų pvz.: 3 vienodos arba trys skirtingos, bet esmė kad po 1 kiekvienos balsės).

 

Nes tuojau pradėsiu galvoti, kad per sudėtingai mąsčiau :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš dabar susimasčiau dėl užduoties apibrėžimo... Ar vienoje grupėje turi būti visi žodžiai, kurie turėtų vienodą balsių skaičių (bendras balsių skaičius būtų vienodas) ar kad kiekviename žodyje būtų vienodas balsių skaičius (t.y. jeigu yra 3 balsės, tai kad būtų pvz.: 3 vienodos arba trys skirtingos, bet esmė kad po 1 kiekvienos balsės).

 

Nes tuojau pradėsiu galvoti, kad per sudėtingai mąsčiau :D

Manau skaitosi ir pasikartojančios balsės, kadangi pasakyta, kad „roma“ ir „stalas“ bus vienoje grupėje (abu turi po dvi balses).

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Galėtum truputi smulkiau apie ArrayList<Set<String>> struktūrą, nelabai suprantu kokiu principu ji turėtų veikti.

Set<String> saugotų žodžius, teisingai? O tada ArrayList<Set<String>> jau saugotų ką? Visus žodžius, kuriuose būtų vienodas bendras balsių skaičius?

 

 

 

Aš dabar susimasčiau dėl užduoties apibrėžimo... Ar vienoje grupėje turi būti visi žodžiai, kurie turėtų vienodą balsių skaičių (bendras balsių skaičius būtų vienodas) ar kad kiekviename žodyje būtų vienodas balsių skaičius (t.y. jeigu yra 3 balsės, tai kad būtų pvz.: 3 vienodos arba trys skirtingos, bet esmė kad po 1 kiekvienos balsės).

 

Nes tuojau pradėsiu galvoti, kad per sudėtingai mąsčiau :D

 

Struktūra labai paprasta. Dabar neatsimenu, kaip javoj su sintakse yra, bet turėtų būti taip, kad Kiekvienas ArrayList'o įrašas saugo Setą žodžių, kuriuose yra tas pats skaičius balsių

 

taigi grupės.getAt(1) gražina setą, kuriame yra visi žodžiai su 1 balse, grupės.getAt(2) gražina setą su žodžiais kuriuose yra 2 balsės ir t.t.

 

o paskui reikia iteratoriaus per setą, kad išgauti žodžius. arba galima vietoj seto arraylist naudoti. tada nereikės iteratoriaus.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...