1 import java.io.BufferedReader;
2 import java.io.IOException;
3 import java.nio.charset.StandardCharsets;
4 import java.nio.file.Files;
5 import java.nio.file.Paths;
6 import java.util.ArrayList;
7 import java.util.Scanner;
8 import java.util.Locale;
9
10
11 public class sebesseg {
12 public static void main(String args[]) throws IOException {
13 ArrayList<adat> ADATOK = new ArrayList<>();
14
15 try (BufferedReader FBE = Files.newBufferedReader(Paths.get("ut.txt"), StandardCharsets.UTF_8)) {
16
17
18 String sor;
19 sor = FBE.readLine();
20 int hossz = Integer.parseInt(sor);
21
22 while ((sor = FBE.readLine()) != null) {
23 sor = sor.trim();
24
25 if (!sor.isEmpty()) {
26 String[] mezok = sor.split("\\s+");
27 int tavolsag = Integer.parseInt(mezok[0]);
28 String info = mezok[1];
29 ADATOK.add(new adat(tavolsag, info));
30 }
31 }
32
33
34 System.out.println("2. feladat");
35 System.out.println("A telepulesek neve:");
36 for (adat Adat : ADATOK) {
37 if (Adat.info.length() > 3) {
38 System.out.println(Adat.info);
39 }
40 }
41
42
43 System.out.println("3. feladat");
44 Scanner scanner = new Scanner(System.in);
45 scanner.useLocale(Locale.US);
46 System.out.print("Adja meg a vizsgalt szakasz hosszat km-ben! ");
47 double km = scanner.nextDouble();
48 double meter = km * 1000;
49 int MINIMUM = 90;
50 boolean varosban = false;
51 String info;
52 int S = 0;
53 for (adat Adat : ADATOK) {
54 info = Adat.info;
55 if (Adat.tavolsag < meter) {
56 int SebessegTabla = csakszamok(info);
57 if (SebessegTabla > -1) S = SebessegTabla;
58 if (info.length() > 3) {
59 varosban = true;
60 S = 50;
61 }
62 if ("]".equals(Adat.info)) {
63 varosban = false;
64 S = 90;
65 }
66 if ("#".equals(Adat.info) || "%".equals(Adat.info)) {
67 S = varosban ? 50 : 90;
68 }
69 if (S < MINIMUM) MINIMUM = S;
70 }
71 }
72 System.out.printf("Az elso %.2f km-en %d km/h volt a legalacsonyabb megengedett sebesseg.%n", km, MINIMUM);
73
74
75 System.out.println("4. feladat");
76 int VarosonKeresztul = 0;
77 int start = 0;
78 int vege = 0;
79 for (adat Adat: ADATOK) {
80 if (Adat.info.length() > 3) {
81
82 start = Adat.tavolsag;
83
84 }
85 if ("]".equals(Adat.info)) {
86 vege = Adat.tavolsag;
87 VarosonKeresztul += (vege - start);
88 }
89 }
90 double Szazalek = ((double) VarosonKeresztul / (double) hossz) * 100;
91 System.out.printf("Az ut %.2f szazaleka vezet telepulesen belul.%n", Szazalek);
92
93
94 System.out.println("5. feladat");
95 System.out.print("Adja meg egy telepules nevet! ");
96 scanner = new Scanner(System.in);
97 String VAROS = scanner.nextLine();
98 int db = 0, VarosHossz = 0;
99 varosban = false;
100 for (adat Adat : ADATOK) {
101 info = Adat.info;
102 if (info.equals(VAROS)) {
103 start = Adat.tavolsag;
104 varosban = true;
105 }
106 if(csakszamok(info) > -1 && varosban) db++;
107 if(info.equals("]") && varosban) {
108 vege = Adat.tavolsag;
109 break;
110 }
111 }
112 VarosHossz = vege - start;
113 System.out.printf("A sebessegkorlatozo tablak szama: %d%n", db);
114 System.out.printf("Az ut hossza a telepulesen belul %d meter.%n", VarosHossz);
115
116
117 System.out.println("6. feladat");
118 ArrayList<varosInfo> VAROSOK = new ArrayList<>();
119 String LegkozelebbiVaros;
120 String varosnev = "";
121 for (adat Adat : ADATOK) {
122 info = Adat.info;
123 if(info.length() > 3) {
124 varosnev = info;
125 start = Adat.tavolsag;
126 }
127 if ("]".equals(info)) {
128 vege = Adat.tavolsag;
129 VAROSOK.add(new varosInfo(varosnev, start, vege));
130 }
131 }
132 int index = 0;
133 varosInfo varosInfok, ElozoVarosInfok, KovetkezoVarosInfok;
134 for (int i = 0; i < VAROSOK.size(); i++) {
135 varosInfok = VAROSOK.get(i);
136 if (VAROS.equals(varosInfok.varosNev)) {
137 index = i;
138 break;
139 }
140 }
141 if (index == 0) {
142
143 varosInfok = VAROSOK.get(index + 1);
144 LegkozelebbiVaros = varosInfok.varosNev;
145 }
146 else if(index == (VAROSOK.size() - 1)) {
147
148 varosInfok = VAROSOK.get(index - 1);
149 LegkozelebbiVaros = varosInfok.varosNev;
150 }
151 else {
152
153 varosInfok = VAROSOK.get(index);
154 ElozoVarosInfok = VAROSOK.get(index - 1);
155 KovetkezoVarosInfok = VAROSOK.get(index + 1);
156 int elozo = varosInfok.k - ElozoVarosInfok.v;
157 int kovetkezo = KovetkezoVarosInfok.k - varosInfok.v;
158 LegkozelebbiVaros = (elozo <= kovetkezo) ? ElozoVarosInfok.varosNev : KovetkezoVarosInfok.varosNev;
159 }
160 System.out.printf("A legkozelebbi telepules: %s%n", LegkozelebbiVaros);
161 }
162
163
164
165
166
167 }
168
169 static int csakszamok(String szoveg) {
170 try {
171 return Integer.parseInt(szoveg.trim());
172 } catch (NumberFormatException e) {
173 return -1;
174 }
175 }
176 }
177
178 class adat {
179 int tavolsag;
180 String info;
181
182 adat(int tavolsag, String info) {
183 this.tavolsag = tavolsag;
184 this.info = info;
185 }
186
187 public String toString() {
188 return tavolsag + " " + info;
189 }
190 }
191
192 class varosInfo {
193 String varosNev;
194 int k;
195 int v;
196
197 varosInfo(String varosNev, int k, int v) {
198 this.varosNev = varosNev;
199 this.k = k;
200 this.v = v;
201 }
202
203 public String toString() {
204 return varosNev + " " + k + " " + v;
205 }
206 }
207
208