Advertisement
Nakumas

Egzamin PP&JP: 2019, Zad.1 A

Feb 22nd, 2019
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.14 KB | None | 0 0
  1. package egzamin2019a1;
  2.  
  3. import java.io.IOException;
  4. import java.io.RandomAccessFile;
  5.  
  6. public class Egzamin2019A1
  7. {
  8.  
  9.     public static void main(String[] args)
  10.     {
  11.        
  12.     }
  13.     static int obliczZamowienie(String nazwaPliku, String nazwaTowaru)
  14.     {
  15.         //deklaujemy wszystkie potrzebne zmienne
  16.         String nazwaTowaruZPliku;
  17.         int nrZamowienia, liczbaSztuk, cenaPoRabacie, liczbaSztukPoszukiwanegoTowaru = -1;
  18.         double cena;
  19.         long wskaznikPrzed, wskaznikPo;
  20.         //tworzymy wylapywanie wyjatkow
  21.         try(RandomAccessFile raf = new RandomAccessFile(nazwaPliku, "rw");) //otwieramy w bloku try plik danych
  22.         {
  23.             while(raf.getFilePointer() < raf.length()) //czytamy caly plik, dopoki wartosc wskaznika jest mniejsza niz dlugosc pliku
  24.             {
  25.                 nrZamowienia = raf.readInt();
  26.                 nazwaTowaruZPliku = raf.readUTF();
  27.                 wskaznikPrzed = raf.getFilePointer();// miejsce do którego wrócimy by nadpisac cene jezeli bedzie rabat
  28.                 cena = raf.readDouble();
  29.                 liczbaSztuk = raf.readInt();
  30.                 wskaznikPo = raf.getFilePointer(); //po nadpisaniu ceny wracamy tutaj zeby odpowiednio ustawic pointer, aby przy nastepnym przejsciu petli odczytac paawidłowo 4 kolejne elementy
  31.                
  32.                 if(nazwaTowaruZPliku == nazwaTowaru)//jezeli ten towar jest tym szukamym (nazwa przeslana jako drugi argument funkcji)
  33.                     liczbaSztukPoszukiwanegoTowaru = liczbaSztuk;
  34.                 if(cena > 50 && liczbaSztuk >= 25) //jezeli drozsze od 50 i zamowiono chociaz 25 szt.
  35.                 {
  36.                     cenaPoRabacie = (int)(cena - cena*0.10);//okreslamy rabat
  37.                     raf.seek(wskaznikPrzed); //idziemy przed cene zeby ja nadpisac
  38.                     raf.writeInt(cenaPoRabacie);
  39.                     raf.seek(wskaznikPo);//idziemy za ostatni z czterech elementow
  40.                 }
  41.             }
  42.            
  43.         }
  44.         catch(IOException e)
  45.         {
  46.             System.out.println(e.getMessage());
  47.         }
  48.         return liczbaSztukPoszukiwanegoTowaru;
  49.     }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement