Kezdőoldal » Számítástechnika » Programozás » Elakadtam a 2015-ös emelt...

Elakadtam a 2015-ös emelt szintű infó érettségi programozási feladatával. Hogy oldanátok meg?

Figyelt kérdés

link: [link]


Sajnos már problémám volt az első faladattal is. Méghozzá az, hogy nem jöttem még rá, hogy hogyan kéne a sorokat hatékonyan számolni. BufferedReaderrel olvastam be a szöveget. Azt még nem sikerült elérnem, hogy kiválasszam az első illetve az utolsó elötti sort és abból kiválasszam a megfelelő számot.


Feltöltöttem a próbálkozásom:

pastebin(PONT)com/tyjsMVJc


2015. dec. 17. 19:07
1 2
 1/13 anonim ***** válasza:
A feladatban, amit linkeltél, kép- és szövegszerkesztési feladatok vannak, nem programozás.
2015. dec. 17. 19:13
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
Akkor nézd meg újra.(utolsó feladat)
2015. dec. 17. 19:16
 3/13 anonim ***** válasza:
azt ajánlom, hogy először olvasd be az összes szót egy arraylistbe és így könyebb lesz az elsőt-utolsót meghatározni meg majd a többi feladat is egyszerübben megoldható lesz
2015. dec. 17. 19:26
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:
Nem inkább karakterenként kéne?
2015. dec. 17. 19:27
 5/13 SimkoL ***** válasza:
Régebben megírtam Pascal-ban [link] érdekességképpen. Esetleg adhat támpontot, ha nem akkor bocs, nem is szóltam mivel látom, hogy Java-ban készül a tied.
2015. dec. 17. 20:06
Hasznos számodra ez a válasz?
 6/13 A kérdező kommentje:
Hát, eléggé más a szintaktika. Azért köszönöm.
2015. dec. 17. 20:41
 7/13 |Orfeusz| ***** válasza:

Tedd az identifikációs sorokat egy tömbbe, az üzeneteket egy másikba. (Szótár még jobb lenne, Javában nem tudom, hogy működik).

Keresésnél egyszerűen keress rá a "%nap% %amatőr%" stringre az identifikációs tömbben. (nincs ilyen -> hibaüzenet) Az indexének megfelelő stringet másold ki az üzenetek közül (ugyan az az indexe az összetartozó adatoknak). Így már csak a megfigyelt egyedeket kell kiolvasnod.

A sor első szóközig terjedő részét veszed. Ennek a perjel előtt lévő része szám-e?. A perjel utáni része szám-e? Ha igen-igen, írd ki.

2015. dec. 17. 21:06
Hasznos számodra ez a válasz?
 8/13 A kérdező kommentje:
Köszönöm, megpróbálom.
2015. dec. 17. 21:31
 9/13 anonim ***** válasza:

Ha már adott egy OOP-t ismerő nyelv, szerintem használjuk ki:

class Vetel {

private int nap;

private int amator;

private int felnottfarkasok;

private int kolyokfarkasok;

private String uzenet;

//konstruktort és getter-t nekik

//esetleg még egy:

//public static Vetel parseInput(String line1, String line2) throws IllegalArgumentException {*}

}


*:

1) line1.split szóköz mentén, majd a kapott tömb két elemét int-té alakítod

2) line2.split szóköz mentén, az első elemét split / mentén...

3) ha valami nem stimmelne, throw IllegalArgumentException


Innentől csinálhatsz olyat, hogy:

List<Vetel> adatok = new LinkedList<>();


Innentől az első feladat nagyjából ennyi:

try (Scanner sc = new Scanner(new FileInputStream("veetel.txt")) {

..while (sc.hasNextLine() {

.. ..String line1 = sc.nextLine();

.. ..String line2 = sc.nextLine();

.. ..adatok.add(Vetel.parseInput(line1, line2));

..}

}

catch (IOException | IllegalArgumentException e) {

..System.err.println("Hiba történt beolvasás közben");

}


A második feladat pedig:

Vetel elso = adatok.get(0);

Vetel utolso = adatok.get(0);

for (int i = 1; i < adatok.size(); i++) {

.. Vetel current = adatok.get(i);

.. if (current.getNap() < elso.getNap()) elso = current;

.. if (current.getNap() > utolso.getNap()) utolso = current;

}

System.out.println(String.format("Első: %d\nUtolsó: %d", elso.getAmator(), utolso.getAmator()));


És így tovább...

2015. dec. 18. 01:46
Hasznos számodra ez a válasz?
 10/13 anonim ***** válasza:

Tök jó lenne, ha máskor a nyelvet is ideírnád. Nekem lassú gépem van, és fölöslegesen nem szórakozom vele, hogy csak ezért megnyissak másik fülön egy ilyen pastebint, amit még félig kézzel is kell beírni. AZ utolsó válaszból úgy látom, Java lehet. Nem hasznosak azok a válaszok, amelyek a teljes adatmennyiség beolvasásával kezdik, mert a feladat kifejezetten azt kéri, hogy lemezről soronként olvasva dolgozzuk fel az adatokat. Ez egy ilyen feladat, érdemes elolvasni.

Feltételezem azt is, hogy első feladatnak a harmadik feladatot nevezed, mert az elsőnél még nincs file.


Ha teljesen elakadtál, akkor érdemes megnézni a megoldásokat is, ott C# nyelven oldották meg, és az is a tanulásnak egy érdekes módja, hogy megértesz egy C# programot kód alapján, és átírod Javába. A hu.sulipython.wikia.com oldalon pedig találsz Python nyelvű megoldást, azzal is megteheted ugyanezt.


Ha figyelmesen elolvasod a feladatokat, akkor rá fogsz jönni, hogy érdemes a 3-4-5-6. feladatot egyben megoldani, és mindegyik a programozási tételek ismeretét kéri számon. Valószínűleg azért, mert a készítők szeretnék tudni, hogy el tud-e szakadni a vizsgázó a modern programnyelvek egyszavas metódusaitól, és tudja-e alkalmazni a tételeket. Ezek mind azon alapulnak, hogy kezdőértéket adsz egy változónak, aztán csinálsz egy ciklust, és a végén nézed a változók értékét.


A beolvasást soronként végezd, ne karakterenként, mivel akkor összezavarják a sorvégjelek. Programnyelvenként változó módon tudod eltüntetni a sorvégjelet, pl. valami strip vagy trim függvénnyel, de én ebben a feladatban egyszerűen vettem minden sor 1. karakterét, és azzal dolgoztam.


A 3. és a 4. feladat a legközönségesebb megszámlálási tétel, tehát lenullázol két változót, az egyiehez minden sor beolvasásakor egyet adsz, a másikhoz csak akkor, ha fej volt, és máris kész van két feladatod egyben.

2015. dec. 20. 09:08
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!