-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMDZ_4,Aritmeticki_izraz(TREBA DORADITI).py
More file actions
119 lines (105 loc) · 3.07 KB
/
MDZ_4,Aritmeticki_izraz(TREBA DORADITI).py
File metadata and controls
119 lines (105 loc) · 3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
## Matija Eskic 18/0253
def Provera(upis):
skup_dozvoljenih_karaktera = {'1','2','3','4','5','6','7','8','9','0','+','-','*','/','^'}
skup_operacija = {'+','-','*','/','^'}
skup_cifara = {'1','2','3','4','5','6','7','8','9','0'}
bila = False
OK = True
for i,elem in enumerate(upis):
if elem not in skup_dozvoljenih_karaktera:
OK = False
break
elif i == len(upis)-1 and elem in skup_operacija:
OK = False
break
elif i == 0 and elem in skup_operacija and elem != '-':
OK = False
break
else:
if elem in skup_operacija and bila == True:
OK = False
break
elif elem in skup_operacija and bila == False:
bila = True
elif elem in skup_cifara and bila == True:
bila = False
return OK
izraz = input()
DOBRO = Provera(izraz)
while DOBRO == False:
print("Pogresan unos. Probajte ponovo:")
izraz = input()
DOBRO = Provera(izraz)
niz = []
if izraz[0] == '-':
niz.append(-1)
string = ''
for i,elem in enumerate(izraz):
if i == 0 and izraz[0] == '-':
nesto = 0
elif elem == '*' or elem == '+' or elem == '/' or elem == '-' or elem == '^':
int(string)
niz.append(string)
string = ''
elif elem != '*' and elem != '+' and elem != '/' and elem != '-' and elem != '^' :
string = string + elem
int(string)
niz.append(string)
if niz[0] == -1:
niz[0] = -int(niz[1])
del niz[1]
znakovi = []
for i,elem in enumerate(izraz):
if (elem == '*' or elem == '+' or elem == '/' or elem == '-' or elem == '^') and i!=0:
znakovi.append(elem)
duzina = len(znakovi)
brojac1 = duzina-1
brojac2 = duzina
while brojac1>-1:
if znakovi[brojac1]=='^':
broj1 = int(niz[brojac1])
broj2 = int(niz[brojac2])
niz[brojac1]=broj1**broj2
del niz[brojac2]
del znakovi[brojac1]
brojac2-=1
brojac1-=1
else:
brojac2-=1
brojac1-=1
brojac1 = 0
brojac2 = 0
duzina = len(znakovi)-1
while duzina>=brojac1:
if znakovi[brojac1]=='*':
niz[brojac2+1]=int(niz[brojac2])*int(niz[brojac2+1])
del niz[brojac2]
del znakovi[brojac1]
duzina-=1
elif znakovi[brojac1]=='/':
niz[brojac2+1]=int(niz[brojac2])/int(niz[brojac2+1])
del niz[brojac2]
del znakovi[brojac1]
duzina-=1
else:
brojac2+=1
brojac1+=1
brojac1 = 0
brojac2 = 0
duzina = len(znakovi)-1
while duzina>=brojac1:
if znakovi[brojac1]=='+':
niz[brojac2+1]=int(niz[brojac2])+int(niz[brojac2+1])
del niz[brojac2]
del znakovi[brojac1]
duzina-=1
elif znakovi[brojac1]=='-':
niz[brojac2+1]=int(niz[brojac2])-int(niz[brojac2+1])
del niz[brojac2]
del znakovi[brojac1]
duzina-=1
else:
brojac2+=1
brojac1+=1
resenje = niz[brojac2]
print(resenje)