Dealociranje usmjerenih pokazivača

poruka: 1
|
čitano: 2.695
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
3 godine
neaktivan
offline
Dealociranje usmjerenih pokazivača

/*VJEZBA 1 - Uvod u pokazivace
-----------------------------------------
*/

/*
//[1] Napišite program u kojem ćete deklarirati i definirati vrijednost neke varijable n (cijeli broj). Potom deklarirajte pokazivač pok koji će pokazivati na varijablu tipa integer.
Nakon toga usmjerite pokazivač (inicijalizacija pokazivača) na varijablu n. Ispišite na ekranu sljedeće vrijednosti (uz naznaku o kojoj je vrijednosti riječ): vrijednost pokazivača pok, vrijednost koja je pohranjena na adresi na koju pokazuje pokazivač, te adresu pokazivača pok, vrijednost varijable n i adresu varijable n.
Napišite drugi način deklaracije i definicije pokazivača.

#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;

int main() {
// p:

int n=10;
int *pok;
pok=&n; //ili *pok=&n;

cout<<"Vrijednost pokazivaca pok= "<<pok<<endl;
cout<<"Vrijednost na koju pokazuje pokazivacka varijabla pok= "<<*pok<<endl;
cout<<"Adresa pokazivaca pok= "<<&pok<<endl;
cout<<"Vrijednost varijable n= "<<n<<endl;
cout<<"Adresa varijable n= "<<&n<<endl;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 

/*
//[2]Modificirajte prethodni zadatak tako da promijenite vrijednost varijable n preko pokazivača.


#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;

 

int main() {
// p:

int n=10;
int *pok;
pok=&n;
*pok=20; //promjena vriednosti n preko pokazivaca

cout<<"Vrijednost pokazivaca pok= "<<pok<<endl;
cout<<"Vrijednost na koju pokazuje pokazivacka varijabla pok= "<<*pok<<endl;
cout<<"Adresa pokazivaca pok= "<<&pok<<endl;
cout<<"Vrijednost varijable n= "<<n<<endl;
cout<<"Adresa varijable n= "<<&n<<endl;

 

 

cout<<endl<<endl;
// goto p;
return 0;
}
*/

/*
//[3]


#include <iostream>
using namespace std;
int main() {
int *pok;
cout<<"Unesite vrijednost pokazivaca...";
cin>>*pok;
cout<<endl<<"Podaci o pokazivacu - "<<endl;
cout<<"*pok="<<*pok<<endl; cout<<"pok="<<pok<<endl; cout<<"&pok="<<&pok<<endl; cin.sync(); cin.get();
return 0;
}

//Odgovor: Nakon unosa vriednosti prekida se program

*/

/*
//[4]


#include <iostream>
using namespace std;
int main() {
int *pok; *pok=20;
cout<<endl<<"Podaci o pokazivacu - "<<endl;
cout<<"*pok="<<*pok<<endl; cout<<"pok="<<pok<<endl; cout<<"&pok="<<&pok<<endl; cin.sync(); cin.get();
return 0;
}

//Odgovor: Prekida se program
*/

/*
//[5]

#include <iostream>
using namespace std;
int main() {
const int n=5;
int *pok; pok=&n;
cout<<endl<<"Podaci o pokazivacu... "<<endl;
cout<<"*pok="<<*pok<<endl; cout<<"pok="<<pok<<endl; cout<<"&pok="<<&pok<<endl; cin.sync(); cin.get();
return 0;
}

//Odgovor: Greska

*/

/*
//[6]

int *pok=NULL; //int*pok=0;
if(pok!0)
cout<<pok<<endl;
else
cout<<"Pokazivac jos nije usmjeren!"<<endl;


*/


/*
//[7]

#include <iostream>
using namespace std;
int main () {
int first=5, second=15; int *p1, *p2; p1=&first; p2=&second; *p1=10; *p2=*p1; p1=p2; *p1=20;
cout<<"Prva vrijednost iznosi "<<first<<endl; cout<<"Druga vrijednost iznosi "<<second<<endl;
cin.sync(); cin.get();
return 0;
}

*/

 


/*
//[8]Primjer pokazivača na polje. Dodajte pokazivač na polje te ispišite elemente pristupajući im preko pokazivača na tri različita načina.

 


#include <iostream>

using namespace std;

int main() {
// p:

int polje[5]={10,5,2,1,0};
int *pok=polje; //pokazivac na prvi element polja

cout<<"1. nacin: ";
for(int i=0;i<5;i++)
{
cout<<polje[i]<<" ";
} cout<<endl;

cout<<"2. nacin: ";
for(int i=0;i<5;i++)
{
cout<<*(pok+i)<<" ";
} cout<<endl;

cout<<"3. nacin: ";
for(int i=0;i<5;i++,pok++)
{
cout<<*pok<<" ";
} cout<<endl;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 

 

/*
//[9]Primjer pokazivača na strukturu osoba koja se sastoji od JMBG-a, imena i prezimena.
Podaci o osobi se unose i ispisuju preko pokazivača na 2 različita načina.

 

#include <iostream>
using namespace std;

struct osoba
{
char OIB[11], ime[30],prezime[30];

};

int main() {
// p:

osoba a;
osoba *pok=&a;

cout<<"OIB= ";
cin>>(*pok).OIB;
cout<<"Ime= ";
cin>>(*pok).ime;
cout<<"Prezime= ";
cin>>(*pok).prezime;
cout<<endl;

cout<<"Podaci o osobi su: "<<endl;
cout<<"OIB: "<<pok->OIB<<endl;
cout<<"Ime: "<<pok->ime<<endl;
cout<<"Prezime: "<<pok->prezime<<endl;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 


/*
//[10] Napisati funkciju za dodavanje niza znakova(izv) na kraj niza znakova odr.
Izgled prototipa funkcije je: char * dodniz(char * odr, char * izv); Funkcija kao rezultat vraća pokazivač na rezultat (odr).

 


#include <iostream>
using namespace std;

char *dodniz(char * izv, char * odr);

int main() {
// p:

char a[20], b[40];
cout<<"Unesi 1. niz: ";
cin>>a;
cout<<"Unesi 2. niz: ";
cin>>b;

cout<<"Spojeni nizovi su: "<<dodniz(a,b)<<"!"<<endl;


cout<<endl<<endl;
// goto p;
return 0;
}

char *dodniz(char * izv, char * odr)
{
int i=0;
while(*(odr+i)!='\0') //brojac
i++; //npr. ana i=3
while(*izv!='\0')
{
*(odr+i)=*izv++; //spaja
i++;
}
*(odr+i)='\0'; //rucno upisemo oznaku za kraj
return odr; //pokazivac odr nismo pomicali direktno pa on pokazuje na pocetak niza
}
*/

 

 

