Analiza zadatka 2 sa pseudokodom
Zadatak se sastoji iz više povezanih celina koje obrađuju:
Ulazni podaci
Unosi se string:
s1
koji sadrži mala i velika slova engleske abecede i cifre i ima dužinu: 2 < N < 30
N se ne unosi posebno.
Primer:
aZ9ACTg
2.1 Formiranje niza ASCII vrednosti
Potrebno je:
-
Za svaki karakter iz stringa odrediti ASCII vrednost.
-
ASCII vrednost zapisati kao trocifren broj.
Primer:
'a' -> 097
'Z' -> 090
'9' -> 057
Dobijeni elementi smeštaju se u niz stringova:
brojeviNiz
Izmena elemenata na parnim indeksima
Za elemente koji se nalaze na:
0, 2, 4, ...
potrebno je:
-
između svake dve cifre umetnuti aritmetičku sredinu svih cifara,
-
sredinu zaokružiti na veći ceo broj.
Primer
ASCII: 097
Cifre:0, 9, 7
Sredina:(0 + 9 + 7) / 3 = 5.33Zaokruženo:6Novi string:06967
Šta se ispisuje?
Prikazuju se samo elementi:
brojeviNiz[i]
gde je i paran
2.2 Provera pravilnosti stringa
String je PRAVILAN ako svi karakteri imaju istu učestalost.
Primer:
aabbcc
svako slovo se pojavljuje 2 puta.
Takođe je pravilan ako uklanjanjem samo jednog karaktera svi preostali karakteri imaju istu učestalost.
Primer:
aabbccc
uklanjanjem jednog:
c
dobija se:
aabbcc
Potrebno je ispisati:
String je pravilan
ili:
String nije pravilan
2.3 Formiranje gena
Potrebno je iz stringa s1
izdvojiti samo: A, C, T, G
zanemarujući veličinu slova.
Primer: Ako je:
aBcActG91
dobija se:
ACTG
Sva slova u novom stringu moraju biti velika.
Dobijeni string je:
s2
2.4 Stabilnost gena
Gen je stabilan ako:
1. Dužina je deljiva sa 4
i
2. Sva četiri slova:
A, C, T, G
imaju istu učestalost:
n / 4
Primer
Ako je:
ACTGACTG
dužina je:
8
svako slovo mora imati:
2
pojavljivanja.
Potrebno je ispisati:
-
da li je gen stabilan,
-
broj pojavljivanja svakog slova.
Primer:
A = 2
C = 2
T = 2
G = 2
2.5 Najkraći podniz za stabilizaciju gena
Potrebno je pronaći:
-
najmanji podniz koji se dodaje na kraj stringa,
-
tako da gen postane stabilan.
Ideja
Ako neka slova nedostaju:
A = 1
C = 3
T = 2
G = 0
potrebno je dodati karaktere koji nedostaju.
Rezultat mora biti:
-
sortiran rastuće po abecedi.
Primer:
AGG
Algoritam zadatka
Deo 2.1
Za svaki karakter:
-
odrediti ASCII kod,
-
pretvoriti ga u trocifren string,
-
ako je indeks paran:
-
izračunati sredinu cifara,
-
umetnuti srednju vrednost između cifara.
-
Deo 2.2
-
izbrojati pojavljivanja svih karaktera,
-
proveriti:
-
da li su sva pojavljivanja jednaka,
-
ili uklanjanjem jednog karaktera postaju jednaka.
-
Deo 2.3
-
prolazak kroz string,
-
provera:
-
da li je karakter:
A/C/T/G
-
-
dodavanje u novi string velikim slovom.
Deo 2.4
-
izbrojati:
A, C, T, G -
proveriti:
-
dužina % 4 == 0,
-
sva pojavljivanja jednaka.
-
Deo 2.5
-
pronaći maksimalnu učestalost,
-
sva ostala slova dopuniti do tog maksimuma,
-
formirati string za dodavanje,
-
sortirati rastuće.
Pseudokod
Unesi s1
-----------------------------------
2.1 ASCII niz
-----------------------------------
Za svaki karakter iz s1
ascii = ASCII vrednost karaktera
pretvori ascii u trocifren string
smesti u brojeviNiz
Za svaki paran indeks
uzmi tri cifre
izračunaj sredinu
zaokruži na veći broj
formiraj novi string
ispiši ga
-----------------------------------
2.2 Pravilnost stringa
-----------------------------------
Izbroj pojavljivanja svih karaktera
Ako su sva pojavljivanja jednaka
string je pravilan
Inače
pokušaj uklanjanje jednog karaktera
ako tada sva pojavljivanja postanu jednaka
string je pravilan
inače
string nije pravilan
-----------------------------------
2.3 Formiranje gena
-----------------------------------
s2 = ""
Za svaki karakter iz s1
pretvori u veliko slovo
ako je:
A ili C ili T ili G
dodaj u s2
Prikaži s2
-----------------------------------
2.4 Stabilnost gena
-----------------------------------
Izbroj:
A
C
T
G
Ako je:
dužina deljiva sa 4
i sva pojavljivanja jednaka
gen je stabilan
Inače
gen nije stabilan
Prikaži broj pojavljivanja
-----------------------------------
2.5 Dodavanje podniza
-----------------------------------
Pronađi najveću učestalost
Za svako slovo:
A, C, T, G
dodaj onoliko karaktera
koliko nedostaje do maksimuma
Sortiraj string
Prikaži rezultat