You are on page 1of 13

Veleuilite u Rijeci

C++
mr. sc. Jasminka Tomljanovi, vii predava

Veleuilite u Rijeci

Sadraj
Dvodimenzionalni dinamiki niz

mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

Veleuilite u Rijeci

Pokazivai na pokazivae
Dinamiko polje proizvoljnog broja
redaka i stupaca

mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

Veleuilite u Rijeci

Dvodimenzionalno dinamiko polje


moe imati
varijabilan broj redaka, ali broj
stupaca mora biti poznat.
Dvodimenzionalno dinamiko polje
dimenzija n*m, tj. polje u kojem
unaprijed nita nije poznato.

mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

Veleuilite u Rijeci

Prvo
Treba deklarirati pokaziva na
jednodimenzionalno polje pokazivaa.
int ** Polje;
Svaki lan polja pokazivaa e pokazivati
na poetak jednog retka dinamikog polja.
Polje=new int*[redaka];

mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

Veleuilite u Rijeci

Drugo
Treba deklarirati redak dimenzije
[stupaca+1]
pri emu prvi stupac sadrava informaciju
o stvarnom broju lanova s podacima.
Polje[i]=new int[stupac+1];

mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

Veleuilite u Rijeci

**polje
0
polje[0
br_el_retka-1
]
0
polj
polje[1
e
1 ]
polje[2
2

2
...
.
..
.

polje[0]
[0]=stu
pac
polje[1]
[0]=stu
pac

polje[0]
[stupac]
polje[1]
[stupac]

...

br_el_retka-1
br_redaka-1polje[n

polje[n-1]
[0]=
stupac

..

polje[n1[stupac]

-1]

mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

Veleuilite u Rijeci

Zadatak
Napiite program u kojem se stvara
dvodimenzionalno dinamiko polje
ZADATAK u koji se za uitani broj
studenata unose samo ocjene tono
rijeenih zadataka iz Programiranja.
Izraunajte za svakog studenta srednju
ocjenu i upiite je kao zadnji podatak u
njegovom redu. Ispiite polje ZADATAK.
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

Veleuilite u Rijeci

#include "stdafx.h"
#include<iostream>
using namespace std;
void stvori(float **ZADATAK,int n)
{
int m;
for(int i=0;i<n;i++)
{
cout<<"Broj zadataka "<<i+1<<". studenta:";
cin>>m;
ZADATAK[i]=new float[m+2]; //dodjeljivanje memorijskog
prostora el. redaka polja

ZADATAK[i][0]=float(m);//upisivanje broja tono rijeenih


zadataka za i-tog
//studenta na 0-toj poziciji u itom retku
9
mr.11/12/16
sc. }
Jasminka Tomljanovi, vii predava

Veleuilite u Rijeci

void ucitaj(float **ZADATAK,int n)


{
int i,j;
for(i=0;i<n;i++)
{
float suma=0;
for(j=1;j<=ZADATAK[i][0];j++) {
do
{
cout<<i+1<<". student "<<j<<". ocjena:";
cin>>ZADATAK[i][j];
}
while(ZADATAK[i][j]<2||ZADATAK[i][j]>5);
suma+=ZADATAK[i][j];
}
ZADATAK[i][j]=suma/ZADATAK[i][0];
}
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

10

Veleuilite u Rijeci

void ispis(float **ZADATAK,int n)


{
for(int i=0;i<n;i++)
{
for(int j=0;j<=ZADATAK[i][0]+1;j++)
cout<<ZADATAK[i][j]<<" ";
cout<<endl;
}
}
void dealokacija(float **ZADATAK,int n)
{
for(int i=0;i<n;i++)
delete [] ZADATAK[i]; //brie retke polja
delete [] ZADATAK; // brie polje pokazivaa na retke polja
ZADATAK=NULL; // preusmjerava pokaziva na polje
pokazivaa na nita
}
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

11

Veleuilite u Rijeci

void main()
{
int n;
cout<<"Unesite broj studenata:";
cin>>n;
float **ZADATAK=new float*[n]; //stvara se niz od n
pokazivaa na tip float
cout<<endl;
stvori(ZADATAK,n);
cout<<endl;
ucitaj(ZADATAK,n);
cout<<endl;
ispis(ZADATAK,n);
cout<<endl;
dealokacija(ZADATAK,n);
}
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava

12

Unesite
broj
Veleuilite
u Rijeci

studenata:3

Broj zadataka 1. studenta:4


Broj zadataka 2. studenta:5
Broj zadataka 3. studenta:3
1.
1.
1.
1.
2.
2.
2.
2.
2.
3.
3.
3.

student
student
student
student
student
student
student
student
student
student
student
student

1.
2.
3.
4.
1.
2.
3.
4.
5.
1.
2.
3.

ocjena:3
ocjena:4
ocjena:5
ocjena:2
ocjena:3
ocjena:3
ocjena:3
ocjena:4
ocjena:4
ocjena:5
ocjena:2
ocjena:3

4 3 4 5 2 3.5
5 3 3 3 4 4 3.4
3 5 2 3 3.33333
Press
any key
to continue
...
mr.11/12/16
sc. Jasminka
Tomljanovi,
vii predava

13

You might also like