/*
//[11]Napisati funkciju za dodavanje praznina na početak znakovnog niza. Izgled prototipa funkcije je: char * nizpomak(char * niz, int broj); Funkcija kao rezultat vraća pokazivač na niz.

 

#include <iostream>
#include <cstring> //zbog strlen
using namespace std;

char * nizpomak(int broj,char * niz);


int main() {
// p:

int broj;
cout<<"broj="; cin>>broj;
char niz[30];
cout<<"niz=";cin>>niz;

cout<<nizpomak(broj,niz);

 


cout<<endl<<endl;
// goto p;
return 0;
}

char * nizpomak(int broj,char * niz)
{
int nn=strlen(niz)+broj;
int n=strlen(niz);

while(n>=0)
{
*(niz+nn)=*(niz+n);
n--;
nn--;
}
while(nn>=0)
{
*(niz+nn)=' ';
nn--;
}
return niz;
}
*/

 

/*VJEZBA 2 - Dinamicka alokacija memorije
-----------------------------------------
*/

 


/*
//[1]za vrijednost na koju pokazuje pokazivač alocira memorijski prostor.

 

#include <iostream>
using namespace std;

int main() {
// p:


// int *pok;
// cout<<"Unesi vrijednost: ";
// cin>>*pok;
// cout<<*pok;
//
// //Odgovor: Kad unesemo vrijednost predika se program

 

int *pok; //int *pok=new int;
pok=new int;

cout<<"Unesi vrijednost: ";
cin>>*pok;
cout<<"*pok= "<<*pok<<endl;

delete pok;
pok=0;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

/*
//[2] pok2 koji će biti usmjeren na isti memorijski prostor kao i pokazivač pok iz prethodnog zadatka. Ispišite vrijednost pokazivača pok2. Dealocirajte memorijski prostor

#include <iostream>
using namespace std;

int main() {
// p:

int *pok,*pok2;
pok=new int;
pok2=pok;

cout<<"Unesi vrijednost: ";
cin>>*pok;
cout<<"*pok= "<<*pok<<endl;
cout<<"*pok2= "<<*pok2<<endl;

delete pok; //ili: delete pok2;
pok=0;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

/*
//[3]

 

#include <iostream>
using namespace std;
int main(){ float *pokFloat=new float(10);
cout<<endl<<"Podaci o pokazivacu na float - "<<endl;
cout<<"*pokFloat="<<*pokFloat<<endl; cout<<"pokFloat="<<pokFloat<<endl; cout<<"&pokFloat="<<&pokFloat<<endl; delete pokFloat;
cout<<endl<<"Podaci o pokazivacu na float - "<<endl;
cout<<"*pokFloat="<<*pokFloat<<endl; cout<<"pokFloat="<<pokFloat<<endl; cout<<"&pokFloat="<<&pokFloat<<endl; int *pokInt=new int;
cout<<endl<<"Podaci o pokazivacu na int - "<<endl;
cout<<"*pokInt="<<*pokInt<<endl; cout<<"pokInt="<<pokInt<<endl; cout<<"&pokInt="<<&pokInt<<endl; *pokInt=10;
cout<<endl<<"Podaci o pokazivacu na int - "<<endl;
cout<<"*pokInt="<<*pokInt<<endl; cout<<"pokInt="<<pokInt<<endl; cout<<"&pokInt="<<&pokInt<<endl; delete pokInt;
return 0;
}
*/

/*
//[4] Korisnik unosi prirodni broj n. Potrebno je dinamički alocirati memoriju za točno n elemenata niza cijelih brojeva. Nakon toga korisnik unosi niz brojeva, a potom se niz ispisuje na ekranu. Oslobodite memorijski prostor.

#include <iostream>
#include <iomanip> //zbog setw
using namespace std;

int main() {
// p:

int n;
cout<<"Unesi broj elemenata: ";
cin>>n;
int *pok=new int[n];

for(int i=0;i<n;i++)
cin>>*(pok+i);

cout<<"Elementi polja su: ";
for(int i=0;i<n;i++)
cout<<setw(5)<<pok[i]; //setw - prilokom ispisivanja ispisuje razmak izmedu clanova

cout<<endl;
delete [] pok;
pok=0;

 

cout<<endl<<endl;
// goto p;
return 0;
}
*/


/*
//[5] Korisnik unosi niz. Napišite funkciju za kopiranje znakovnog niza u kojoj morate dinamički alocirati memoriju za novi niz. Funkcija vraća pokazivač na kopirani niz. Ne zaboravite osloboditi memorijski prostor.

#include <iostream>
#include <cstring>
using namespace std;


char *kopiraj(char *niz)
{
char *noviniz=new char[strlen(niz)+1];
int i=0;
while(*niz!='\0')
{
*(noviniz+i)=*niz++;
i++;
}
*(noviniz+i)='\0';
return noviniz;
}


int main() {
// p:

char niz[30];
cout<<"Unesi niz: ";
cin.getline(niz, sizeof(niz)); //getline - da mozemo ucitati cijeli niz ukljucujuci praznine

char *pok=kopiraj(niz);
cout<<"Kopirani niz je: "<<pok<<endl;

delete [] pok;
pok=0;

 

cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

/*
//[7] apisati program za unos i ispis elemenata cjelobrojne kvadratne matrice. Dinamički alocirati memoriju za kvadratnu matricu. Funkcija treba vratiti pokazivač na niz
elemenata koji predstavlja niz elemenata sa glavne dijagonale matrice. Elementima matrice u funkciji pristupati preko pokazivača. Izvršite dealokaciju memorije.

#include <iostream>
#include <iomanip>
using namespace std;


int *dijag(int **mat, int n);


int main() {
// p:

int n;
cout<<"Unesi broj redaka i stupaca: ";
cin>>n;

int **mat=new int*[n];
for(int i=0;i<n;i++)
mat[i]=new int[n];


cout<<"Unesi elemente matrice: ";
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cin>>*(*(mat+i)+j);
}

for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cout<<setw(3)<<*(*(mat+i)+j);
cout<<endl;
}

 

cout<<"Elementi na glavnoj dijagonali su: ";
int *glDijag;
glDijag=dijag(mat,n);
for(int i=0;i<n;i++)
cout<<setw(3)<<*(glDijag+i);
cout<<endl;

 

for(int i=0;i<n;i++)
delete [] mat[i];
delete [] mat;

delete [] glDijag;
mat=0;
glDijag=0;

cout<<endl<<endl;
// goto p;
return 0;
}

int *dijag(int **mat, int n)
{
int *pok=new int[n];

for(int i=0;i<n;i++)
{
*(pok+i)=*(*(mat+i)+i);
}

return pok;
}
*/


