strukturi na podatoci i algoritmi

11
1. Да се напише функција RotirajLevo, која како аргумент прима низа, нејзината должина и параметар k, а ја враќа истата низа само со ротирани елементи за к места во лево. Пример, за влезна низа 1 2 3 4 5 6 7 8 9 со должина 9, и к=2 места во лево, се добива низата 3 4 5 6 7 8 9 1 2. public class Rotiraj { // дефинираме класа Rotiraj public int[] rotirajLevo(int[] array, int length, int k){ // дефинираме функција Rotiraj Levo со три влезни аргументи int[] newArray=new int[array.length]; // дефинираме нова низа со мемориски простор која има иста должина со новата низа for(int i=0;i<array.length-2;i++){ // for циклус кој почнува од нула до должина -2 newArray[i]=array[i+k]; // новата низа ги прима вредностите за параметарот k поместени во лево } for(int i=0;i<k;i++){ // во овој for циклус се допишуваат првите k елементи од низата newArray[array.length- k+i]=array[i]; // функцијата враќа array кој претходно ја примал вредноста од низата new array

Upload: dimitar-markov

Post on 13-Apr-2015

172 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Strukturi Na Podatoci i Algoritmi

1. Да се напише функција RotirajLevo, која како аргумент прима низа, нејзината должина и параметар k, а ја враќа истата низа само со ротирани елементи за к места во лево. Пример, за влезна низа 1 2 3 4 5 6 7 8 9 со должина 9, и к=2 места во лево, се добива низата 3 4 5 6 7 8 9 1 2.

public class Rotiraj { // дефинираме класа Rotirajpublic int[] rotirajLevo(int[] array, int length, int k){ //

дефинираме функција Rotiraj Levo со три влезни аргументи

int[] newArray=new int[array.length]; // дефинираме нова низа со мемориски простор која има иста должина со новата низа

for(int i=0;i<array.length-2;i++){ // for циклус кој почнува од нула до должина -2

newArray[i]=array[i+k]; // новата низа ги прима вредностите за параметарот k поместени во лево

}for(int i=0;i<k;i++){ // во овој for циклус се

допишуваат првите k елементи од низатаnewArray[array.length-k+i]=array[i]; // функцијата

враќа array кој претходно ја примал вредноста од низата new array

}array=newArray; // новата низаreturn array; // ја враќа вредност на новата низа

}

public static void main(String[] args) { // функција mainRotiraj r=new Rotiraj(); // нов мемеориски објект

за објектот rint[] array={1,2,3,4,5,6,7,8,9}; // ги дефинираме

елементите на низатаarray=r.rotirajLevo(array, array.length, 2); // низата

array прима вредности од функцијата r.rotirajlevofor(int i=0;i<array.length;i++)

Page 2: Strukturi Na Podatoci i Algoritmi

System.out.print(array[i]); // ги печати сите елементи на низата

}}

2. Да се напише функција SpoiISortiraj, која како аргумент прима два стринга, и од нив прави нов стринг со спојување и сортирање на знаците според нивниот редослед во ASCII табелата. Пример, за влезен стринг “Strukturi Na Podatoci” (наводниците не се дел од стринговите) и влезен стринг “1 cas” се добива стрингот “ 1NPSaaaccdiikorrstttuu”.

public class Sortiraj { // класа Sortiraj

public String spoiISortiraj(String str1,String str2){ // функција spoiISortiraj

String str3=str1+" "+str2; // споени се двете вредности

char[] ch=str3.toCharArray(); //променлива од тип char

char[] nova=new char[ch.length]; // нова променлива од тип char

int flag=1; // променлива од тип intchar temp=' '; // променлива од тип charfor(int i=1;(i<=ch.length)&&flag==1;i++){ // циклус for

flag=0;for(int j=0;j<ch.length-1;j++){

if ((int)ch[j]>(int)ch[j+1]){ // со овој if циклус се врши кастрирање од char во int

temp=ch[j];ch[j]=ch[j+1];ch[j+1]=temp; flag=1;

}}

}String result=new String(ch); // дефинирање на нова

променлива result

Page 3: Strukturi Na Podatoci i Algoritmi

return result;}

public static void main(String[] args) {Sortiraj s=new Sortiraj(); //дефинирање објект од

класата SortirajSystem.out.println(s.spoiISortiraj("Strukturi Na Podatoci",

"1 cas")); //печатење на вредноста на објектот s со повикување на функцијата spoiISortiraj

}}

3. Да се напише функција CeliBroevi, која како аргумент прима низа од цифри и нејзината должина, а ја враќа низа од четирицифрени цели броеви, формирани редоследно од влезната низа. Доколку за последниот број фалат цифри, се додаваат нули. Пример, за влезна низа 1 2 3 4 5 6 7 8 9 со должина 9, се добива низата 1234 5678 9000.

import java.util.Arrays; //gi importira defeniciite za nizi

