package e2006februar; import java.io.BufferedReader; // Az idegen megoldás miatt kell import java.io.InputStreamReader; // Az idegen megoldás miatt kell import java.io.IOException; import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Scanner; public class E2006februar { public static void main(String[] args) throws IOException { // 1. feladat System.out.println("1. feladat"); Scanner sc = new Scanner(System.in); System.out.println("Adjon meg egy telefonszámot!"); String telefonszam = sc.nextLine(); if (telefonszam.startsWith("39") || telefonszam.startsWith("41") || telefonszam.startsWith("71")) { System.out.println("A megadott telefonszám mobil."); } else { System.out.println("A megadott telefonszám nem mobil."); } System.out.println("-------------------\n"); // 2. feladat System.out.println("2. feladat"); /* Én úgy számolom a percekez, hogy ha pl. 12:00:17-kor kezdődőtt a telefonálás és 12:01:18-kor fejeződött be, akkor az már 2 percnek számít a szolgáltatónál.*/ int ko, kp, kmp, vo, vp, vmp; System.out.println("Adja meg egy telefonbeszélgetés kezdetét óó:pp:mm formátumban!"); String kezdet = sc.nextLine(); ko = Integer.parseInt(kezdet.substring(0, 2)); kp = Integer.parseInt(kezdet.substring(3, 5)); kmp = Integer.parseInt(kezdet.substring(6, 8)); System.out.println("Adja meg egy telefonbeszélgetés végét óó:pp:mm formátumban!"); String veg = sc.nextLine(); vo = Integer.parseInt(veg.substring(0, 2)); vp = Integer.parseInt(veg.substring(3, 5)); vmp = Integer.parseInt(veg.substring(6, 8)); int elteltIdo = 3600 * (vo - ko) + 60 * (vp - kp) + (vmp - kmp); System.out.println("Az eltel idő másodpercben: " + elteltIdo); if (elteltIdo % 60 != 0) { elteltIdo = elteltIdo / 60 + 1; } else { elteltIdo /= 60; } System.out.println("A számlázás szempontjából a fenti beszélgetés " + elteltIdo + " percnek felel meg."); System.out.println("-------------------\n"); // 3. feladat System.out.println("3. feladat"); Scanner scFajl = new Scanner(new FileReader("hivasok.txt")); String[] tString; ArrayList<Integer> percek = new ArrayList(); ArrayList<String> telSzamok = new ArrayList(); /* Ez a 4. feladathoz kell majd, mikor a csúcsidős beszélgetések számát kell majd meghatározni. Azert ArrayList, mert nem tudjuk, hogy hány beszélgeteés van. */ ArrayList<Integer> kezdetOra = new ArrayList(); /* Ez az 5. feladathoz kell majd. */ ArrayList<Boolean> fajta = new ArrayList(); while (scFajl.hasNext()) { // A percek sorai String sor = scFajl.nextLine(); // Beolvasunk egy sort. tString = sor.split(" "); // Szóköz mentén darabolunk. kezdetOra.add(Integer.parseInt(tString[0])); int beszelgetesIdeje = 0; /* Ha a hívás kezdetének másodperce nagyobb, mint a hívás befejezésének másodperce, akkor a percek különbségéhez még 1-et hozzá kell adni. Egyébként csak a percek különbségét kell venni. */ if (Integer.parseInt(tString[2]) >= Integer.parseInt(tString[5])) { beszelgetesIdeje = Integer.parseInt(tString[4]) - Integer.parseInt(tString[1]); } else { beszelgetesIdeje = Integer.parseInt(tString[4]) - Integer.parseInt(tString[1]) + 1; } /* Még az órák helyzetével is foglalkozni kell! Ha átlépünk (legalább) egy órát, akkor még azok perceit is hozzá kell adni a belszélgetés idejéhez. */ if (Integer.parseInt(tString[0]) < Integer.parseInt(tString[3])) { beszelgetesIdeje += (60 * (Integer.parseInt(tString[3]) - Integer.parseInt(tString[0]))); } percek.add(beszelgetesIdeje); // A telefonszamok sorai telSzamok.add(scFajl.nextLine()); } // A percek és a telefonszámok kiírása a percek.txt fájlba FileWriter fw = new FileWriter("percek.txt"); PrintWriter pw = new PrintWriter(fw); for (int i = 0; i < percek.size(); i++) { pw.print(percek.get(i) + " " + telSzamok.get(i) + "\n"); } pw.close(); fw.close(); System.out.println("Az adatok kiírva a \"percek.txt\" fájlba."); System.out.println("------------------\n"); // 4. feladat System.out.println("4. feladat"); int csucsidoben=0, csucsidonKivul=0; for (int i : kezdetOra) { if (7<=i && i<18) { csucsidoben++; }else{ csucsidonKivul++; } } System.out.println(csucsidoben + " beszélgetés volt csúcsidőben és " + csucsidonKivul + " beszélgetés volt csúcsidőn kívül."); System.out.println("-------------------\n"); // 5. feladat System.out.println("5. feladat"); int percMobil=0, percVezetekes=0; for (int i=0; i< telSzamok.size(); i++) { if ( telSzamok.get(i).startsWith("39") || telSzamok.get(i).startsWith("41") || telSzamok.get(i).startsWith("71") ){ percMobil += percek.get(i); fajta.add(Boolean.TRUE); }else{ percVezetekes += percek.get(i); fajta.add(Boolean.FALSE); } } System.out.println("Mobillal folytatott beszélgetések " + percMobil + " perc."); System.out.println("Vezetékessel folytatott beszélgetések " + percVezetekes + " perc."); System.out.println("-------------------\n"); // 6. feladat System.out.println("6. feladat"); final int V = 30; final float M = 69.175f; float fizetendoVezetekes = 0; int fizetendoMobil = 0; for (int i=0; i<fajta.size(); i++) { // igaz = mobil if(fajta.get(i)){ if(7<=kezdetOra.get(i) && kezdetOra.get(i)<18){ fizetendoMobil += M * percek.get(i); } }else{ if(7<=kezdetOra.get(i) && kezdetOra.get(i)<18){ fizetendoVezetekes += V * percek.get(i); } } } System.out.println("Csúcsidőben való beszélgetésésrt fizetendő " + (fizetendoMobil + fizetendoVezetekes) + " Ft."); System.out.println("-------------------\n"); } } /* IDEGEN MEGOLDÁS az internetről: (Bocsi, de már nem tudom, hogy honnan van pontosan!) */ ////1. feladat // System.out.println("Az 1. feladat megoldása"); // System.out.println("Egy billentyűzetről bekért telefonszám jellegének meghatározása \n"); // System.out.println("Kérem a telefonszámot!"); // String telefonSzam = telefonSzamBeolvasas(); // String jelleg = jellegMeghat(telefonSzam); // System.out.println("A megadott telefonszám: " + jelleg); // System.out.println(""); // //2. feladat // System.out.println("A 2. feladat megoldása"); // System.out.println("A hívásidő kiszámítása a bekért időpontok alapján \n"); // System.out.println("Kérem a hívás kezdetének időpontját óra perc másodperc formátumban"); // System.out.println("szóközökkel elválasztva!"); // String[] kezdet = idoPontBeolvasas(); // int kIdo = idoMeghat(kezdet); // System.out.println("Kérem a hívás végének időpontját óra perc másodperc formátumban"); // System.out.println("szóközökkel elválasztva!"); // String[] veg = idoPontBeolvasas(); // int vIdo = idoMeghat(veg); // int hivasIdoMp = vIdo - kIdo; // int hivasIdo = hivasIdoMeghat(hivasIdoMp); // System.out.println("A hívásidő a számlázás szempontjából: " + hivasIdo + " perc. \n"); // //3. feladat // System.out.println("A 3. feladat megoldása"); // System.out.println("Az adatok beolvasása a hivasok.txt fájlból \n"); // System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása // BufferedReader behozatal; // behozatal = new BufferedReader(new FileReader("hivasok.txt")); // String elsoSor; // String sor; // String[] daraboltSor; //Ügyeljünk rá, hogy a darabolt szöveg String tömb! // String hivottSzam; // elsoSor = behozatal.readLine(); // //Ha van UTF-8 azonosító a fájl elején, elhagyjuk a sor elejéről: // if (elsoSor.charAt(0) == (char) 0xFEFF) { // elsoSor = elsoSor.substring(1); // } // daraboltSor = elsoSor.split(" "); // hivottSzam = behozatal.readLine(); // hivas.add(new HivasTipus(daraboltSor, hivottSzam)); // // while ((sor = behozatal.readLine()) != null) { // daraboltSor = sor.split(" "); // hivottSzam = behozatal.readLine(); // hivas.add(new HivasTipus(daraboltSor, hivottSzam)); // } // behozatal.close(); // //Ellenőrzés // System.out.println("A beolvasás ellenőrzése "); // System.out.println("Az utolsó 5 hívás: \n"); // for (int i = hivas.size() - 4; i <= hivas.size(); i++) { // System.out.print(i + ". hívás kezdete: "); // System.out.print(hivas.get(i - 1).kOra + " " + hivas.get(i - 1).kPerc + " " // + hivas.get(i - 1).kMp); // System.out.println(""); // System.out.print(i + ". hívás vége: "); // System.out.print(hivas.get(i - 1).vOra + " " + hivas.get(i - 1).vPerc + " " // + hivas.get(i - 1).vMp); // System.out.println(""); // System.out.print(i + ". hívott szám: "); // System.out.println(hivas.get(i - 1).hivottSzam); // System.out.println(""); // } // for (int i = 1; i <= hivas.size(); i++) { // hivasIdoMp = hivas.get(i - 1).vOra * 3600 + hivas.get(i - 1).vPerc * 60 + hivas.get(i - 1).vMp // - hivas.get(i - 1).kOra * 3600 - hivas.get(i - 1).kPerc * 60 - hivas.get(i - 1).kMp; // hivas.get(i - 1).hivasIdo = hivasIdoMeghat(hivasIdoMp); // } // System.out.println("A hívásidők kiírása a percek.txt fájlba \n"); // PrintWriter kivitel; // kivitel = new PrintWriter(new FileWriter("percek.txt")); // for (int i = 1; i <= hivas.size(); i++) { // kivitel.println(hivas.get(i - 1).hivasIdo + " " + hivas.get(i - 1).hivottSzam); // } // kivitel.close(); // System.out.println("A fájlkiírás befejeződött. \n"); // //4. feladat // System.out.println("A 4. feladat megoldása"); // System.out.println("Hívások száma csúcsidőben és csúcsidőn kívül \n"); // for (int i = 1; i <= hivas.size(); i++) { // if (hivas.get(i - 1).kOra > 6 && hivas.get(i - 1).kOra < 18) { // hivas.get(i - 1).csucsIdo = true; // } // } // int csucsDb = 0; // int kivulDb = 0; // for (int i = 1; i <= hivas.size(); i++) { // if (hivas.get(i - 1).csucsIdo == true) { // csucsDb++; // } else { // kivulDb++; // } // } // System.out.println("Csúcsidőben: " + csucsDb); // System.out.println("Csúcsidőn kívül: " + kivulDb); // System.out.println(""); // // //5. feladat // System.out.println("Az 5. feladat megoldása"); // System.out.println("A hívásidő kiszámítása mobil, ill. vezetékes hívásoknál \n"); // for (int i = 1; i <= hivas.size(); i++) { // hivas.get(i - 1).jelleg = jellegMeghat(hivas.get(i - 1).hivottSzam); // } // int mobilIdo = 0; // int vezetekesIdo = 0; // for (int i = 1; i <= hivas.size(); i++) { // if (hivas.get(i - 1).jelleg.equals("mobil")) { // mobilIdo += hivas.get(i - 1).hivasIdo; // } else { // vezetekesIdo += hivas.get(i - 1).hivasIdo; // } // } // System.out.println("Mobil szám: " + mobilIdo + " perc"); // System.out.println("Vezetékes szám: " + vezetekesIdo + " perc"); // System.out.println(""); // //6. feladat // System.out.println("A 6. feladat megoldása"); // System.out.println("Hívásdíj csúcsidőben \n"); // double mobilCsucsTarifa = 69.175; // double vezetekesCsucsTarifa = 30; // double csucsDij = 0; // for (int i = 1; i <= hivas.size(); i++) { // if (hivas.get(i - 1).csucsIdo == true) { // if (hivas.get(i - 1).jelleg.equals("mobil")) { // csucsDij += hivas.get(i - 1).hivasIdo * mobilCsucsTarifa; // } else { // csucsDij += hivas.get(i - 1).hivasIdo * vezetekesCsucsTarifa; // } // } // } // System.out.printf("A felhasználónak a csúcsidős hívásokért %.2f", csucsDij); // System.out.println(" Ft-ot kell fizetnie. \n"); // } // ////************************************************************ // public static String telefonSzamBeolvasas() throws IOException { // BufferedReader bill; // bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); // return bill.readLine(); // } // // public static String jellegMeghat(String telSzam) throws IOException { // if (telSzam.substring(0, 2).equals("39") || telSzam.substring(0, 2).equals("41") // || telSzam.substring(0, 2).equals("79")) { // return "mobil"; // } else { // return "vezetékes"; // } // } // // public static String[] idoPontBeolvasas() throws IOException { // BufferedReader bill; // bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); // return bill.readLine().trim().split("\\s+"); // /*Először eltávolítjuk a beolvasott szöveg széleiről a szóközöket, // majd egy vagy több egymás melletti szóköz mentén feldaraboljuk*/ // } // // public static int idoMeghat(String[] ido) { // int ora = Integer.parseInt(ido[0]); // int perc = Integer.parseInt(ido[1]); // int mp = Integer.parseInt(ido[2]); // return ora * 3600 + perc * 60 + mp;//Az időt másodpercben számítjuk a nap kezdetétől // } // // public static int hivasIdoMeghat(int idoMp) { // if (idoMp % 60 == 0) { // return idoMp / 60; //Egészosztás, csak az egészrészt adja meg! // } else { // return idoMp / 60 + 1; //A megkezdett perceket felfelé kerekítjük // } // } // //A tömblista konstruktora // static ArrayList<HivasTipus> hivas = new ArrayList<>(); // // public static class HivasTipus { // // private final int kOra; // private final int kPerc; // private final int kMp; // private final int vOra; // private final int vPerc; // private final int vMp; // private final String hivottSzam; // private int hivasIdo; // private boolean csucsIdo; // private String jelleg; // // public HivasTipus(String[] idokBe, String hivottSzamBe) //konstruktor // { // kOra = Integer.parseInt(idokBe[0]); // kPerc = Integer.parseInt(idokBe[1]); // kMp = Integer.parseInt(idokBe[2]); // vOra = Integer.parseInt(idokBe[3]); // vPerc = Integer.parseInt(idokBe[4]); // vMp = Integer.parseInt(idokBe[5]); // hivottSzam = hivottSzamBe; // hivasIdo = 0; //Kezdőértékek, futás közben állítjuk be a valódi értéküket // csucsIdo = false; // jelleg = ""; // } // } //}