/*
//[8] Dinamički alocirajte memoriju za polje čiji su elementi tipa strukture zaposlenik koja se sastoji od JMBG-a i koeficijenta po kojem se vrši obračun plaće. Korisnik najprije unosi broj zaposlenika, a potom i podatke o njima. Ispisati podatke o zaposlenicima. Smislene dijelove koda potrebno je izdvojiti u zasebne funkcije. Izvršite dealokaciju memorije.

#include <iostream>
#include <iomanip>
using namespace std;


struct zaposlenik
{
char JMBG[14];
double koef;
};

void upis(zaposlenik *pok, int n)
{
for(int i=0;i<n;i++)
{
cout<<"JMBG: ";
cin>>(*(pok+i)).JMBG;
cout<<"Koeficijent: ";
cin>>pok->koef;
}
}

void ispis(zaposlenik *pok, int n)
{
for(int i=0;i<n;i++)
{
cout<<"JMBG: ";
cout<<setw(20)<<(*(pok+i)).JMBG;
cout<<"Koeficijent: ";
cout<<setw(10)<<pok->koef<<endl;;
}
}


int main() {
// p:

int n;
cout<<"Unesi broj zaposlenika: ";
cin>>n;

zaposlenik *pok=new zaposlenik[n];

upis(pok,n);
ispis(pok,n);


delete [] pok;
pok=0;


cout<<endl<<endl;
// goto p;
return 0;
}
*/


///Dodatni zadaci

/*
//[1] Napiši funkciju zamijeni u kojoj će se zamijeniti vrijednosti dviju dinamički alociranih varijabli.

#include <iostream>
#include <iomanip>
using namespace std;

/* //1. varijanta
void zamjeni(int *x, int *y)
{
int z=*x;
*x=*y;
*y=z;
}
*/
/*
//2. varijenta
void zamjeni(int *&x,int *&y)
{
int *z=x;
x=y;
y=z;
}

 

int main() {
// p:

int *a=new int, *b=new int;
cout<<"a=";
cin>>*a;
cout<<"b=";
cin>>*b;

zamjeni(a,b);
cout<<"\n\nNakon zajmene...\n\na="<<*a<<endl<<"b="<<*b<<endl;

delete a;
delete b;
a=0;
b=0;

 

cout<<endl<<endl;
// goto p;
return 0;
}
*/

 


/*VJEZBA 3 - Povezane liste
-----------------------------------------
*/


/*
// [2] Napišite program u kojem se dinamički kreira povezana lista cijelih brojeva. Lista se formira na osnovu brojeva koje korisnik unosi u program, a korisnik unosi brojeve sve dok se ne učita 0 (ne možemo predvidjeti koliko brojeva će upisati korisnik -> polje nam ne odgovara kao tip podatka). Unos i kreiranje liste realizirati u funkciji main.
Podaci neka se spremaju u listu obrnutim redoslijedom, tako da 0 bude na početku liste. Napišite funkciju za ispis elemenata liste.

//STOG

#include <iostream>
#include <cstring>

using namespace std;


struct node{ //veza
int data; //podatak
node *link; //veza
};

void write(node *head) //funkcija za ispis
{
node* current;
current=head;
while(current!=0)
{
cout<<current->data<<endl;
current=current->link;
}
}


int main()
{

node *head=0,*newElt;
int x;
do
{
cout<<"Unesi element: "; //unos elemenata
cin>>x;
newElt=new node;
newElt->data=x;
newElt->link=head;
head=newElt;

}
while(x!=0);


write(head);


node *deleteElt; //brisanje
while(head!=0)
{
deleteElt=head;
head=head->link;
delete deleteElt;
}

cout<<endl<<endl;
return 0;
}
*/

 

 

