567657656767

You might also like

You are on page 1of 16

potrebno e da se napravi kompjuterska aplikacija so koja ke se zabrza rabotenjeto

na edna apteka.
pritoa aplikacijata ke mu ovozmozi na korisnikot(farmacevtot) brzo da gi prebaruva
niz ogromno mnozest so lekovi koi
se vneseni vo sistemomt i toj treba da prebaravuva koj e sleden: dovolno e da gi
vnese prvite 3 bukvi od imeto na lekot za da moze da mu se izlezi dali go ima vo
sistemot.
Rabota na farmacevtot e da proveri dali vneseniot lek go ima vo sistemot
i da mu dade informacii. Informacijata shto treba da mu ja dade na klientot e dali
lekot se naoga na pozitivnata lista
na lekovi, koja e negovata cena i dali go ima na zaliha. dokolku lekot postoi klientot
go narachuva so shto kazuva
kolku parchinja ke zemi. ovaa akcija se evidentira na sistemot (odnosno treba da se
namali zalihata na lekovi za onolku parchinja
kolku shto mu izdal na klientot. ako pobaruvachkata na klientot e pogolema od
zalihata na lekot shto ja ima
vo sistemot, ne se prezema nikakva akcija.

vlez: od standarden vlez prvo se dava broj N, koj pretstavuva broj na lekovi koi
ke bidat vneseni vo sistemot. potoa se dadeni iminjata na lekovite, dali gi ima na
pozitivnata lista(1/0), cenata i broj na parchinja site razdeleni so prazno mesto. ako
lekot
ne e najden se pecati se pechati "Nema takov lek" . dokolku narachkata na klientot e
pogolema od zalihata se pechati Nema dovolno lekovi za vashata narashka.

zabeleshka!!!! => zadachata da se reshi so hesh tabela. funkcijata so koja se vrshi


mapiranje
na iminjata na lekovite h(w)=(29*(29*(29*+ASCII(c1)+ASCII(c2))+ASCII(c3))
%102780 kade zborot
w=c1c2c3c4... e so golemi bukvi

ime na klasa: Apteka

INPUT

20
ACEROLA 0 100 1000
ACIKLOVIR 1 1658 87
ACIPAN 1 300 25
ADIMICIN 0 500 0
VENTOR 1 0 25
VALSACOR 1 1090 10
TYVERB 0 62696 1
ULCODIN 1 47 100
TRICAL 0 0 0
RUBENS 0 2315 0
IBALGIN 1 0 100
HYDROCYKLIN 0 55 10
GENTAMICIN 1 152 90
FORTEO 1 0 0
FORVITAC 1 0 150
CHIROCAINE 1 0 10
BRONLES 1 0 0
BELOGENT 0 143 30
BEDOXIN 1 0 100
HYDROCYKLYN20 0 113 20
hydroCyklinn
2
hydroCyklyn20
14

OUTPUT

Nema takov lek!


HYDROCYKLIN20
NEG
113
20
Napravena naracka

1. /*
2. Да се напише програма во која на влез се даваат
3.  
4. ИМЕЛЕК, ЗАЛИХА/НЕЗАЛИХА(0/1), КОЛИЧИНА, ЦЕНА
5.  
6. Потоа одкако читањето ќе заврши се внесуваат лекови кој
сакаме да ги купиме
7. ИМЕЛЕК (име)
8. 5 (количина)
9.  
10. Доколку нема 5 лекови да се дадат максималниот број
на лекови што ги има и во наредните обиди да се испечати
"НЕМА ПОВЕЌЕ"
11.  
12. ПРИМЕР ВЛЕЗ:
13.  
14. 10
15. APAURIN 1 10 50
16. DEKSAZON 1 4 100
17. METFORMIN 1 30 120
18. CVITAMIN 0 6 30
19. BKOMPLEKS 1 10 40
20. MINIRIN 1 20 102
21. PALIN 0 10 50
22. KREON 1 10 22
23. LINCOMYCIN 1 501 10
24. NOZINAN 1 52 50
25. APAURIN
26. 11
27. PALIN
28. 10
29. KREON
30. 5
31. APAURIN
32. 1
33. KRAJ
34.  
35.  
36. ПРИМЕР ИЗЛЕЗ:
37.  
38. Uspesno kupuvanje!
39. Lek: APAURIN Kupena kolicina: 10
40. Preostanuvaat uste: 0 lekovi APAURIN
41.  
42. Neuspesno kupuvanje!
43. Go nema na zaliha lekot: PALIN
44.  
45. Uspesno kupuvanje!
46. Lek: KREON Kupena kolicina: 5
47. Preostanuvaat uste: 5 lekovi KREON
48.  
49. Neuspesno kupuvanje!
50. Go nema na zaliha lekot: APAURIN
51.  
52. */
/*

Да се напише програма во која на влез се даваат

ИМЕЛЕК, ЗАЛИХА/НЕЗАЛИХА(0/1), КОЛИЧИНА, ЦЕНА

Потоа одкако читањето ќе заврши се внесуваат лекови кој сакаме


да ги купиме

ИМЕЛЕК (име)

5 (количина)

Доколку нема 5 лекови да се дадат максималниот број на лекови


што ги има и во наредните обиди да се испечати "НЕМА ПОВЕЌЕ"

ПРИМЕР ВЛЕЗ:

10

APAURIN 1 10 50

DEKSAZON 1 4 100

METFORMIN 1 30 120

CVITAMIN 0 6 30

BKOMPLEKS 1 10 40

MINIRIN 1 20 102

PALIN 0 10 50

KREON 1 10 22

LINCOMYCIN 1 501 10
NOZINAN 1 52 50

APAURIN

11

PALIN

10

KREON

APAURIN

KRAJ

ПРИМЕР ИЗЛЕЗ:

Uspesno kupuvanje!

Lek: APAURIN Kupena kolicina: 10

Preostanuvaat uste: 0 lekovi APAURIN

Neuspesno kupuvanje!

Go nema na zaliha lekot: PALIN

Uspesno kupuvanje!

Lek: KREON Kupena kolicina: 5

Preostanuvaat uste: 5 lekovi KREON


Neuspesno kupuvanje!

Go nema na zaliha lekot: APAURIN

*/

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

class SLLNode<E> {

protected E element;

protected SLLNode<E> succ;

public SLLNode(E elem, SLLNode<E> succ) {

this.element = elem;

this.succ = succ;

@Override

public String toString() {


return element.toString();

class MapEntry<K extends Comparable<K>, E> implements


Comparable<K> {

// Each MapEntry object is a pair consisting of a key (a


Comparable

// object) and a value (an arbitrary object).

K key;

E value;

public MapEntry(K key, E val) {

this.key = key;

this.value = val;

public int compareTo(K that) {

// Compare this map entry to that map entry.

@SuppressWarnings("unchecked")

MapEntry<K, E> other = (MapEntry<K, E>) that;

return this.key.compareTo(other.key);

}
public String toString() {

return "<" + key + "," + value + ">";

class CBHT<K extends Comparable<K>, E> {

// An object of class CBHT is a closed-bucket hash table,


containing

// entries of class MapEntry.

private SLLNode<MapEntry<K, E>>[] buckets;

@SuppressWarnings("unchecked")

public CBHT(int m) {

// Construct an empty CBHT with m buckets.

buckets = (SLLNode<MapEntry<K, E>>[]) new SLLNode[m];

private int hash(K key) {

// Translate key to an index of the array buckets.

return Math.abs(key.hashCode()) % buckets.length;

public SLLNode<MapEntry<K, E>> search(K targetKey) {


// Find which if any node of this CBHT contains an
entry whose key is

// equal

// to targetKey. Return a link to that node (or null


if there is none).

int b = hash(targetKey);

for (SLLNode<MapEntry<K, E>> curr = buckets[b]; curr !


= null; curr = curr.succ) {

if (targetKey.equals(((MapEntry<K, E>)
curr.element).key)) {

return curr;

return null;

public void insert(K key, E val) { // Insert the


entry <key, val> into this CBHT.

MapEntry<K, E> newEntry = new MapEntry<K, E>(key,


val);

int b = hash(key);

for (SLLNode<MapEntry<K, E>> curr = buckets[b]; curr !


= null; curr = curr.succ) {

if (key.equals(((MapEntry<K, E>)
curr.element).key)) {

// Make newEntry replace the existing


entry ...

curr.element = newEntry;
return;

// Insert newEntry at the front of the 1WLL in bucket


b ...

buckets[b] = new SLLNode<MapEntry<K, E>>(newEntry,


buckets[b]);

public void delete(K key) {

// Delete the entry (if any) whose key is equal to key


from this CBHT.

int b = hash(key);

for (SLLNode<MapEntry<K, E>> pred = null, curr =


buckets[b]; curr != null; pred = curr, curr = curr.succ) {

if (key.equals(((MapEntry<K, E>)
curr.element).key)) {

if (pred == null) {

buckets[b] = curr.succ;

} else {

pred.succ = curr.succ;

return;

}
public String toString() {

String temp = "";

for (int i = 0; i < buckets.length; i++) {

temp += i + ":";

for (SLLNode<MapEntry<K, E>> curr = buckets[i];


curr != null; curr = curr.succ) {

temp += curr.element.toString() + " ";

temp += "\n";

return temp;

class Lek{

private String lek;

private int zaliha;

private int kolicina;

private int cena;

public Lek(String lek, int zaliha, int kolicina, int cena)


{
this.lek = lek;

this.zaliha = zaliha;

this.kolicina = kolicina;

this.cena = cena;

public String getLek(){

return this.lek;

public int getZaliha(){

return this.zaliha;

public int getKolicina(){

return this.kolicina;

public int getCena(){

return this.cena;

public int kupiLek(int kolicina){

int kupeno = 0;

if((kolicina > this.kolicina) || (this.kolicina -


kolicina <= 0)){

kupeno = this.kolicina;
this.kolicina -= this.kolicina;

this.zaliha = 0;

}else{

kupeno = kolicina;

this.kolicina -= kolicina;

return kupeno;

public int hashCode(){

int hash = 0;

for(int i=0; i<lek.length(); i++){

hash += 7 * 31 + lek.charAt(i);

return hash;

/**

* @author root

*/

public class Apteka {

/**
* @param args the command line arguments

*/

public static void main(String[] args) throws IOException{

// TODO code application logic here

BufferedReader br = new BufferedReader(new


InputStreamReader(System.in));

int N = Integer.parseInt(br.readLine());

CBHT<String, Lek> tabela = new CBHT<>(300);

for(int i=0; i<N; i++){

String [] str = br.readLine().split(" ");

if(str.length == 4){

String ImeLek = str[0];

int zaliha = Integer.parseInt(str[1]);

int kolicina = Integer.parseInt(str[2]);

int cena = Integer.parseInt(str[3]);

if(zaliha != 0 || kolicina != 0){

Lek novLek = new


Lek(ImeLek,zaliha,kolicina,cena );

tabela.insert(ImeLek, novLek);

}
}

System.out.println();

//Kupuvanje pocnuva

while(true){

String imelek = br.readLine();

int kolicina = Integer.parseInt(br.readLine());

if(imelek.equals("KRAJ"))break;

SLLNode<MapEntry<String, Lek>> l =
tabela.search(imelek);

Lek lekObj = l.element.value;

if(lekObj.getZaliha()==0){

System.out.println("Neuspesno kupuvanje!");

System.out.println("Go nema na zaliha lekot: "


+ imelek);

System.out.println();

}else{

int kupeno = lekObj.kupiLek(kolicina);

System.out.println("Uspesno kupuvanje!");

System.out.println("Lek: " + lekObj.getLek() +


" Kupena kolicina: " + kupeno);

System.out.println("Preostanuvaat uste: " +


lekObj.getKolicina() + " lekovi " + lekObj.getLek());

System.out.println();
}

You might also like