Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
ffprog:ffprogjava2016:inputoutput [2016/09/09 10:59] Ivo Blöchliger |
ffprog:ffprogjava2016:inputoutput [2016/09/09 20:50] Ivo Blöchliger [SOI - Aufgaben] |
||
---|---|---|---|
Line 70: | Line 70: | ||
int x; | int x; | ||
int y; | int y; | ||
+ | Path datei = Paths.get(" | ||
// Datei öffnen und in einen Scanner einbinden | // Datei öffnen und in einen Scanner einbinden | ||
// Scanner und Datei werden am Ende vom try-Block automatisch geschlossen. | // Scanner und Datei werden am Ende vom try-Block automatisch geschlossen. | ||
Line 78: | Line 79: | ||
System.out.format(" | System.out.format(" | ||
</ | </ | ||
+ | |||
+ | ===== Aufgaben ===== | ||
+ | ==== Addition ==== | ||
+ | Gegeben ist eine Text-Datei mit einer positiven natürlichen Zahl pro Zeile. | ||
+ | Die erste Zahl gibt an, wie viele Serien in der Datei gespeichert sind. | ||
+ | Für jede Serie gibt die erste Zahl an, wie viele Zahlen gespeichert sind. | ||
+ | |||
+ | Die Ausgabe (auf die Konsole) ist ebenfalls eine Zahl pro Zeile, die der Summe aller Zahlen einer Serie entspricht. | ||
+ | Beispiel: (2 Serien, die erste mit 3 Zahlen (1,2,3), die zweite mit 2 Zahlen (1,2)): | ||
+ | <code text> | ||
+ | 2 | ||
+ | 3 | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 | ||
+ | 2 | ||
+ | 1 | ||
+ | 2 | ||
+ | </ | ||
+ | Das korrekte Resultat in diesem Fall wäre: | ||
+ | <code text> | ||
+ | 6 | ||
+ | 3 | ||
+ | </ | ||
+ | Beispieldateien: | ||
+ | * Input: {{ : | ||
+ | * Input: {{ : | ||
+ | |||
+ | ==== SOI - Aufgaben ==== | ||
+ | === CableCar === | ||
+ | Aufgabentext: | ||
+ | |||
+ | * Cable-Car Instanzen und Lösungen. Aufgabe 1 {{ : | ||
+ | * Cable-Car Aufgabe 2: {{ : | ||
+ | |||
+ | == Lösungsvorschlag Cablecar Aufgaben 1 und 2 == | ||
+ | <hidden Anzeigen> | ||
+ | <code java> | ||
+ | Path datei = Paths.get(" | ||
+ | // Speicher für die Ausgabe | ||
+ | ArrayList< | ||
+ | try (Scanner scanner = new Scanner(Files.newInputStream(datei))) { | ||
+ | int n = scanner.nextInt(); | ||
+ | for (int i=0; i<n; i++) { | ||
+ | int m = scanner.nextInt(); | ||
+ | boolean ok = true; | ||
+ | int a = scanner.nextInt(); | ||
+ | int b = scanner.nextInt(); | ||
+ | int d = b-a; // Differenz zwischen Masten 0 und 1 | ||
+ | for (int j=2; j<m; j++) { | ||
+ | int c = scanner.nextInt(); | ||
+ | if (c-b!=d) { // Mit letztem Masten vergleichen | ||
+ | ok = false; | ||
+ | } | ||
+ | b = c; // Aktueller Mast wird letzter Mast | ||
+ | } | ||
+ | lines.add(String.format(" | ||
+ | } | ||
+ | } | ||
+ | // Einzeiler, das eine Liste von Strings in eine Datei schreibt. | ||
+ | Files.write(Paths.get(" | ||
+ | </ | ||
+ | </ |