/*
//[3] Modificirajte prethodni zadatak tako da se kôd za unos elementa prebaci u zasebnu funkciju.

//STOG

#include <iostream>
#include <iomanip>
using namespace std;


struct node //cvor
{
int data; //podatak
node *link; //veza
};

void write(node *head) //funkcija za ispis
{
node *current=head; //glava
while(current)
{
cout<<setw(5)<<current->data;
current=current->link;
}
}

int input(node *&head) //Funkcija za upis
{
int x;
node *newElt;
cout<<"Unesi element: ";
cin>>x;

newElt=new node;
newElt->data=x;
newElt->link=head;
head=newElt;

return x; //head->data //newElt->data
}

int main() {
// p:

node *head, *deleteElt;
head=0;

int x;

do
{
x=input(head);
}
while(x!=0);


write(head);

 

while(head) //brisanje
{
deleteElt=head;
head=head->link;
delete deleteElt;
}

 

cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

/*
//[4] Modificirajte prethodni zadatak tako se podaci spremaju u listu redoslijedom koji se unose (0 je na kraju liste).


//RED

#include <iostream>
#include <iomanip>
using namespace std;


struct node
{
int data;
node *link;
};

void write(node *head) //funkcija za ispis
{
node *current=head;
while(current)
{
cout<<setw(5)<<current->data;
current=current->link;
}
}

int input(node *&head) //funcija za unos
{
int x;
node *newElt;
cout<<"Unesi element: ";
cin>>x;

newElt=new node;
newElt->data=x;
newElt->link=0;
if(head) //Ako lista nije prazna
{
node* tail=head;
while(tail->link)
tail=tail->link;
tail->link=newElt;
}
else //Ako je lista prazna
head=newElt;

return x; //head->data //newElt->data
}

int main() {
// p:

node *head, *deleteElt;
head=0;

int x;

do
{
x=input(head);
}
while(x!=0);


write(head);

 

while(head) //brisanje
{
deleteElt=head;
head=head->link;
delete deleteElt;
}

 

cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 

 


/*
//[5] Napisite program koji korisniku nudi izbornik u kojem može odabrati želi li unijeti element u listu, ispisati je ili brisati određeni element. Elementi se u listu dodaju na odgovarajuću poziciju tako da je lista u svakom trenutku sortirana uzlazno. Nadopunite izbornik još nekim mogućnostima (npr. ispis broja elemenata liste...). Svaku od ponuđenih opcija realizirajte kao zasebnu funkciju.

#include <iostream>
#include <iomanip>
using namespace std;


struct node
{
int data;
node *link;
};

void write(node *head) //funkcija za ispis
{
node *current=head;
while(current)
{
cout<<setw(5)<<current->data;
current=current->link;
}
}

void input(node *&head) //Funkcija za upis
{
int x;
node *newElt;
cout<<"Unesi element: ";
cin>>x;

newElt=new node;
newElt->data=x;
node *current=head, *pre=0;

while(current && current->data<x)
{
pre=current;
current=current->link;
}
if(pre)
{
pre->link=newElt;
newElt->link=current;
}
else
{
newElt->link=head;
head=newElt;
}
}

void erase(node *&head, int elt)
{
if(head==0)
cout<<"Lista je prazna\n";
else
{
node *current=head,*pre=0;
while(current && current->data<elt)
{
pre=current;
current=current->link;
}
if(current && current->data==elt)
{
if(pre!=0)
{
pre->link=current->link;
}
else
head=head->link;
delete current;
current=0;
}
else
cout<<"Element nije u listi...\n";
}
}

int main() {
// p:

node *head, *deleteElt;
head=0;

int x;

do
{
cout<<"1. Unos elementa\n2. Ispis elementa\n3. Brisanje elementa\n0. Kraj interakcije\n\nVas odabir -> ";
cin>>x;
switch(x)
{
case 1:
input(head);
break;
case 2:
write(head);
cout<<endl<<endl;
break;
case 3:
int elt;
cout<<"Koji element zelite brisati: ";
cin>>elt;
erase(head,elt);
break;
case 0:
cout<<"Hvala na koristenju programa!\n";
}

}
while(x!=0);


write(head);

 

while(head) //brisanje
{
deleteElt=head;
head=head->link;
delete deleteElt;
}

 

cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 


/*VJEZBA 4 - Stog i red
-----------------------------------------
*/


/*
//[1] rad šaltera u banci
//RED

#include<iostream>
using namespace std;


struct node
{
int data;
node *link;
};

bool queueEmpty(node *head);

int process(node *&head,node*&tail);

void entry(node *&head,node *&tail,int elt); //Ulaz nove stranke

int waitingNum(node *head); //Ispis trenutnog stanja

void deleteQueue(node *&head,node*& tail);

int main()
{
node *head = NULL, *tail=NULL;
int elt=1;
char odabir;
do
{
system("cls");
cout<<"\n\nBANKA d.d. Glavni izbornik...I-Z-B-O-R-N-I-K"<<endl;
cout<<"\n1 - Ulaz nove stranke";
cout<<"\n2 - Obrada stranke";
cout<<"\n3 - Ispis trenutnog stanja";
cout<<"\n0 - Kraj";
cout<<"\n\nUnesite Vas odabir...";
cin>>odabir;
cin.ignore(1,'\n');
switch(odabir)
{
case '1':
cout<<"Klikom na gumb preuzmite listic s brojem cekanja u redu.\n";
cin.get();
entry(head,tail,elt);
elt++;
cin.get();
break;
case '2':
if(!queueEmpty(head))
cout<<"Salter je slobodan. Molimo stranku s rednim brojem: "<<process(head,tail)<<" da dodje na salter"<<endl;
else
cout<<"Red je prazan, nema kandidata za nove transkacije."<<endl;
cin.get();
break;
case '3':
cout<<"U redu na salteru ceka "<<waitingNum(head)<<"ljudi.\n";
cin.get();
break;
case '0':
cout<<"Kraj programa.\n";
}
}
while(odabir!='0');
//DEALOKACIJA!!!
deleteQueue(head,tail);
cin.sync();
cin.get();
return 0;
}

void entry(node *&head, node *&tail, int elt)
{
node* pok=new node;
pok->data=elt;
pok->link=0;
if(head==0)
head=pok;
else
tail->link=pok;
tail=pok;
cout<<"Preuzeli ste listic s rednim brojem za cekanje na nasem jedinom, ali brzom salteru.\n";
cout<<"Vas broj cekanja u redu je..."<<elt<<endl;
cout<<"Broj osoba koje cekaju ispred Vas je "<<waitingNum(head)-1<<endl;
}

bool queueEmpty(node *head)
{
if(head==0)
return true;
else
return false;


//if(head)
//return false;
//else
//return true;


//return(head==0);
}

int process(node *&head,node*&tail)
{
int elt=head->data;
node *zaBrisanje=head;
if(head==tail)
tail=tail->link;
head=head->link;
delete zaBrisanje;
return elt;
}

int waitingNum(node *head) //broji koliko ljudi ima u redu
{
int brStr=0;
while(head)
{
brStr++;
head=head->link;
}
return brStr;
}

void deleteQueue(node *&head,node*& tail)
{
while(head)
{
node *zaBrisanje=head;
head=head->link;
delete zaBrisanje;
}
tail=0;
}
*/

 

 

 

 

/*
//[2] U programu se prati kretanje nekog artikla na skladištu
//STOG


#include <iostream>
#include<iomanip>
using namespace std;


struct node
{
int data;
node *link;
};

void push(node *&stack,int elt);

int pop(node *&stack); //Unos novog primjerka

bool stackEmpty(node *stack);

void write(node *stack); //Ispis trenutnog stanja skladista

void deleteStack(node *&stack);

int main()
{
node *stack = NULL; int elt=1; char odabir;
do
{
system("cls");
cout<<"\n\nI-Z-B-O-R-N-I-K"<<endl;
cout<<"\n1 - Unos novog primjerka";
cout<<"\n2 - Preuzimanje artikla";
cout<<"\n3 - Ispis trenutnog stanja skladista";
cout<<"\n0 - Kraj";
cout<<"\n\nUnesite Vas odabir...\n";
cin>>odabir;
cin.ignore(1,'\n');
switch(odabir)
{
case '1':
push(stack,elt);
elt++;
cin.get();
break;
case '2':
if(!stackEmpty(stack))
{
cout<<"Preuzet je artikl pod rednim brojem..."<<pop(stack)<<endl;
elt--;
}
else
cout<<"Skladiste je prazno. Nemate sto preuzeti"<<endl;
cin.get();
break;
case '3':
if(!stackEmpty(stack))
write(stack);
else
cout<<"Skladiste je prazno."<<endl;
cin.get();
break;
case '0':
cout<<"Kraj programa.\n";
}
}
while(odabir!='0');
//DEALOKACIJA
deleteStack(stack);
return 0;
}

void push(node *&stack,int elt)
{
node *pok=new node;
pok->data=elt;
pok->link=stack;
stack=pok;
}

int pop(node *&stack)
{
int data=stack->data;
node *deleteElt=stack;
stack=stack->link;
return data;
}

bool stackEmpty(node *stack)
{
return (stack==0);
}

void write(node *stack)
{
node *current=stack;
while(current)
{
cout<<setw(5)<<current->data;
current=current->link;
}
}

void deleteStack(node *&stack)
{
node *zaDelete;
while(stack)
{
zaDelete=stack;
stack=stack->link;
delete zaDelete;
}
}
*/

 

 


