Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím, třeba vám to přijde jednoduché ale s tímto si nevím rady mohl by ty programy prosím někdo napsat, ve škole nám učitel nic nevysvětlí, a pak po nás chce skoro zázraky. Z napsanýho programu většinou už něco pochopim. předem díky moc
1) načíst textový soubor a zjistit(vypsat do konzole) slova začínalící a končící stejným znakem
2) načíst, zpracovat a uložit textový soubor:
vstup (vstup.txt), (pouze čísla pod sebou):
52
30
823
156
výstup (výstup.txt),(formátování výstupu by mělo být prostě správně jako když se sčítá pod sebou):
52
30
823
156
----
1061
Offline
↑ septolet: já s tim skoro nehnu, ten s textem zvládnu našíst a vypsat si ty slova, vim že bych měla asi soubor načítat po pismenkách, pruběžně si někam ukladat a ověřit to ale já ten kod prostě nenapíšu a to za 2) mam ve stavu kdy to sice sčita ale mám pro mě zdánlivě neřešitelnej problém s tim naformátovanim
1) mam:
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Main { public static void main(String[] args) { try { BufferedReader r = new BufferedReader(new FileReader("soubor.txt")); String s; while ((s = r.readLine()) != null) System.out.println(s); r.close(); } catch (FileNotFoundException ex) { System.out.println("Soubor nenalezen"); } catch (IOException ex) { System.out.println("I/O chyba"); } } }
a ve 2)
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /** * * @author User */ public class druhyukol { /** * @param args the command line arguments */ public static void main(String[] args) { int d = 0; int c = 0; try { BufferedReader r = new BufferedReader(new FileReader("vstup.txt")); String s; while ((s = r.readLine()) != null) { int k = Integer.parseInt(s); if (k / 100 == 0) { System.out.println(String.format(" %d", k)); } else { System.out.println(String.format("%d", k)); } d = k + c; c = d; try { FileWriter f = new FileWriter("vystup.txt"); f.write(String.valueOf(k)); f.close(); } catch (IOException ex) { System.out.println("I/O chyba"); } } System.out.println("-----"); System.out.println(d); r.close(); } catch (FileNotFoundException ex) { System.out.println("Soubor nenalezen"); } catch (IOException ex) { System.out.println("I/O chyba"); } } }
Offline
Soubor by skutečně bylo vhodnější číst po písmenkách, minimálně je to nejjednodušší řešení. To lze v Jave udělat přes třídu FileReader. Konstruktoru této třídy předáš instanci třídy File. Takže takový malý příklad otevření souboru a vytvoření instance třídy FileReader by mohl vypadat takto:
File f1 = new File("a.txt"); if(!f1.exists()) { // pokud soubor neexistuje, tak by to chtělo nějak ošetřit, třeba ukončit program } FileReader r = new FileReader(f1);
No a nyní už jen stačí číst jednotlivé znaky pomocí funkce read(), což je funkce třídy FileReader, takže v našem konkrétním případě ji voláme jako r.read(). Funkce vrací přečtený znak ze souboru nebo -1 v případě, že jsme dosáhli konce souboru. No takže zkus tedy v cyklu číst zadaný soubor po jednotlivých znacích dokud nedosáhneš jeho konce a vždy u nového slova si zapamatuj jeho první písmenko, to poté porovnej s posledním písmenkem daného slova.
Snažím se záměrně nepsat kód, ale jen slovní vysvětlení, protože si myslím, že by bylo dobré, abys danou problematiku pochopila sama a když nakonec sama napíšeš kód, tak to, alespoň dle mého názoru, pochopíš lépe (minimálně v začátcích) než když si jen přečteš hotový kód.
K té druhé úloze. Nejprve by bylo dobré si zjistit nejdelší číslo v souboru a podle toho pak odsazovat všechna kratší čísla.
Offline
↑ septolet:já to prostě asi nechápu jestli ten soubor existuje mám přece ošetřený těma vyjímkama: try... catch, píšu to v NetBeansu furt to piše chyby, mám pocit že je to čim dál horši, neexistují třeba někde na netu nějaký vzorový programy u kterejch by bylo vypsáno co která část kodu dělá nebo něco podobnýho?
Offline