public class Broevi { // definirame klasa broevi od tip public

public int[] celiBroevi(int[] array, int length){ // definirame funkcija public koja vrakja niza od int

int[] tmp=Arrays.copyOf(array, ((length/4)+1)*4); // se pravi nova niza tmp koja ima dolzina kolku sto e osnovnata I plus nulite koi treba da se dodadat na krajotString str="" ; //setira string napraznoarray=tmp; //vrednosta od tmp se kopira vo arraytmp=new int[array.length/4]; // tmp dobiva nova vrednost od tip na int niza so dolzina kolku sto e array/4for(int i=1;i<=array.length/4;i++){ //kopiranje na vrednosti vo

for ciklusot. Se kopiraat vrednostite od array vo str

Page 4: Strukturi Na Podatoci i Algoritmi

for(int j=((i-1)*4);j<(i*4);j++){str+=array[j];

}tmp[i-1]=Integer.parseInt(str); //str=""; //string se setira na prazno }

array=tmp; //array gi dobiva vrednostite od tmpreturn array; //se vrakja promenlivata array na

izlez}

public static void main(String[] args) { // glavna funkcija so argumenti

int[] array={1,2,3,4,5,6,7,8,9}; // se vnesuvat vrednostite za array

Broevi b=new Broevi(); // nov object b od klasa broevi

array=b.celiBroevi(array, array.length); //nizata array gi prima vrednostite po povikuvanjeto na funkcijata celibroevi

for(int i=0;i<array.length;i++)System.out.println(array[i]); // ciklus za pecatenje na

site vrednosti od nizata array

}

4. Да се напише функција BrisiSekoePojavuvanje, која како аргумент прима која прима покажувач кон листа и елемент, и го брише секој јазел кој го содржи тој елемент. Нормално, треба да се додаде и функција Pecati за да се види ефектот од бришењето.

public class Node {public int info; public Node next;public static void BrisiSekoePojavuvanje; //funkcija

Page 5: Strukturi Na Podatoci i Algoritmi

(Node p, int size, int index); { //najavuvanje if (index<0||index>=size) //ako indeksot e pomal od 0 ili pogolem od goleminata na nizatathrow new IndexOutofBoundsException(); //se javuva ekseptionNode izbrisano=null; //definirame pomosen jazol izbrisano if (index==0) { //ako proveruvame za prvata vrednost da e nulaizbrisano=p; //pomosniot jazol ja dobiva prvata vrednostp=p.next;}else { //inaku ja prima vrednosta na prethodniot elementNode pred=nodeAt (index-1); izbrisano=pred_next;pred.next=izbrisano.next;} //se brise jazolotizbrisano.next=null;}public static int index(Node p, int info); { //naoganje na indeksoti=0;while (p!=null) {if (p.info==info) {return i;}else {p=p.link;i++;}if p==null return-1 //se vraka vrednost -1}public static int size (Node p) { //za size se bara goleminata vo vodaint size=0;for (Node n=p; n!=null; n=n.next)size++; //se izminuva listata i size se zgolemuva na 1

Page 6: Strukturi Na Podatoci i Algoritmi

return size }public static void ispecati (Node p) { //gi pecati site vrednosti na listatafor (Node n=p; n!=null; n.next) // pocnuva sekogas od pokazuvacot kon prviot i odi do kraj na listataSystem.out.println(n.info) }public static void main (string[] args) {Node p=new Node(); //nov jazolNode s=p; //se pokazuva sekogas kon prviot element na listataint[] array= {1,2,3,4,5,6,7,8,9}; //elementi na nizataint izb=9; //vrednost koja ja birame od nizatafor(i=0; i<array.lenght, i++) {Node n=new Node();Node q=p.next;n.info=array[i];n.link=q;p.link=n;} //gi vnesuvame elementite od nizata vo listataint size=size(s); //se naoga goleminata na size int index=index(s,izb); //go naogame indeksot na elementitebrisi SekoePojavuvanje(s,size,index); //go brise elementotispecati(s); //ja pecati krajnata niza} }

5. Да се напише функција “VnesiPred” која врши внесување на јазел лево од јазелот означен со некој покажувач во двојно поврзана листа.

public void insertBefore( DoublyLinkedNode node, DoublyLinkedNode newNode ) { //node e pokazuvac kon jazolot pred koj treba da se vnese newNode newNode.prev = node.prev; //linkot koj pokazuva kon prethodnikot na newNode dobiva vrednost od node.prev

Page 7: Strukturi Na Podatoci i Algoritmi

newNode.next = node; //newNode.next dobiva vrednost od node if( node.prev == null ) { // ako node.prev pokazuva kon null head = newNode; togas pokazuvacot kon listata pokazuva

kon newNode } else { inaku node.prev.next pokazuva kon newnode. node.prev.next = newNode; } node.prev = newNode; //node.prev pokazuva kon newNode }

6. Да се напише функција NajdiSrednaVrednost за наоѓање на средната вредност на сите елементи во едно бинарно дрво.

public int SrednVrednost( Node node) // sredna vrednost prima jazol{if (node==null return); //ako e null izleguva od funkcijataint i=0;int suma=0;SrednaVrednost (node.left); //izminuvame inorderi++; //ja zgolemuva vrednosta na clenovitesuma=node.info; //gi sumirame podatocite od infotoinorder(node.right); //prodolzuvame inorder desnoint SrednaVrednost=suma(); //ja racuname srednata vrednostreturn SrednaVrednost; //ja vrakame kako rezultat na funkcijata

Page 8: Strukturi Na Podatoci i Algoritmi