/*VJEZBA 5 - Ponavljanje
-----------------------------------------
*/


/*
//[1] Napišite program koji kreira polje s m prirodnih brojeva koje unosi korisnik. Dinamički izvršiti alokaciju memorije. U funkciji treba izračunati produkt svih elemenata polja koji su djeljivi sa a i sa b (a i b se prosljeđuju funkciji, a unosi ih korisnik)


#include <iostream>
using namespace std;


int product(int* p,int m,int a,int b);

int main() {
// p:

int m,a,b;
cout<<"Unesi broj elemenata u polju: ";
cin>>m;

int *p=new int[m];
cout<<"Unesi elemente polja: ";
for(int i=0;i<m;i++)
cin>>*(p+i);

cout<<"Unesi brojeve a i b s kojima ispitujem djeljivost: ";
cin>>a>>b;

cout<<"Umnozak elemenata djeljeivih s "<<a<<" i "<<b<<" iznosi: "<<product(p,m,a,b)<<endl;


delete [] p;


cout<<endl<<endl;
// goto p;
return 0;
}

int product(int* p,int m,int a,int b)
{
int f=1,c=0;
for(int i=0;i<m;i++)
{
if(*(p+i)%a==0 && *(p+i)%b==0)
{
f*=*(p+i);
c++;
}
}
if(c>0)
return f;
else
return c;
}
*/

 

 


/*
//[2] Napisati program koji će dinamički alocirati meoriju za jednodimenzionalno polje cijelih brojeva koje unosi korisnik. Napisati funkciju koja vraća poziciju najmanjeg elementa u polju.


#include <iostream>
using namespace std;


int pozicija(int* p,int m); //pozicija najmanjeg elementa u polju

int main() {
// p:

int m;
cout<<"Unesi broj elemenata u polju: ";
cin>>m;

int *p=new int[m];
cout<<"Unesi elemente polja: ";
for(int i=0;i<m;i++)
cin>>*(p+i);

 

cout<<"Pozicija (index) najmanjeg elementa: "<<pozicija(p,m);


delete [] p;


cout<<endl<<endl;
// goto p;
return 0;
}

int pozicija(int* p,int m)
{
int a=0;

for(int i=1;i<m;i++)
{
if(*(p+i)<*(p+a))
a=i;
}
return a;
}
*/

 

 


/*
//[3] Napišite program koji ima funkciju za zamjenu velikih slova u mala i malih u velika u nizu znakova (znakovi koji nisu niti velika, niti mala slova ostaju nepromijenjeni).
//Izgled prototipa funkcije je: int nizprom(char * niz); Funkcija vraća broj promijenjenih znakova.


#include <iostream>
#include <cctype>
using namespace std;

int nizprom(char *niz); //broj promjenjivih znakova


int main() {
// p:

char niz[50];
cout<<"Unesi niz: ";
cin.getline(niz,sizeof(niz));

cout<<"Broj promjenjenih znakova u nizu je "<<nizprom(niz)<<", a izmjenjeni niz sada izgleda ovako: "<<niz<<endl;

 

cout<<endl<<endl;
// goto p;
return 0;
}

int nizprom(char *niz)
{
int c=0;
while(*niz!='\0')
{
if(isupper(*niz))
{
*niz=tolower(*niz);
c++;
}
else
if(islower(*niz))
{
*niz=toupper(*niz);
c++;
}
niz++;
}

return c;
}
*/

 

 

 

/*
//[4] Napišite program koji ima funkciju za ubacivanje niza u drugi niz na zadano mjesto.
//Izgled prototipa funkcije je: void nizubaci(char * niz, char * podniz, int mjesto); Funkcija kao rezultat vraća pokazivač na niz niz.


#include <iostream>
#include <cstring>
using namespace std;

void nizubaci(char *niz,char *podniz,int mjesto);


int main() {
// p:

char niz[50], podniz[50];
int poz;

cout<<"Unesi niz: ";
cin.getline(niz,sizeof(niz));

cout<<"Unesi podniz: ";
cin.getline(podniz,sizeof(podniz));

cout<<"Unesi poziciju na koju zelis umetnuti podniz: ";
cin>>poz;

nizubaci(niz,podniz,poz);
cout<<"Rezultat: "<<niz<<endl;

 


cout<<endl<<endl;
// goto p;
return 0;
}

void nizubaci(char *niz,char *podniz,int mjesto)
{
int n1=strlen(niz),n2=strlen(podniz);
while(n1>mjesto-1)
{
*(niz+n1+n2)=*(niz+n1);
n1--;
}
while(*podniz)
{
*(niz+mjesto-1)=*podniz++;
mjesto++;
}
}
*/

 


/*
//[5] Napišite program koji ima funkciju za traženje prvog pojavljivanja zadanog znaka u nizu počevši s (desnog) kraja niza. Izgled prototipa funkcije je: int trazidesno(char * niz, char znak); Funkcija kao rezultat vraća mjesto (indeks znaka u polju) na kojem je nađen znak, ili vrijednost -1 ukoliko se znak ne nalazi u nizu.


#include <iostream>
#include <cstring>
using namespace std;

int trazidesno(char *niz,char znak);


int main() {
// p:

char niz[50];
char a;
cout<<"Unesi niz: ";
cin.getline(niz,sizeof(niz));

cout<<"Unesi znak: ";
cin>>a;

cout<<"Trazeni znak se nalazi na lokaciji "<<trazidesno(niz,a)<<endl;

 

cout<<endl<<endl;
// goto p;
return 0;
}

int trazidesno(char *niz,char znak)
{
int i=0;
while(*(niz+i)!='\0')
{
i++;
}
while(i>=0)
{
if(*(niz+i)==znak)
{
return i;
}
i--;
}
return -1;
}
*/

 


/*
//[6] Implementirajte povezanu listu koja sadrži matični broj i prezime studenta i potom napišite funkciju za dodavanje novih elemenata na kraj liste.


#include <iostream>
#include <string>
using namespace std;


struct student
{
int mbr;
string prezime;
student *veza;
};

void unos(student *&glava)
{
student *novi=new student;
cout<<"Unesi maticni broj: ";
cin>>novi->mbr;
cout<<"Unesi prezime: ";
cin>>novi->prezime;
novi->veza=0;
if(glava==0)
glava=novi;
else
{
student *pom=glava;
while(pom->veza!=0)
pom=pom->veza;
pom->veza=novi;
}
}

int main() {
// p:

student *glava=0;
char odg;
do
{
unos(glava);
cout<<"Zelis li novi unos (d/n): ";
cin>>odg;
}
while(odg!='n');

 


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 


/*VJEZBA 6 - Algoritmi pretrazivanja
-----------------------------------------
*/

/*
//[0] //dio 1 //generiranje pseudo slucajnih brojeva

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;

int main() {
// p:

srand(time(0));
int n;
cout<<"Unesi velicinu polja: ";
cin>>n;
int *p=new int[n];
for(int i=0;i<n;i++)
{
*(p+i)=rand()%100+1;
cout<<setw(5)<<*(p+i);
}
cout<<endl;
delete [] p;

cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

/*
//[1] Algoritam sekvencijalnog pretraživanja (engl. sequential search) pretražuje polje počevši s prvim elementom pa sve dok ne pronađe traženi element. Napišite program u kojem se najprije generira 10 pseudo-slučajnih cijelih brojeva u rasponu 1-100.
// Napišite 3 funkcije sequential() koje će vraćati indeks traženog elementa, a ukoliko traženi element nije u polju, funkcije neka vraćaju vrijednost –1. Funkcije realizirati tako da demonstriraju dvije varijante sekvencijalnog pretraživanja. a. pretraživanje uz pomoć stražara (engl. sentinel search) b. pretraživanje liste uređene prema vjerojatnosti traženja (engl. probability search)


#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;


int guard(int *p,int n, int target)
{
p[n]=target;
int i=0;
while(p[i]!=target)
i++;
if(i<n)
return i;
else
return -1;
}

int prob(int *p,int n, int target)
{
int i=0;
while(i<n && p[i]!=target)
i++;
if(i<n)
{
if(i>0)
{
int t=p[i-1];
p[i-1]=p[i];
p[i]=t;
i--;
}
return i;
}
else
return -1;
}


int main() {
// p:

srand(time(0));
int n;
int target;
cout<<"Unesi velicinu polja: ";
cin>>n;
int *p=new int[n+1];
for(int i=0;i<n;i++)
{
*(p+i)=rand()%100+1;
cout<<setw(5)<<*(p+i);
}
cout<<endl;

char izb;
do
{
cout<<"Unesi koji element zelis pronaci: ";
cin>>target;
cout<<"Lokacija trazenog elementa (uz pomoc strazara): "<<guard(p,n,target)<<endl;
cout<<"Lokacija trazenog elementa (vjerojetnost trazenja): "<<prob(p,n,target)<<endl;
cout<<"Zelis li novo pretrazivanje (d/n): ";
cin>>izb;
}
while(izb=='d');

delete [] p;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 


/*
//[2] Algoritam binarnog pretraživanja (engl. binary search) pretražuje sortirano polje u kojem se ne ponavljaju vrijednosti elemenata i pronalazi indeks traženog elementa.
//Ideja algoritma je da se najprije provjeri središnji element niza, ako je on jednak traženom elementu, vraća se indeks središnjeg elementa. Ukoliko je element koji tražimo manji od onog na središnjoj poziciji, nastavlja se pretraživati samo prvi dio niza, a ukoliko je veći, nastavlja se pretraživati samo drugi dio niza. Modificirajte prethodni program tako da u polje pohranite 10 uzlazno poredanih vrijednosti, a potom napišite definiciju i pozovite funkciju binary() koja vraća indeks traženog elementa.
//Ukoliko traženi element nije u nizu, funkcija vraća –1.


#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;


int guard(int *p,int n, int target)
{
p[n]=target;
int i=0;
while(p[i]!=target)
i++;
if(i<n)
return i;
else
return -1;
}

int prob(int *p,int n, int target)
{
int i=0;
while(i<n && p[i]!=target)
i++;
if(i<n)
{
if(i>0)
{
int t=p[i-1];
p[i-1]=p[i];
p[i]=t;
i--;
}
return i;
}
else
return -1;
}

int binary(int *p,int n, int target)
{
int beg=0,end=n-1,mid;
while(beg<=end)
{
mid=(beg+end)/2;
if(p[mid]<target)
beg=mid+1;
else
if(p[mid]>target)
end=mid-1;
else
beg=end+1;
}
if(p[mid]==target)
return mid;
else
return -1;
}


int main() {
// p:

// srand(time(0));
int n;
int target;
cout<<"Unesi velicinu polja: ";
cin>>n;
int *p=new int[n+1];
for(int i=0;i<n;i++)
{
// *(p+i)=rand()%100+1;
*(p+i)=i;
cout<<setw(5)<<*(p+i);
}
cout<<endl;

char izb;
do
{
cout<<"Unesi koji element zelis pronaci: ";
cin>>target;
cout<<"Lokacija trazenog elementa (uz pomoc strazara): "<<guard(p,n,target)<<endl;
// cout<<"Lokacija trazenog elementa (vjerojetnost trazenja): "<<prob(p,n,target)<<endl;
cout<<"Lokacija trazenog elementa (binarno pretrazivanje): "<<binary(p,n,target)<<endl;
cout<<"Zelis li novo pretrazivanje (d/n): ";
cin>>izb;
}
while(izb=='d');

delete [] p;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 

/*
//[3]

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;


int guard(int *p,int n, int target)
{
p[n]=target;
int i=0;
while(p[i]!=target)
i++;
if(i<n)
return i;
else
return -1;
}

int prob(int *p,int n, int target)
{
int i=0;
while(i<n && p[i]!=target)
i++;
if(i<n)
{
if(i>0)
{
int t=p[i-1];
p[i-1]=p[i];
p[i]=t;
i--;
}
return i;
}
else
return -1;
}

int binary(int *p,int n, int target)
{
int beg=0,end=n-1,mid;
while(beg<=end)
{
mid=(beg+end)/2;
if(p[mid]<target)
beg=mid+1;
else
if(p[mid]>target)
end=mid-1;
else
beg=end+1;
}
if(p[mid]==target)
return mid;
else
return -1;
}

int ordered(int *p,int n, int target)
{
int i=0;
if(target<=p[n-1])
{
while(target>p[i])
i++;
}
if(target==p[i])
return i;
else
return -1;
}

int main() {
// p:

// srand(time(0));
int n;
int target;
cout<<"Unesi velicinu polja: ";
cin>>n;
int *p=new int[n+1];
for(int i=0;i<n;i++)
{
// *(p+i)=rand()%100+1;
*(p+i)=i;
cout<<setw(5)<<*(p+i);
}
cout<<endl;

char izb;
do
{
cout<<"Unesi koji element zelis pronaci: ";
cin>>target;
cout<<"Lokacija trazenog elementa (uz pomoc strazara): "<<guard(p,n,target)<<endl;
// cout<<"Lokacija trazenog elementa (vjerojetnost trazenja): "<<prob(p,n,target)<<endl;
cout<<"Lokacija trazenog elementa (binarno pretrazivanje): "<<binary(p,n,target)<<endl;
cout<<"Lokacija trazenog elementa (pretrazivanje uredene liste): "<<ordered(p,n,target)<<endl;
cout<<"Zelis li novo pretrazivanje (d/n): ";
cin>>izb;
}
while(izb=='d');

delete [] p;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 


/*
//[4] Napišite po koracima kako bi se u polje od 19 elemenata pohranili zadani ključevi: 224562, 137456, 214562, 140145, 214576, 162145, 144467, 199645 i 234534, a pritom koristite metodu ostatka dijeljenja za haširanje i linearnu metodu za rezoluciju kolizije.


#include <iostream>
#include <iomanip>
using namespace std;


const int MAX=19;

void write(int p[])
{
for(int i=0;i<MAX;i++)
cout<<setw(10)<<p[i];
cout<<endl;
}

int hashiraj(int key)
{
return key%MAX;
}

int resolve(int p[],int address)
{
while(p[address]!=0)
{
if(address==MAX)
address=0;
else
address++;
}
return address;
}

void input(int p[],int &n)
{
int key,address;
cout<<"Unesi broj kljuceva: ";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Kljuc: ";
cin>>key;
address=hashiraj(key);
if(p[address]!=0)
address=resolve(p,address);
p[address]=key;
}
}

int main() {
// p:

int p[MAX]={0};
int n;
input(p,n);
write(p);

 

 

cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 

 


/*VJEZBA 7 - Algoritmi sortiranja
-----------------------------------------
*/
/*
//Sortiranje odabirom / razmjenom (Selection Sort)
//Mjehuričasto sortiranje (Bubble Sort)
//Sortiranje umetanjem (Insertion Sort)
//Shell sortiranje (Shell Sort)
//[1][2][3][4]

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;


void initArray(int *p);

void write(int *p);


void selection(int *p);

void exchange(int &a,int &b);

void bubble(int *p);

void insertion(int*p);

void shell(int*p);


const int MAX=10;

int main() {
// p:

int *p=new int[MAX];
srand(time(0));

initArray(p);
cout<<"\n\n\nNovo polje...\n";
write(p);
cout<<"Sortiranje odabirom...\n\n";
selection(p);
write(p);


initArray(p);
cout<<"\n\n\nNovo polje...\n";
write(p);
cout<<"Sortiranje u valovima (Bubble sort)...\n\n";
bubble(p);
write(p);


initArray(p);
cout<<"\n\n\nNovo polje...\n";
write(p);
cout<<"Sortiranje umetanjem...\n\n";
insertion(p);
write(p);


initArray(p);
cout<<"\n\n\nNovo polje...\n";
write(p);
cout<<"Shell sortiranje...\n\n";
shell(p);
write(p);

 

cout<<endl<<endl;
// goto p;
return 0;
}

void initArray(int *p)
{
for(int i=0;i<MAX;i++)
p[i]=rand()%100+1;
}

void write(int *p)
{
for(int i=0;i<MAX;i++)
cout<<setw(5)<<p[i];
cout<<endl;
}


void selection(int *p)
{
int min;
for (int current=0;current<MAX;current++)
{
min=current;
for(int walker=current+1;walker<MAX;walker++)
if(p[walker]<p[min])
min=walker;
exchange(p[min],p[current]);
//zakomentirano da nam ne previse ispisuje na ekran :) write(p); //zbog toga ispisuje nakon svakog koraka sortiranja
}
}

void exchange(int &a,int &b)
{
int t=a;
a=b;
b=t;
}

void bubble(int *p)
{
bool sort;
for(int current=0;current<MAX && !sort;current++)
{
sort=false;
for(int walker=MAX-1;walker>current;walker--)
{
if(p[walker]<p[walker-1])
{
exchange(p[walker],p[walker-1]);
//zakomentirano da nam ne previse ispisuje na ekran :) cout<<"Zamjena - ";
//zakomentirano da nam ne previse ispisuje na ekran :) write(p);
sort=true;
}
}
// write(p);
}
}

void insertion(int*p)
{
int walker,elem;
for(int current=1;current<MAX;current++)
{
elem=p[current];
walker=current;
while(walker>0 && elem<p[walker-1])
{
p[walker]=p[walker-1];
walker--;
// cout<<"Pomicanje...\n";
// write(p);
}
p[walker]=elem;
// write(p); //ispisuje nakon svakog koraka
}
}

void shell(int*p)
{
int k=MAX/2;
while(k>0)
{
int walker,elem;
for(int current=k;current<MAX;current++)
{
elem=p[current];
walker=current;
while((walker-k)>=0 && elem<p[walker-k])
{
p[walker]=p[walker-k];
walker-=k;
// cout<<"Pomicanje...\n";
// write(p);
}
p[walker]=elem;
// write(p); //ispisuje nakon svakog koraka
}
k/=2;
}
}
*/

 

 

 

/*VJEZBA 2 '8'
-----------------------------------------
*/


/*
//[1] //Napisite rekruzivnu funkciju koja ima jedan cjelobrojni parametar n koji je pozitivan broj i koja ispisuje toliki broj zvjezdica na jednoj liniji

#include <iostream>
using namespace std;


void ispisZvjezdica(int n);


int main() {
// p:

int n;
cout<<"Unesi broj zvjezdica: ";
cin>>n;
ispisZvjezdica(n);

 

cout<<endl<<endl;
// goto p;
return 0;
}

void ispisZvjezdica(int n)
{
if(n==0)
return;
cout<<"*";
ispisZvjezdica(n-1);
return;

}
*/

 

 

/*
//[2] //Ispis znamenki broja u inverznom redoslijedu

#include <iostream>
using namespace std;


void invZnamenke(int n);


int main() {
// p:

int n;
cout<<"Unesi broj: ";
cin>>n;
invZnamenke(n);


cout<<endl<<endl;
// goto p;
return 0;
}

void invZnamenke(int n)
{
if(n==0)
return;
cout<<n%10<<endl;
invZnamenke(n/10);
}
*/

 

 

/*
//[3] //Ispis znamenki broja normalno ali u vertikalnom poretku
#include <iostream>
using namespace std;


void znamenke(int n);


int main() {
// p:

int n;
cout<<"Unesi broj: ";
cin>>n;
znamenke(n);


cout<<endl<<endl;
// goto p;
return 0;
}

void znamenke(int n)
{
if(n<10)
cout<<n<<endl;
else
{
znamenke(n/10);
cout<<n%10<<endl;
}
}
*/

 

 


/*
//[4] //Program ima jedan cjelobrojni parametar i vraća sumu kvadriranih elemenata niza od 1 do tog broja
#include <iostream>
using namespace std;


int sum(int n);


int main() {
// p:

int n;
cout<<"Unesi broj: ";
cin>>n;

cout<<sum(n)<<endl;


cout<<endl<<endl;
// goto p;
return 0;
}

int sum(int n)
{
if(n==0)
return 0;
int f=0;
f=n*n+sum(n-1);
return f;
}
*/

 


/*
//[5] //Upisivanje brojeva dok ne uneseno 0 pa onda slijedno vertikalno ispisivanje
#include <iostream>
using namespace std;


struct node
{
int data;
node *link;
};

void ispis(node *head);

int main() {
// p:

node* head=0;
int x;
do
{
cin>>x;
node *tmp=new node;
tmp->data=x;
tmp->link=head;
head=tmp;
}
while(x!=0);

ispis(head);

cout<<endl<<endl;
// goto p;
return 0;
}

void ispis(node *head)
{
if(head==0)
return;
ispis(head->link);
cout<<head->data<<endl;
}
*/

 

 

/*
//[6] //Funkcija za binarno pretrazivanje (rekruzivnim putem)
#include <iostream>
using namespace std;


int binary(int p[],int beg,int end,int x)
{
if(beg>end)
return -1;
int mid=(beg+end)/2;
if(p[mid]==x)
return mid;
else
if(p[mid]>x)
return binary(p,beg,mid-1,x);
else
return binary(p,mid+1,end,x);
}


int main() {
// p:

int p[]={1,2,3,4,5};
int x;
cin>>x;
cout<<binary(p,0,4,x)<<endl;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 

 


/*VJEZBA 2 '9' - (dinamicko programiranje)
-----------------------------------------
*/


/*
//[1] //Levensteinova udaljenost

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

 

 

int main() {
// p:

string niz1,niz2;
cout<<"Unesi 1. niz: ";
getline(cin,niz1);
cout<<"Unesi 2. niz: ";
getline(cin,niz2);

int **mat=new int*[niz1.size()+1];
for(int i=0;i<niz1.size()+1;i++)
{
mat[i]=new int[niz1.size()+1];
mat[i][0]=i;
}
for(int i=0;i<niz2.size()+1;i++)
{
mat[0][i]=i;
}
for(int i=1;i<niz1.size()+1;i++)
{
for(int j=1;j<niz2.size()+1;j++)
{
if(niz1[i-1]==niz2[j-1])
mat[i][j]=mat[i-1][j-1];
else
{
int m=mat[i-1][j-1];
if(mat[i][j-1])
m=mat[i][j-1];
if(mat[i-1][j-1])
m=mat[i-1][j];
mat[i][j]=m+1;
}
}
}

for(int i=1;i<niz1.size()+1;i++)
{
for(int j=1;j<niz2.size()+1;j++)
{
cout<<setw(5)<<mat[i][j];
}
cout<<endl;
}

cout<<mat[niz1.size()][niz2.size()]<<endl;

 

for(int i=0;i<niz1.size()+1;i++)
delete [] mat[i];
delete [] mat;

cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 

/*
//[2] //Zarada na tecaju (zadatak iz neke prezentacije)

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

 

 

int main() {
// p:

double euri[8]={1000};
double dolari[8]={0};
int n;
double tecaj;
do
{
cout<<"Unesi broj dana: ";
cin>>n;
}
while(n>7);

int i=1;
while(i<=n)
{
cout<<"Tecaj: ";
cin>>tecaj;
dolari[i]=dolari[i-1]>euri[i-1]*tecaj ? dolari[i]=dolari[i-1] : dolari[i]=euri[i-1]*tecaj; //isto kao i ovo zakomentirano dole
// if(dolari[i]>euri[i-1)*tecaj)
// dolari[i]=dolari[i-1];
// else
// dolari[i]=euri[i-1]*tecaj;


euri[i]=euri[i-1]>dolari[i-1]/tecaj ? euri[i]=euri[i-1] : euri[i]=dolari[i-1]/tecaj;
i++;
}
for(int i=0;i<n;i++)
cout<<setw(10)<<euri[i];
cout<<endl;
for(int i=0;i<n;i++)
cout<<setw(10)<<dolari[i];
cout<<endl;


cout<<endl<<endl;
// goto p;
return 0;
}
*/

 

 


/*
//[3] //Ruksak (zadatak iz neke prezentacije) - volumen i vrijednost - dobar

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

 

 

int main() {
// p:

 

cout<<endl<<endl;
// goto p;
return 0;
}
*/

Bage
Moj PC  
1 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice